scikit-learn中文文檔-學習筆記二-廣義線性模型

機器學習
1.廣義線性模型(Generalized Linear Model)
該方法用於迴歸, 該目標值是輸入變量的線性組合, y’是預測值。
y’(w, x) = w0 + w1x1 + w2x2 + …… + wpxp
在模塊中,使用coef_代表向量(w1, w2, …, wp), 使用intercept_代表w0.
該模型一般在邏輯迴歸中使用

2.普通最小二乘法(Ordinary Least Squares)
在線性迴歸(LinearRegression)類來擬合係數爲w = (w1, w2, …, wp)的線性模型時,我們使得樣本集中觀測點和線性近似的預測點之間的殘差平方和(最小二乘法)最小化來選擇最優的直線。
即滿足如下圖:
最小二乘法

LinearRegression類的訓練函數fit()以X和y作爲輸入,將係數w存入coef_中。

from sklearn import linear_model
reg = linear_model.LinearRegression()
reg.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2]) # 訓練
reg.coef_
# 結果
array([ 0.5,  0.5])
reg.intercept_
2.22044604925e-16

複雜度
該方法通過對X進行 singular value decomposition ( 奇異值分解 ) 來計算最小二乘法的解。如果 X 是大小爲(n, p) 的矩陣,則該方法的複雜度爲O(np^2), 假設n>=p。

3.嶺迴歸(Ridge Regression)
嶺迴歸是在最小二乘法的基礎上,再加上一個對係數w的殘差平方和帶罰項α,嶺係數如下:
嶺迴歸係數
α(>=0)是控制縮減量的複雜度參數:當α值越大,縮減量越大,係數對共線性的魯棒性也越好。

>>> from sklearn import linear_model
>>> reg = linear_model.Ridge (alpha = .5)
>>> reg.fit ([[0, 0], [0, 0], [1, 1]], [0, .1, 1])
Ridge(alpha=0.5, copy_X=True, fit_intercept=True, max_iter=None,
      normalize=False, random_state=None, solver='auto', tol=0.001)
>>> reg.coef_
array([ 0.34545455,  0.34545455])
>>> reg.intercept_
0.13636...

修改參數
RidgeCV 通過內置的 Alpha 參數的交叉驗證來實現嶺迴歸。 該對象的工作方式與 GridSearchCV 相同,只是它默認爲 Generalized Cross-Validation ( 通用交叉驗證 ) (GCV)。

from sklearn import linear_model
reg = linear_model.RidgeCV(alphas=[0.1, 1.0, 10.0])
reg.fit([[0, 0], [0, 0], [1, 1]], [0, .1, 1])      

>>> reg.alpha_                                     
0.1

複雜度
則該方法的複雜度和普通最小二乘法一樣爲O(np^2), 假設n>=p。

4.稀疏約束:Lasso
lasso表現強勁的迴歸算法,是介於普通線性迴歸(不能處理嚴重多重共線性問題)和嶺迴歸\PLS,PLA(專門用於解決嚴重多重共線性問題)之間的通用算法。除了做迴歸,Lasso的稀疏結果天然可以做機器學習中的另外一件事——特徵選擇feature selection,把非零的係數對應的維度選出即可,達到對問題的精簡、去噪,以及減輕overfitting。

>>> from sklearn import linear_model
>>> reg = linear_model.Lasso(alpha = 0.1)
>>> reg.fit([[0, 0], [1, 1]], [0, 1])
Lasso(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=1000,
   normalize=False, positive=False, precompute=False, random_state=None,
   selection='cyclic', tol=0.0001, warm_start=False)
>>> reg.predict([[1, 1]])
array([ 0.8])

對於較低級別的任務也很有用的是函數 lasso_path 來計算可能值的完整路徑上的係數。

5.最小角度迴歸(Least Angle Regression)
優點:
(1)在p >> n的情況下(即,當維數顯着大於點數時)的數值效率較高
(2)它在計算上與正向選擇一樣快,並且具有與普通最小二乘法相同的複雜度。
(3)它產生一個完整的分段線性解決路徑,這在交叉驗證或類似的調試模型嘗試中很有用。
(4)如果兩個變量與響應幾乎相等,那麼它們的係數應該以大致相同的速率增加。因此,算法的行爲就像直覺所期望的那樣,並且也更穩定。
(5)它很容易被修改爲其他估計器產生解決方案,如 Lasso 。

LARS 方法的缺點包括:
因爲 LARS 是基於對殘差進行迭代重新設計的,所以它似乎對噪聲的影響特別敏感。 Weisberg 在 Efron 等人的討論部分詳細討論了這個問題。 (2004) Annals of Statistics article 。

(6)Using cross-validation ( 使用交叉驗證 )
scikit-learn 通過交叉驗證來公開設置 Lasso alpha 參數的對象:LassoCVLassoLarsCV 。 LassoLarsCV 是基於下面解釋的 Least Angle Regression ( 最小角度迴歸 ) 算法。
對於具有許多共線迴歸的高維數據集, LassoCV 最常見。然而, LassoLarsCV 具有探索更相關的 alpha 參數值的優點,並且如果樣本數量與觀察次數相比非常小,則通常比 LassoCV 快。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章