scikit-learn 高斯過(guò)程

2023-02-20 13:42 更新

高斯過(guò)程Gaussian Processes(GP)是一種通用的有監(jiān)督學(xué)習(xí)方法,旨在解決回歸和概率分類(lèi)問(wèn)題。

高斯過(guò)程的優(yōu)點(diǎn)是:

  • 預(yù)測(cè)內(nèi)插了觀察結(jié)果(至少對(duì)于正則核)。
  • 預(yù)測(cè)結(jié)果是概率形式的(高斯形式的)。這樣的話,人們可以計(jì)算得到經(jīng)驗(yàn)置信區(qū)間并且據(jù)此來(lái)判斷是否需要修改(在線擬合,自適應(yīng))在一些區(qū)域的預(yù)測(cè)值。
  • 通用性: 可以指定不同的:。雖然該函數(shù)提供了常用的內(nèi)核,但是也可以指定自定義內(nèi)核

高斯過(guò)程的缺點(diǎn)包括:

  • 它們不是稀疏的,即它們使用所有樣本/特征信息來(lái)進(jìn)行預(yù)測(cè)。
  • 在高維空間中,當(dāng)特征數(shù)超過(guò)幾十個(gè)時(shí),它們就失去了效率。

1.7.1 高斯過(guò)程回歸

GaussianProcessRegressor類(lèi)實(shí)現(xiàn)了回歸情況下的高斯過(guò)程(GP)模型。 為此,需要實(shí)現(xiàn)指定GP的先驗(yàn)。當(dāng)參數(shù) normalize_y=False 時(shí),先驗(yàn)的均值通常假定為常數(shù)或者零(當(dāng) normalize_y=False ),或者訓(xùn)練數(shù)據(jù)的均值(normalize_y=True)。而先驗(yàn)的方差通過(guò)傳遞 kernel 對(duì)象來(lái)指定。通過(guò)最大化基于傳遞的 optimizer 的對(duì)數(shù)邊際似然(LML),內(nèi)核的超參數(shù)可以在高斯過(guò)程回歸執(zhí)行擬合過(guò)程中被優(yōu)化。由于 LML 可能會(huì)存在多個(gè)局部最優(yōu)解,因此優(yōu)化過(guò)程可以通過(guò)指定 n_restarts_optimizer 參數(shù)進(jìn)行多次重復(fù)。通過(guò)設(shè)置內(nèi)核的超參初始值來(lái)進(jìn)行第一次優(yōu)化的運(yùn)行。后續(xù)的運(yùn)行過(guò)程中超參值都是從合理范圍值中隨機(jī)選取的。如果需要保持初始化超參值, 那么需要把優(yōu)化器設(shè)置為 None。

目標(biāo)變量中的噪聲級(jí)別通過(guò)參數(shù) alpha 來(lái)傳遞并指定,要么全局是常數(shù)要么是一個(gè)數(shù)據(jù)點(diǎn)。 請(qǐng)注意,適度的噪聲水平也可以有助于處理擬合期間的數(shù)字問(wèn)題,因?yàn)樗挥行У貙?shí)現(xiàn)為吉洪諾夫正則化(Tikhonov regularization), 即通過(guò)將其添加到核心矩陣的對(duì)角線。明確指定噪聲水平的替代方法是將 WhiteKernel 組件包含在內(nèi)核中, 這可以從數(shù)據(jù)中估計(jì)全局噪聲水平(見(jiàn)下面的示例)。

算法實(shí)現(xiàn)是基于 [RW2006]中的算法 2.1 。除了標(biāo)準(zhǔn) scikit-learn 估計(jì)器的 API 之外, GaussianProcessRegressor 的作用還包括:

  • 允許預(yù)測(cè),無(wú)需事先擬合(基于GP先驗(yàn))。
  • 提供了一種額外的方法 sample_y(X) , 其評(píng)估在給定輸入處從 GPR (先驗(yàn)或后驗(yàn))繪制的樣本。
  • 公開(kāi)了一種方法 log_marginal_likelihood(theta) , 可以在外部使用其他方式選擇超參數(shù),例如通過(guò)馬爾科夫鏈蒙特卡羅鏈(Markov chain Monte Carlo)。

