Gaussian Process for Regression高斯回歸


python機器學習-乳腺癌細胞挖掘(博主親自錄制視頻)

https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share

高斯過程(gaussian process)

可用於回歸和分類器

高斯過程主要應用於各領域的建模和預報,在時間序列分析中,高斯過程被用於時間序列的多步前向預報(multi-step-ahead prediction) [14]  、在信號處理中,高斯過程建模是處理非線性信號的工具 [15]  、在人工智能領域,GPR和GPC是被廣泛使用的機器學習算法 [1]  ,具有卷積結構的高斯過程(Convolutional Gaussian Processes, CGP)在圖像處理問題中表現出了良好效果 [16]  。此外一些高斯過程可以模擬特殊的科學現象,例如OU過程被用於神經活動的建模 [17]  、布朗橋被用於模擬生物的遷徙行為

 

https://wenku.baidu.com/view/4b749b81a76e58fafbb0032e.html

 

 

 

 

Definition 1. A Gaussian Process is a collection of random variables, any finite number of which have (consistent) joint Gaussian distributions.

高斯分布(Gaussian Distribution) 是由方差向量(一維的時候是一個常量)和一個協方差矩陣(一維是方差)確定。

而高斯過程是一個隨機過程的集合,它由一個均值函數m(x)和方差函數k(x,x')確定。

換句話說,高斯分布是基於向量,而高斯過程是基於函數(函數區別於序列在於連續?)

高斯分布表示:

f~GP(m,k)

意思是:函數f按照基於均值函數m(x)和協方差函數k(x,x‘)的高斯過程進行分布。就是高斯分布的一個連續性擴展,這里有一個訓練方式的講解

 

概率論統計學中高斯過程隨機過程(由時間或空間索引的隨機變量的集合),使得這些隨機變量的每個有限集合具有多元正態分布,即它們的每個有限線性組合通常是分散式。高斯過程的分布是所有那些(無限多個)隨機變量聯合分布,因此,它是具有連續域的函數的分布,例如時間或空間。

涉及高斯過程的機器學習算法使用惰性學習和點之間的相似性度量(核函數)來預測訓練數據中看不見的點的值。預測不僅僅是對該點的估計,而且還具有不確定性信息 - 它是一維高斯分布(這是該邊際分布)。[1]

對於某些核函數,矩陣代數可用於使用克里金法計算預測當使用參數化內核時,優化軟件通常用於擬合高斯過程模型。

高斯過程的概念以Carl Friedrich Gauss命名,因為它基於高斯分布(正態分布的概念高斯過程可以看作是多元正態分布的無限維推廣。

高斯過程在統計建模中很有用,受益於從法線繼承的屬性。例如,如果將隨機過程建模為高斯過程,則可以明確地獲得各種導出量的分布。這樣的量包括在一定范圍內的過程的平均值和在一小部分時間使用樣本值估計平均值的誤差。

 

https://cloud.tencent.com/developer/news/13104

圖文詳解高斯過程(一)——含代碼

編者按:高斯過程(Gaussian process)是概率論和統計學中的一個重要概念,它同時也被認為是一種機器學習算法,廣泛應用於諸多領域。為了幫助入門者更好地理解這一簡單易用的方法,近日國外機器學習開發者Alex Bridgland在博客中圖文並茂地解釋了高斯過程,並授權論智將文章分享給中國讀者。

注:本文為系列第一篇,雖用可視化形式弱化了數學推導,但仍假設讀者具備一定機器學習基礎。

現如今,高斯過程可能稱不上是機器學習領域的炒作核心,但它仍然活躍在研究的最前沿。從AlphaGo到AlphaGo Zero,Deepmind在MCTS超參數自動調優上一直表現出對高斯過程優化的信心,而這的確是它的優勢領域。當涉及豐富的建模可能性和大量隨機參數時,高斯過程十分簡單易用。

但是,掌握高斯過程不是一件簡單的事,尤其是如果你已經用慣了深度學習常用的那些模型。為了解決這個問題,我特意撰寫了這篇文章,並用一種直觀地、可視化的方式結合理論向初學者介紹。我已在github上傳了我的Jupyter Notebook,建議讀者前往下載,並結合函數圖像和代碼來對整個概念建立清晰認識。

什么是高斯過程?

高斯過程(GP)是一種強大的模型,它可以被用來表示函數的分布情況。當前,機器學習的常見做法是把函數參數化,然后用產生的參數建模來規避分布表示(如線性回歸的權重)。但GP不同,它直接對函數建模生成非參數模型。由此產生的一個突出優勢就是它不僅能模擬任何黑盒函數,還能模擬不確定性。這種對不確定性的量化是十分重要的,如當我們被允許請求更多數據時,依靠高斯過程,我們能探索最不可能實現高效訓練的數據區域。這也是貝葉斯優化背后的主要思想。

如果你給我幾張貓和狗的圖片,要我對一張新的貓咪照片分類,我可以很有信心地給你一個判斷。但是,如果你給我一張鴕鳥照片,強迫我說出它是貓還是狗,我就只能信心全無地預測一下。 ——Yarin Gal

為了更好地介紹這一概念,我們假定一個沒有噪聲的高斯回歸(其實GP可以擴展到多維和噪聲數據):

假設有一個隱藏函數:f:ℝℝ,我們要對它建模;

fx

用高斯建模函數

GP背后的關鍵思想是可以使用無限維多變量高斯分布來對函數進行建模。換句話說,輸入空間中的每個點都與一個隨機變量相關聯,而它們的聯合分布可以被作為多元高斯分布建模。

這是什么意思呢?讓我們從一個簡單的例子開始:二維高斯分布。

上式可以被可視化為一個3D的鍾形曲線,其中概率密度為其高度。如果我們不把它作為一個整體來看,而是從它的分布中抽樣,那會怎么樣?比如說,我們一次從圖中抽取兩點,反復進行10次,並把第一個值記錄在x=0,第二個值在x=1,然后在兩點間繪制線段。

 

如圖所示,這10根線條就是我們剛才抽樣的10個線性函數。那如果我們擴展到20維,它們會呈怎樣的分布呢?

 

經過調整,我們得到了這樣的函數曲線,雖然整體非常雜亂,但它們包含了許多有用的信息,能讓我們推敲想從這些樣本中獲得什么,以及如何改變分布來獲得更好的樣本。

多元高斯分布有兩個重要參數,一個是均值函數,另一個是協方差函數。如果只改變均值,那我們改變的只有曲線的整體趨勢(如果均值函數是上升的,例:np.arange(D),曲線就會有一個整體的線性上升趨勢),而鋸齒狀的噪聲形狀依然存在。鑒於這個特征,我們一般傾向於設GP的均值函數為0(即使不改變均值,GP也能對許多函數建模)。

解決了曲線形態,那么接下來,我們就要為它們增加一些平滑度(smoothness)。例如,如果兩個樣本非常接近,那我們自然會希望它們的函數值,即y值也非常相近。而把這個放進我們的模型中,就是樣本附近的隨機變量對應到它們聯合分布(高維協方差)上的值應當和樣本對應的值十分接近。

現在,這些點的協方差被定義在高斯協方差矩陣中,考慮到我們有的是一個N維的高斯模型:y0,…,yN,那么這就是一個N×N的協方差矩陣Σ,那么矩陣中的(i,j)就是Σij=cov(yi,yj)。換句話說,協方差矩陣Σ是對稱的,它包含了模型上所有隨機變量的協方差(一對)。

用核函數實現平滑

那么我們該如何定義我們的協方差函數呢?這時高斯過程的一個重要概念核函數(kernel)就要登場了。為了實現我們的目的,我們可以設一個平方形式的核函數(最簡形式):

當x=x′時,核函數k(x,x′)等於1;x和x′相差越大,k越趨向於0。

我們可以這樣繪制核函數的曲線,並觀察圖像變化:當x=x′時,函數值最大;當兩個輸入變得越來越不同,曲線逐漸呈平滑下降趨勢。

 

為了實現平滑度,我們會希望xi和xj的協方差yi和yj就等於核函數k(xi,xj)——xi、xj越接近,協方差越高。

利用上文中的函數,我們可得矩陣(xs,xs)。接下來,讓我們從20維高斯分布中抽取另外10個樣本,不同的是,這一次我們用了新的協方差矩陣。

 

現在,我們似乎獲得了一些看起來有點用的函數分布。隨着維數增加,我們甚至不再需要連接各個點,因為我們可以為任何可能的輸入指定一個點。

那么,如果進一步提高維數,比如到100維呢?

 

用先驗和觀察進行預測

現在我們已經有了一個函數分布,之后就要用訓練數據來模擬那個隱藏函數,從而預測y值。

首先,我們需要一些訓練數據。

隱藏函數f

為了介紹它,我先用一個5次方程:

之所以這么選,是因為它的圖適合講解,事實上我們可以隨便設。

 

數學計算

現在我們到了GP的核心部分,需要涉及一點點數學計算,但它其實只是我們用來調整觀測數據聯合分布的一種方法。

我們用多元高斯分布對p(yx)建模:

K=κ(x,x),均值函數m(x)=0。

這是一個先驗分布,表示在觀察任何數據前,我們期望在輸入x后獲得的輸出y。

之后,我們導入一些輸入為x的訓練數據,並輸出y=f(x)。接着,我們設有一些新輸入x∗,需要計算y∗=f(x∗)。

我們將所有y和y∗的聯合分布建模為:

其中,K=κ(x,x), K∗=κ(x,x∗), K∗∗=κ(x∗,x∗),均值函數為0。

現在,模型成了p(y,y∗x,x∗),而我們需要的是y∗。

調節多元高斯分布

比起反推回去,其實我們可以利用這個標准結果。由於我們已有y和y∗的聯合分布,在這個基礎上我們想對y的數據做條件處理,那就會得到:

這就是基於先驗分布和觀察值計算出的關於y∗的后驗分布。

注:由於K條件不當,以下代碼可能是不准確的,我會在第二篇文章中介紹一種更好的方法。

這樣,我們就能根據這兩個參數從條件分布中抽取樣本。在這里,我們設真函數f(x)與它們相對應。由於使用了GP,每個隨機變量的方差中會包含不確定性,而矩陣中第i個隨機變量的協方差是Σ∗ii,也就是矩陣Σ∗的一個對角元素,所以在這里,我們得到樣本的標准差為±2。

 

下篇預告

在實現中,為了獲得更好的訓練效果,我們往往要做更多調整計算。你也許已經注意到了,GP包含兩個非常重要的參數σ和l,如果你在之前采集樣本的時候嘗試改變過它們,那你會發現圖像在垂直和水平方向上的神奇變化。例如,如果我們期望更大范圍的輸出,我們就需要相應地放大參數σ。事實上,和所有會用到核函數的方法一樣,如果有需要,我們甚至可以完全改變核函數。

盡管選擇核函數是專家學者們的事,但是通過控制loss最小化,我們可以自動選擇參數,而這正是高斯過程帶給我們的。

此外,我們還要考慮樣本不完美,即出現噪聲數據的情況。在這時,我們需要把這種不確定性歸於模型並做一些泛化調整。

 

 

 

https://blog.csdn.net/yangmingliang666/article/details/79645782

Gaussian Process for Regression
對於服從高斯分布的數據,如何根據前面輸入輸出訓練得到一個預測型從而送入一個輸入量得到的那個值盡可能的逼近期望值,入下圖所示根據前面六點輸入輸出求解x=0.2時候的對應值:


1、符號介紹
2、公式推導
3、核心代碼
4、模型結果
5、總結
1、符號介紹
x已知范圍內的樣本值
x’與x不同的樣本值,或預測值
回歸函數f(x)
l 為計算協方差函數k(x,x’) 的參數
sigmaf2sigmaf2或sigmaf為回歸函數方差或樣本最大協方差,sigman2sigman2 或sigman為噪聲方差
K樣本協方差陣,K*預測值和樣本的協方差陣,K**預測值方差
P(y∗/y)P(y∗/y)條件概率

2、公式推導

 

3、核心代碼
MATLAB仿真代碼:

%一:計算樣本的協方差陣
for i=1:6;
x1=x(i);
for j=1:6;
x2=x(j);
covar(i,j)= sigmaf^2 * exp(-(x1-x2)^2/(2*l^2));
if x1==x2;
covar(i,j) = covar(i,j)+sigman^2;
end
end
end

%二:預測值的方差KK
KK=sigmaf^2 * exp(-(X-X)^2/(2*l^2))+sigman^2; %預測點的方差
fprintf('KK=\n')
disp(KK());
%三:樣本點與預測點的協方差矩陣k
k=zeros(1,6); %初始化
for i=1:6;
x1=x(i);
k(1,i)= sigmaf^2 * exp(-(x1-X)^2/(2*l^2));
end
fprintf('k=\n')
disp(k);
%四:求解均值u,並畫出圖像
ylabel('豎坐標y')
u=k*(covar^-1)*y; %均值u的計算公式,作為預測值
fprintf('u=\n')
disp(u);
%五:求解var(y)
var=KK-k*(covar^-1)*k'; %方差var的計算公式

4、模型仿真結果
程序運行結果:

預測模型求值結果:

高斯擬合曲線結果:


總結
對於預測類型問題主要是求解預測模型模型中的參量,得到回歸性函數。模型中的參量求解越精准,其模型就越適應於研究的問題,所以說模型都是萬能的也都不是萬能的。

 

 https://study.163.com/provider/400000000398149/index.htm?share=2&shareId=400000000398149( 歡迎關注博主主頁,學習python視頻資源,還有大量免費python經典文章)


 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM