簡體   English   中英

使用 sci-kit 學習的高斯過程回歸

[英]Gaussian process regression with sci-kit learn

背景:在高斯過程(GP)回歸中,我們可以使用兩種方法:

(I) 通過Maximum Likelihood(最大化數據似然)擬合內核參數,並使用這些參數定義的GP進行預測。

(II)貝葉斯方法:對核參數進行參數先驗分布。 這種先驗分布的參數稱為超參數。 以數據為條件以獲得內核參數的后驗分布,現在要么

(IIa) 通過最大化后驗核參數似然(MAP 參數)來擬合核參數,並使用 MAP 參數定義的 GP 進行預測,或

(IIb)(完整的貝葉斯方法):使用混合模型進行預測,該模型將允許的核參數定義的所有 GP 沿核參數的后驗分布進行整合。

(IIb) 是包中引用的參考文獻 [RW2006] 中提倡的主要方法。

關鍵是超參數僅存在於貝葉斯方法中,並且是內核參數的先驗分布的參數。

因此,我對文檔中“超參數”一詞的使用感到困惑,例如, 此處聲明“內核由超參數向量參數化”。

這必須被解釋為一種通過調節數據的間接參數化,因為超參數不直接確定內核參數。 然后給出了一個指數核及其長度尺度參數的例子。 這絕對不是一個超參數,因為這個術語通常被使用。

內核參數和超參數之間似乎沒有區別。 這令人困惑,現在還不清楚包是否使用貝葉斯方法。 例如,我們在哪里指定內核參數的先驗分布的參數族?

問題: scikit-learn 使用方法(I)還是(II)?

這是我自己的試探性答案:混淆來自這樣一個事實,即高斯過程通常被稱為“函數先驗”,表明某種貝葉斯主義。 更糟糕的是,這個過程是無限維的,因此限制在有限的數據維度是某種“邊緣化”。 這也令人困惑,因為通常您僅在貝葉斯方法中進行邊緣化,在該方法中數據和參數的聯合分布,因此您通常會邊緣化其中一個。

然而,這里的正確觀點如下:高斯過程是模型,內核參數是模型參數,在 sci-kit learn 中沒有超參數,因為內核參數沒有先驗分布,即所謂的 LML(對數邊際可能性)是給定模型參數的普通數據似然,參數擬合是普通最大數據似然。 簡而言之,方法是(I)而不是(II)。

如果您閱讀有關 GP 回歸的 scikit-learn 文檔,您會清楚地看到內核(超)參數已優化 以參數n_restarts_optimizer的描述為例:“優化器的重新啟動次數,用於查找最大化對數邊際可能性的內核參數。” 在您的問題中,方法(i)。

不過,我還要注意兩點:

  1. 在我看來,它們被稱為“超參數”這一事實自動意味着它們是確定性的並且可以直接估計。 否則,它們是隨機變量,這就是它們可以有分布的原因。 另一種思考方式是:您是否為它定義了先驗? 如果不是,那么它是一個參數! 如果你這樣做了,那么可能需要確定先驗的超參數。
  2. 請注意, GaussianProcessRegressor類“公開了一個方法 log_marginal_likelihood(theta),該方法可以在外部用於其他選擇超參數的方法,例如通過馬爾可夫鏈蒙特卡羅。” 因此,從技術上講,可以使其“完全貝葉斯”(您的方法(ii)),但您必須提供推理方法。

暫無
暫無

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

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