1.7.2 GPR示例

1.7.2.1. 帶噪聲級(jí)的 GPR 估計(jì)

該示例說(shuō)明具有包含 WhiteKernel 的和核(sum-kernel)的 GPR 可以估計(jì)數(shù)據(jù)的噪聲水平。 對(duì)數(shù)邊際似然(LML)的圖示表明存在 LML 的兩個(gè)局部最大值。


第一個(gè)模型對(duì)應(yīng)于一個(gè)高噪聲級(jí)和大長(zhǎng)度尺度的模型,它解釋了噪聲對(duì)數(shù)據(jù)的所有變化。


第二種方法噪聲水平較小,長(zhǎng)度尺度較短,主要由無(wú)噪聲函數(shù)關(guān)系解釋。第二個(gè)模型具有較高的可能性,但是,根據(jù)超參數(shù)的初始值,基于梯度的優(yōu)化也可能收斂到高噪聲的解。因此,對(duì)于不同的初始化,多次重復(fù)優(yōu)化是很重要的。


1.7.2.2. GPR 和內(nèi)核嶺回歸的比較

內(nèi)核嶺回歸(KRR)和GPR都是通過(guò)在內(nèi)部使用“核技巧”來(lái)學(xué)習(xí)目標(biāo)函數(shù)的。KRR在相應(yīng)核誘導(dǎo)的空間中學(xué)習(xí)一個(gè)線性函數(shù),該函數(shù)對(duì)應(yīng)于原始空間中的一個(gè)非線性函數(shù)?;趲X正則化的均方誤差的損失,選擇核空間中的線性函數(shù)。GPR利用核函數(shù)定義目標(biāo)函數(shù)上先驗(yàn)分布的協(xié)方差,并利用觀測(cè)到的訓(xùn)練數(shù)據(jù)定義似然函數(shù)。基于貝葉斯定理(Bayes theorem),定義了目標(biāo)函數(shù)上的(高斯)后驗(yàn)分布,其均值用于預(yù)測(cè)。

一個(gè)主要的區(qū)別是,GPR可以基于邊緣似然函數(shù)的梯度上升來(lái)選擇核的超參數(shù),而KRR需要對(duì)交叉驗(yàn)證的損失函數(shù)(均方誤差損失)執(zhí)行網(wǎng)格搜索。另一個(gè)不同之處在于,GPR學(xué)習(xí)目標(biāo)函數(shù)的生成概率模型,因此可以提供有意義的置信區(qū)間和后驗(yàn)樣本以及預(yù)測(cè),而KRR只提供預(yù)測(cè)。

下圖說(shuō)明了人工數(shù)據(jù)集上的兩種方法,該數(shù)據(jù)集由一個(gè)正弦目標(biāo)函數(shù)和強(qiáng)噪聲組成。該圖比較了KRR模型和基于ExpSineSquared核的GPR的模型,ExpSineSquared核適用于學(xué)習(xí)周期函數(shù) 。核的超參數(shù)控制核的光滑性(長(zhǎng)尺度)和周期性(周期性)。此外,數(shù)據(jù)的噪聲水平是由GPR通過(guò)內(nèi)核中附加的WhiteKernel成分和KRR的正則化參數(shù)α顯式地獲得的。


該圖顯示,這兩種方法都學(xué)習(xí)了目標(biāo)函數(shù)的合理模型。GPR正確地識(shí)別出函數(shù)的周期約為2?π(6.28),而KRR選擇的周期為2倍周期4?π?;诖耍珿PR為KRR的預(yù)測(cè)提供了合理的置信邊界。這兩種方法的一個(gè)主要區(qū)別是擬合和預(yù)測(cè)所需的時(shí)間:原則上, 雖然擬合KRR在是快速的,但網(wǎng)格搜索的超參數(shù)優(yōu)化規(guī)模與超參數(shù)的數(shù)量成指數(shù)關(guān)系(“維數(shù)詛咒”)?;谔荻葍?yōu)化的GPR參數(shù)不受這種指數(shù)標(biāo)度的影響,因此在這個(gè)具有三維超參數(shù)空間的例子中,速度要快得多。預(yù)測(cè)的時(shí)間是相似的,然而,GPR產(chǎn)生預(yù)測(cè)分布的方差要比僅僅預(yù)測(cè)平均值花費(fèi)的時(shí)間要長(zhǎng)得多。

