簡體   English   中英

使用 PyMC3 進行增量模型更新

[英]Incremental model update with PyMC3

是否可以在 pyMC3 中增量更新模型。 我目前找不到這方面的信息。 所有文檔始終使用先驗已知數據。

但在我的理解中,貝葉斯模型也意味着能夠更新信念。 這在pyMC3中可能嗎? 我在哪里可以找到這方面的信息?

謝謝:)

按照@ChrisFonnesbeck 的建議,我寫了一個關於增量更新前的小型教程筆記本。 可以在這里找到:

https://github.com/pymc-devs/pymc3/blob/master/docs/source/notebooks/updating_priors.ipynb

基本上,您需要將后驗樣本包裝在一個自定義的連續類中,該類從它們計算 KDE。 下面的代碼就是這樣做的:

def from_posterior(param, samples):

    class FromPosterior(Continuous):

        def __init__(self, *args, **kwargs):
            self.logp = logp
            super(FromPosterior, self).__init__(*args, **kwargs)

    smin, smax = np.min(samples), np.max(samples)
    x = np.linspace(smin, smax, 100)
    y = stats.gaussian_kde(samples)(x)
    y0 = np.min(y) / 10 # what was never sampled should have a small probability but not 0

    @as_op(itypes=[tt.dscalar], otypes=[tt.dscalar])
    def logp(value):
        # Interpolates from observed values
        return np.array(np.log(np.interp(value, x, y, left=y0, right=y0)))

    return FromPosterior(param, testval=np.median(samples))

然后,您通過使用參數名稱和來自上一次迭代后驗樣本的跟蹤樣本調用from_posterior函數來定義模型參數的先驗(比如alpha ):

alpha = from_posterior('alpha', trace['alpha'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM