天天看點

機器學習實踐之scikit-learn:Ridge Regression (嶺回歸)

嶺回歸 通過對系數的大小施加懲罰來解決 普通最小二乘 的一些問題。 ridge coefficients ( 嶺系數 ) 最小化一個帶罰項的殘差平方和,

機器學習實踐之scikit-learn:Ridge Regression (嶺回歸)

這裡 

機器學習實踐之scikit-learn:Ridge Regression (嶺回歸)

 是控制縮減量的複雜度參數: 

機器學習實踐之scikit-learn:Ridge Regression (嶺回歸)

 值越大,縮減量越大, 是以系數變得對共線性變得更加魯棒。

機器學習實踐之scikit-learn:Ridge Regression (嶺回歸)

(圖中有10個系數,當alpha較大時,對系數大小的懲罰較大,是以系數分布在0附近;alpha較小時,則系數較發散。具體參考以下第一個示例)

與其他線性模型一樣,Ridge 類成員函數 fit 以數組X和y為輸入,并将線性模型的系數 

機器學習實踐之scikit-learn:Ridge Regression (嶺回歸)

 存儲在其成員變量coef_ 中:

>>> 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...
           

示例:

  • Plot Ridge coefficients as a function of the regularization( 作為正則化的函數,繪制嶺系數 )
  • Classification of text documents using sparse features( 使用稀疏特征的文本文檔分類 )

Ridge Complexity ( 嶺複雜性 )

這種方法與 Ordinary Least Squares ( 普通最小二乘方法 ) 的複雜度相同。

Setting the regularization parameter: generalized Cross-Validation ( 設定正則化參數:廣義交叉驗證 )

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])       
RidgeCV(alphas=[0.1, 1.0, 10.0], cv=None, fit_intercept=True, scoring=None,
    normalize=False)
>>> reg.alpha_                                      
0.1
           

參考:

  • “Notes on Regularized Least Squares”, Rifkin & Lippert (technical report, course slides).

參考:

scikit-learn 0.19 文檔

scikit-learn 0.18 中文文檔

繼續閱讀