1.7.2.3 Mauna Loa CO2 數(shù)據(jù)上的 GPR

此示例基于[RW2006]第5.4.3節(jié)。給出了一個(gè)基于對(duì)數(shù)邊際似然梯度上升的復(fù)雜核工程和超參數(shù)優(yōu)化的實(shí)例。這些數(shù)據(jù)包括1958年至1997年期間在夏威夷莫納洛阿觀測(cè)站收集的大氣二氧化碳平均濃度(按體積計(jì)算,以百萬(wàn)分之?dāng)?shù)(Ppmv)計(jì))。目的是模擬二氧化碳濃度隨時(shí)間t的變化。

核由幾個(gè)術(shù)語(yǔ)組成,它們負(fù)責(zé)解釋信號(hào)的不同屬性:

  • 一個(gè)長(zhǎng)期的,平穩(wěn)的上升趨勢(shì)可以用RBF核來(lái)解釋。長(zhǎng)尺度較大的徑向基函數(shù)(RBF)內(nèi)核強(qiáng)制成平滑,沒(méi)有強(qiáng)制趨勢(shì)上升,這就留給GP選擇。長(zhǎng)度、比例尺和振幅是自由的超參數(shù)。

  • 季節(jié)性因素,由定期的 ExpSineSquared 內(nèi)核解釋?zhuān)潭ㄖ芷跒?年。 該周期分量的長(zhǎng)度尺度控制其平滑度是一個(gè)自由參數(shù)。 為了使準(zhǔn)確周期性的衰減,采用帶有RBF內(nèi)核的產(chǎn)品。 該RBF組件的長(zhǎng)度尺寸控制衰減時(shí)間,并且是另一個(gè)自由參數(shù)。

  • 較小的中期不規(guī)則性將由 RationalQuadratic 核來(lái)解釋?zhuān)?RationalQuadratic 內(nèi)核組件的長(zhǎng)度尺度和 alpha 參數(shù)決定長(zhǎng)度尺度的擴(kuò)散性。 根據(jù)[RW2006],這些不規(guī)則性可以更好地由 RationalQuadratic 來(lái)解釋?zhuān)?而不是 RBF 核,這可能是因?yàn)樗梢匀菁{幾個(gè)長(zhǎng)度尺度。

  • “noise(噪聲)” 一詞,由一個(gè) RBF 內(nèi)核貢獻(xiàn)組成,它將解釋相關(guān)的噪聲分量,如局部天氣現(xiàn)象以及 WhiteKernel 對(duì)白噪聲的貢獻(xiàn)。 相對(duì)幅度和RBF的長(zhǎng)度尺度是進(jìn)一步的自由參數(shù)。

在減去目標(biāo)平均值后最大化對(duì)數(shù)邊際似然產(chǎn)生下列內(nèi)核,其中LML為-83.214:

34.4**2 * RBF(length_scale=41.8)
+ 3.27**2 * RBF(length_scale=180) * ExpSineSquared(length_scale=1.44,
                                                   periodicity=1)
+ 0.446**2 * RationalQuadratic(alpha=17.7, length_scale=0.957)
+ 0.197**2 * RBF(length_scale=0.138) + WhiteKernel(noise_level=0.0336)

因此,大多數(shù)目標(biāo)信號(hào)(34.4ppm)由長(zhǎng)期上升趨勢(shì)(長(zhǎng)度為41.8年)解釋。 周期分量的振幅為3.27ppm,衰減時(shí)間為180年,長(zhǎng)度為1.44。 長(zhǎng)時(shí)間的衰變時(shí)間表明我們?cè)诋?dāng)?shù)胤浅=咏芷谛缘募竟?jié)性成分。 相關(guān)噪聲的幅度為0.197ppm,長(zhǎng)度為0.138年,白噪聲貢獻(xiàn)為0.197ppm。 因此,整體噪聲水平非常小,表明該模型可以很好地解釋數(shù)據(jù)。 該圖還顯示,該模型直到2015年左右才能做出置信度比較高的預(yù)測(cè)


1.7.3 高斯過(guò)程分類(lèi)(GPC)

GaussianProcessClassifier 將高斯過(guò)程(GP)用于分類(lèi),更具體地說(shuō),用于概率分類(lèi),其中測(cè)試預(yù)測(cè)采用類(lèi)概率的形式。高斯過(guò)程分類(lèi)器將GP放在一個(gè)隱函數(shù)上,然后通過(guò)一個(gè)鏈接函數(shù)來(lái)獲得概率分類(lèi)。隱函數(shù)是一種所謂的干擾函數(shù)( nuisance function),它的值是不被觀察到的,并且它們本身并不相關(guān)。其目的是為了方便地制定模型,并在預(yù)測(cè)過(guò)程中刪除(整合)。GaussianProcessClassfier實(shí)現(xiàn)了邏輯鏈函數(shù),它不能解析地計(jì)算積分,但在二進(jìn)制情況下很容易逼近。

與回歸設(shè)置相反,即使設(shè)置了高斯過(guò)程先驗(yàn),隱函數(shù)的后驗(yàn)也不符合高斯分布, 因?yàn)楦咚顾迫徊贿m用于離散類(lèi)標(biāo)簽。相反,使用的是與邏輯鏈接函數(shù)對(duì)應(yīng)的非高斯似然。 GaussianProcessClassifier 通過(guò)拉普拉斯近似(Laplace approximation)來(lái)估計(jì)非高斯后驗(yàn)分布。 更多詳細(xì)信息,請(qǐng)參見(jiàn)[RW2006]的第 3 章。

GP先驗(yàn)平均值假定為零。先驗(yàn)的協(xié)方差是通過(guò)傳遞kernel對(duì)象來(lái)指定的。 在通過(guò)最大化基于傳遞的對(duì)數(shù)邊際似然(LML)的 GaussianProcessRegressor 擬合期間, 優(yōu)化內(nèi)核的超參數(shù) optimizer 。由于LML可能具有多個(gè)局部最優(yōu)值, 所以?xún)?yōu)化器可以通過(guò)指定 n_restarts_optimizer 進(jìn)行重復(fù)。 第一次運(yùn)行始終從內(nèi)核的初始超參數(shù)值開(kāi)始執(zhí)行; 從已經(jīng)從允許值的范圍中隨機(jī)選擇超參數(shù)值來(lái)進(jìn)行后續(xù)運(yùn)行。 如果初始超參數(shù)需要保持固定,None可以傳遞給優(yōu)化器。

GaussianProcessClassifier 通過(guò)執(zhí)行基于OvR(one-versus-rest)或 OvO(one-versus-one )策略的訓(xùn)練和預(yù)測(cè)來(lái)支持多類(lèi)分類(lèi)。 在OvR(one-versus-rest)策略中,每個(gè)類(lèi)都配有一個(gè)二分類(lèi)高斯過(guò)程分類(lèi)器,該類(lèi)別被訓(xùn)練為將該類(lèi)與其余類(lèi)分開(kāi)。 在 “one_vs_one” 中,對(duì)于每對(duì)類(lèi)擬合一個(gè)二進(jìn)制高斯過(guò)程分類(lèi)器,這被訓(xùn)練為分離這兩個(gè)類(lèi)。 這些二分類(lèi)的預(yù)測(cè)的預(yù)測(cè)被組合成多類(lèi)預(yù)測(cè)。更多詳細(xì)信息,請(qǐng)參閱multi-class classification 。

