1. 程式人生 > >[更新ing]sklearn(十八):Gaussian Processes

[更新ing]sklearn(十八):Gaussian Processes

Guassian Processes利弊:

  • 優點
  • GP對new point的預測是通過在training data中插值而得到的。
  • GP是概率預測,通過GP的概率預測,我們可以知道new point的“經驗置信區間”,基於該置信區間大小(如果置信區間過大,則不能精確得出new point的位置,應該想辦法減小置信區間),我們可以考慮是否需要對該new point進行重新擬合預測(如果GP對於new point的預測概率較低,則說明new point不服從現有的Guassian distribution,需要根據new point修正現有的Guassian distribution)。
  • Guassian Processes中,可以利用不同的kernel得出“方差矩陣”。

這裡先明確一下“置信區間”和“置信水平”的關係: 給定一fixed置信水平,如果樣本量越多,則該置信水平下的置信區間越窄; 置信水平越大,則置信區間越寬; 置信區間越寬,則置信水平越大; 置信水平

  • 缺點: Guassian Processes需要利用所有的training data來擬合模型; 當data維度過高時(> a few dozens),Guassian Processes將變得無效;

Guassian Process Regression(GPR)

sklearn.gaussian_process.GaussianProcessRegressor(kernel=None,
alpha=1e-10, optimizer=’fmin_l_bfgs_b’, n_restarts_optimizer=0, normalize_y=False, copy_X_train=True, random_state=None) #kernel:用於擬合covariance matrix的核函式 #alpha:個人理解,相當於一個正則化係數,alpha越大,則代表data的noise越多,則模型在擬合的時候,會通過增加bias來降低variance。vice versa。 #optimizer:用來優化kernel引數的optimizer,可以用系統自帶的優化器,也可以自己編寫一個優化器,賦值給optimizer。optimizer的作用是:通過最大化log-
marginal-likelihood來求解kernel(covariance estimation)的最優hyperparameter(recap:covariance estimation的原理,假設data服從Guassian distribution,且covariance未知,我們的目標函式就是求解使得data似然值最大(似然值通過Guassian distribution獲得)的covariance。個人理解,這裡的kernel相當於是計算data covariance的一種概率密度函式)。 #note that:kernel added with WhiteKernel can estimate the noise level of data #n_restarts_optimizer:optimizer的啟動次數。每次,驗證一個初始化kernel parameter。通過n_restarts_optimizer次初始化,確定最終的最優引數。 #normalize_y:bool,是否預測值y需要標準化(也就是說:是否training data的y值需要標準化)。如果training data的y平均值不為0,則normalize_y=True。(個人理解)??? #copy_X_train:是否將X的copy儲存下來。 #attribute .log_marginal_likelihood_value_ #kernel某一hyperparameter下的 log-marginal-likelihood #method log_marginal_likelihood([theta, eval_gradient]) #求解給定kernel下hyperparameter = theta時的log_marginal_likelihood。
比較Guassian Process Regression和Kernel Ridge Regression
  • GPR和KRR都可以運用kernel trick,但是GPR的kernel hyperparameter可以通過gradient descent based on the marginal likelihood function 進行optimization,而KRR的kernel hyperparameter則只能通過grid search on cross validated loss function 進行optimization。
  • GPR預測可以得到一個概率模型,因此GPR除可以返回預測值以外,還可以返回一個“置信區間”,而KRR只能返回預測值。
  • GPR中給kernel加上Whitekernel可以explicitly學習data noise。
  • GPR中alpha parameters可以代表data的noise程度,相當於KRR中的正則化係數,值越大,則對模型的懲罰力度越大,可有效防止overfitting。
  • GPR和KRR中的kernel hyperparameter控制著model的smoothness程度。
  • KRR中kernel hyperparameter optimization會隨著hyperparameter數量程指數增長,而GPR則不會,因為他是使用gradient descent來優化hyperparameter。
GPR on Mauna Loa CO2 data

摘錄一下在該案例中對kernel的描述,不同的kernel component對data的描述起到了不同的作用,值得借鑑學習,[待更新]有時間會總結一下不同kernel對於data的描述能發揮什麼樣的作用

Gaussian Process Classification (GPC)

sklearn.gaussian_process.GaussianProcessClassifier(kernel=None, optimizer=’fmin_l_bfgs_b’, n_restarts_optimizer=0, max_iter_predict=100, warm_start=False, copy_X_train=True, random_state=None, multi_class=’one_vs_rest’, n_jobs=None)
#multi_class:{one_vs_rest,one_vs_one};multi-classification採用的分類方法:one_vs_one是指形成C{k,2}個分類器,將其組合用於多分類問題,其中k為class的數量;one_vs_rest是指形成k個分類器,將其組合用於多分類問題。