在高斯過(guò)程分類(lèi)的情況下,”one_vs_one” 策略可能在計(jì)算上更廉價(jià), 因?yàn)樗粵Q涉及整個(gè)訓(xùn)練集的一個(gè)子集的許多問(wèn)題, 而不是整個(gè)數(shù)據(jù)集的較少的問(wèn)題。由于高斯過(guò)程分類(lèi)與數(shù)據(jù)集的大小相互立方,這可能要快得多。 但是,請(qǐng)注意,”one_vs_one” 不支持預(yù)測(cè)概率估計(jì),而只是簡(jiǎn)單的預(yù)測(cè)。 此外,請(qǐng)注意, GaussianProcessClassifier 在內(nèi)部還沒(méi)有實(shí)現(xiàn)真正的多類(lèi)拉普拉斯逼近, 但如上所述,在解決內(nèi)部二分類(lèi)任務(wù)的,基于的是使用one-versus-rest 或者 one-versus-one方法。

1.7.4 GPC實(shí)例

1.7.4.1 GPC概率預(yù)測(cè)

這個(gè)例子說(shuō)明了在不同的超參數(shù)選擇下,RBF核的GPC的預(yù)測(cè)概率。第一個(gè)圖顯示了具有任意選擇的超參數(shù)和對(duì)應(yīng)于最大對(duì)數(shù)邊際似然(LML)的超參數(shù)的GPC的預(yù)測(cè)概率。

雖然通過(guò)優(yōu)化LML選擇的超參數(shù)具有相當(dāng)大的LML,但根據(jù)測(cè)試數(shù)據(jù)的日志丟失情況,它們的性能稍差。 圖中顯示,這是因?yàn)樗鼈冊(cè)陬?lèi)邊界上出現(xiàn)了類(lèi)概率的急劇變化(這是好的),但是預(yù)測(cè)的概率接近于離類(lèi)邊界近0.5(這是不好的),這種不良影響是由GPC內(nèi)部使用的拉普拉斯逼近引起的。

第二個(gè)圖顯示了內(nèi)核的超參數(shù)的不同選擇的日志邊緣可能性,突出顯示了在第一個(gè)圖形中使用黑點(diǎn)的兩個(gè)超參數(shù)選擇。



1.7.4.2 XOR數(shù)據(jù)集上GPC的說(shuō)明

此示例說(shuō)明XOR數(shù)據(jù)上的GPC。比較了固定、各向同性核(RBF)和非固定核(DotProduct)。在這個(gè)特定的數(shù)據(jù)集上,DotProduct內(nèi)核獲得了更好的結(jié)果,因?yàn)轭?lèi)邊界是線性的,并且與坐標(biāo)軸重合。然而,在實(shí)踐中,像 RBF這樣的固定內(nèi)核往往獲得更好的結(jié)果。


1.7.4.3 iris數(shù)據(jù)集上的高斯過(guò)程分類(lèi)

該示例說(shuō)明了用于iris數(shù)據(jù)集的二維版本上各向同性和各向異性RBF核的GPC的預(yù)測(cè)概率。 這說(shuō)明了GPC對(duì)多類(lèi)分類(lèi)的適用性。 各向異性RBF內(nèi)核通過(guò)為兩個(gè)特征維度分配不同的長(zhǎng)度尺度來(lái)獲得稍高的LML(對(duì)數(shù)邊際似然)。


 

1.7.5 高斯過(guò)程內(nèi)核

核(也稱(chēng)GPs中的協(xié)方差函數(shù))是GPs的一個(gè)重要組成部分,它決定GP的先驗(yàn)和后驗(yàn)形狀。它們通過(guò)定義兩個(gè)數(shù)據(jù)點(diǎn)的“相似性”,并結(jié)合相似的數(shù)據(jù)點(diǎn)應(yīng)該具有相似的目標(biāo)值的假設(shè),對(duì)正在學(xué)習(xí)的函數(shù)進(jìn)行編碼。內(nèi)核可以分為兩類(lèi):固定內(nèi)核,只取決于兩個(gè)數(shù)據(jù)點(diǎn)的距離, 不依賴(lài)于它們的絕對(duì)值 , 因此它們對(duì)于輸入空間中的轉(zhuǎn)換是不變的;非固定的內(nèi)核,取決于數(shù)據(jù)點(diǎn)的具體值。固定內(nèi)核可以進(jìn)一步細(xì)分為各向同性和各向 異性?xún)?nèi)核,其中各向同性?xún)?nèi)核不會(huì)在輸入空間中旋轉(zhuǎn)。有關(guān)更多細(xì)節(jié),我們參考[RW2006]第4章。關(guān)于如何最佳組合不同內(nèi)核,我們可以參考[Duv2014]。

1.7.5.1 高斯過(guò)程核API

內(nèi)核 Kernel 的主要用途是計(jì)算數(shù)據(jù)點(diǎn)之間的GP協(xié)方差。為此,可以調(diào)用內(nèi)核的方法__call___。該方法既可用于計(jì)算二維數(shù)組X中所有成對(duì)數(shù)據(jù)點(diǎn)的“自協(xié)方差”,也可用于計(jì)算二維數(shù)組X與二維數(shù)組Y中的成對(duì)數(shù)據(jù)點(diǎn)的所有組合的“交叉協(xié)方差”。以下恒等式適用于所有內(nèi)核k( WhiteKernel除外):k(X) == K(X, Y=X)

如果只使用自協(xié)方差的對(duì)角線,則可以調(diào)用內(nèi)核的diag()方法,這比對(duì)___call__: np.diag(k(X, X)) == k.diag(X)的等效調(diào)用計(jì)算效率更高。

核由超參數(shù)的向量參數(shù)化。例如,這些超參數(shù)可以控制內(nèi)核的長(zhǎng)度、尺度或周期(見(jiàn)下文)。所有內(nèi)核都支持計(jì)算內(nèi)核相對(duì)于的自協(xié)方差的分析梯度,方法是在__call__方法中設(shè)置eval_gradient=True。這一梯度被高斯過(guò)程(包括回歸者和分類(lèi)器)用于計(jì)算對(duì)數(shù)邊際似然的梯度,而后者又被用來(lái)確定的值,該值通過(guò)梯度上升來(lái)最大化對(duì)數(shù)邊際似然。對(duì)于每個(gè)超參數(shù),在創(chuàng)建內(nèi)核實(shí)例時(shí)需要指定初始值和邊界??梢酝ㄟ^(guò)內(nèi)核對(duì)象的屬性theta獲取和設(shè)置的當(dāng)前值。此外,可以通過(guò)內(nèi)核的bounds屬性來(lái)訪問(wèn)超參數(shù)的邊界。請(qǐng)注意,這兩個(gè)屬性(theta 和 bounds)都返回內(nèi)部使用的值的對(duì)數(shù)轉(zhuǎn)換值,因?yàn)檫@些值通常更適合基于梯度的優(yōu)化。每個(gè)超參數(shù)的規(guī)范以Hyperparameter實(shí)例的形式存儲(chǔ)在各自的內(nèi)核中。請(qǐng)注意,使用名稱(chēng)為“x”的超參數(shù)的內(nèi)核必須具有屬性sel.x和self.x_bounds。

所有內(nèi)核的抽象基類(lèi)都是 Kernel。內(nèi)核實(shí)現(xiàn)了與Estimator類(lèi)似的接口,提供了get_params()、set_params()clone()方法。這還允許通過(guò)元估值器(如Pipeline or GridSearch)設(shè)置內(nèi)核值。注意,由于內(nèi)核的嵌套結(jié)構(gòu)(通過(guò)應(yīng)用內(nèi)核運(yùn)算符,請(qǐng)參見(jiàn)下面),內(nèi)核參數(shù)的名稱(chēng)可能變得相對(duì)復(fù)雜。通常,對(duì)于二進(jìn)制核運(yùn)算符,左操作數(shù)的參數(shù)以K1__為前綴,右操作數(shù)的參數(shù)以K2_為前綴。另一種方便的方法是clone_with_theta(theta),它返回內(nèi)核的克隆版本,但超參數(shù)設(shè)置為theta。一個(gè)例子進(jìn)行說(shuō)明:

>>> from sklearn.gaussian_process.kernels import ConstantKernel, RBF
>>> kernel = ConstantKernel(constant_value=1.0, constant_value_bounds=(0.0, 10.0)) * RBF(length_scale=0.5, length_scale_bounds=(0.0, 10.0)) + RBF(length_scale=2.0, length_scale_bounds=(0.0, 10.0))
>>> for hyperparameter in kernel.hyperparameters: print(hyperparameter)
Hyperparameter(name='k1__k1__constant_value', value_type='numeric', bounds=array([[ 0., 10.]]), n_elements=1, fixed=False)
Hyperparameter(name='k1__k2__length_scale', value_type='numeric', bounds=array([[ 0., 10.]]), n_elements=1, fixed=False)
Hyperparameter(name='k2__length_scale', value_type='numeric', bounds=array([[ 0., 10.]]), n_elements=1, fixed=False)
>>> params = kernel.get_params()
>>> for key in sorted(params): print("%s : %s" % (key, params[key]))
k1 : 1**2 * RBF(length_scale=0.5)
k1__k1 : 1**2
k1__k1__constant_value : 1.0
k1__k1__constant_value_bounds : (0.0, 10.0)
k1__k2 : RBF(length_scale=0.5)
k1__k2__length_scale : 0.5
k1__k2__length_scale_bounds : (0.0, 10.0)
k2 : RBF(length_scale=2)
k2__length_scale : 2.0
k2__length_scale_bounds : (0.0, 10.0)
>>> print(kernel.theta)  # Note: log-transformed
[ 0.         -0.69314718  0.69314718]
>>> print(kernel.bounds)  # Note: log-transformed
[[      -inf 2.30258509]
 [      -inf 2.30258509]
 [      -inf 2.30258509]]

所有的高斯過(guò)程核都可以與sklearn.metrics.pairwise互操作,反之亦然:內(nèi)核的子類(lèi)的實(shí)例可以作為metric傳遞給 sklearn.metrics.pairwise中的pairwise_kernels。此外,可以通過(guò)使用包裝器類(lèi) PairwiseKernel,可以將來(lái)自的pairwise內(nèi)核函數(shù)用作GP內(nèi)核。唯一的警告是,超參數(shù)的梯度不是解析的,而是數(shù)值的,所有這些核都只支持各向同性距離。參數(shù)gamma被認(rèn)為是一個(gè)超參數(shù),可以被優(yōu)化。其他內(nèi)核參數(shù)在初始化時(shí)直接設(shè)置,并保持固定。

1.7.5.2 基礎(chǔ)核

ConstantKernel內(nèi)核可以用作 Product內(nèi)核的一部分,它可以縮放其他因素(內(nèi)核)的大小,也可以作為Sum內(nèi)核的一部分,其中它調(diào)整了高斯過(guò)程的平均值。它取決于參數(shù) constant_value。它的定義是:

WhiteKernel內(nèi)核的主要用例是 sum-kernel 的一部分,它解釋了信號(hào)的噪聲部分。調(diào)整其參數(shù)noise_level對(duì)應(yīng)于估計(jì)其噪聲水平。它的定義是:

1.7.5.3 核操作

內(nèi)核運(yùn)算符獲取一個(gè)或兩個(gè)基本內(nèi)核,并將它們組合成一個(gè)新的內(nèi)核。 Sum核取兩個(gè)核,并通過(guò)組合它們。Product內(nèi)核采用兩個(gè)內(nèi)核 ,并通過(guò)組合它們。Exponentiation核取一個(gè)基本核和一個(gè)標(biāo)量參數(shù),通過(guò)組合它們,注意在核對(duì)象上重寫(xiě)了魔術(shù)方法___add__, __mul_____pow__ ,因此可以使用例如RBF() + RBF()作為 Sum(RBF(), RBF())的快捷方式。

1.7.5.4 徑向基函數(shù)(RBF)核

RBF核是一個(gè)穩(wěn)定的核函數(shù)。它也被稱(chēng)為“平方指數(shù)”核。它由一個(gè)長(zhǎng)度尺度參數(shù)參數(shù)來(lái)參數(shù)化,它既可以是一個(gè)標(biāo)量(核的各向同性變體),也可以是一個(gè)與輸入x(核的各向異性變量)相同維數(shù)的向量。內(nèi)核由以下幾個(gè)方面提供:

其中是歐氏距離。這個(gè)核是無(wú)窮可微的,這意味著以這個(gè)核作為協(xié)方差函數(shù)的GPs具有所有階的均方導(dǎo)數(shù),因此是非常光滑的。由RBF核產(chǎn)生的GP的先驗(yàn)和后驗(yàn)如下圖所示:


1.7.5.5 Matérn核

Matern核是一個(gè)平穩(wěn)核,是RBF核的推廣。它有一個(gè)額外的參數(shù),它控制結(jié)果函數(shù)的光滑性。它由一個(gè)長(zhǎng)度尺度參數(shù)參數(shù)來(lái)參數(shù)化,它既可以是一個(gè)標(biāo)量(核的各向同性變體),也可以是一個(gè)與輸入x(核的各向異性變量)相同維數(shù)的向量。該核由以下幾個(gè)方面提供:

其中是歐氏距離,是修正的 Bessel 函數(shù),是伽馬函數(shù)。隨著,Matérn核收斂于徑向基函數(shù)核(RBF)。當(dāng)時(shí),Matérn核與絕對(duì)指數(shù)核(absolute exponential kernel)相同,即,

特別地, :

并且,:

學(xué)習(xí)函數(shù)的流行選擇不是無(wú)限可微(由徑向基函數(shù)核(RBF)假設(shè)),而是至少一次()或兩次可微()。

通過(guò)控制學(xué)習(xí)函數(shù)的光滑性的靈活性允許適應(yīng)真正的底層函數(shù)關(guān)系的性質(zhì)。由Matérn核產(chǎn)生的GP的先驗(yàn)和后驗(yàn)如下圖所示:


有關(guān)Matérn內(nèi)核的不同變體的更多詳細(xì)信息,請(qǐng)參見(jiàn) [RW2006],pp 84。

1.7.5.6 有理二次核

RationalQuadratic(有理二次核)可以看作是具有不同特征長(zhǎng)度尺度的 RBF核的尺度混合(無(wú)限和)。它由長(zhǎng)度尺度參數(shù)和尺度混合參數(shù)來(lái)參數(shù)化,此時(shí)只支持各向同性變量,其中是標(biāo)量。該核由下式給出:

RationalQuadratic產(chǎn)生的GP的先驗(yàn)和后驗(yàn)如下圖所示:


 

1.7.5.7 Exp-Sine-Squared核

ExpSineSquared內(nèi)核允許對(duì)周期性函數(shù)進(jìn)行建模。它由長(zhǎng)度尺度參數(shù)和周期參數(shù)來(lái)參數(shù)化.現(xiàn)在只有各向同性變量,其中是標(biāo)量。該核由以下幾個(gè)方面提供:

由ExpSineSquared內(nèi)核產(chǎn)生的GP的先驗(yàn)和后驗(yàn)如下圖所示:


 

1.7.5.8 點(diǎn)積核

DotProduct核是非平穩(wěn)的,可以通過(guò)在線性回歸的系數(shù)上加上的先驗(yàn)和在偏置上加上的先驗(yàn)得到。 DotProduct核不受原點(diǎn)坐標(biāo)旋轉(zhuǎn)的影響,但不是轉(zhuǎn)換。它由參數(shù)參數(shù)化。對(duì)于,內(nèi)核被稱(chēng)為齊次線性核,否則它是非齊次的。內(nèi)核由下式給出:

DotProduct 核通常與指數(shù)結(jié)合在一起。指數(shù)為2的示例如下圖所示:


1.7.5.9 參考文獻(xiàn)

RW2006(1,2,3,4,5,6) Carl Eduard Rasmussen and Christopher K.I. Williams, “Gaussian Processes for Machine Learning”, MIT Press 2006, Link to an official complete PDF version of the book here .

Duv2014 David Duvenaud, “The Kernel Cookbook: Advice on Covariance functions”, 2014, Link .


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)