岭回归 通过对系数的大小施加惩罚来解决 普通最小二乘 的一些问题。 ridge coefficients ( 岭系数 ) 最小化一个带罚项的残差平方和,
这里 是控制缩减量的复杂度参数:
值越大,缩减量越大, 因此系数变得对共线性变得更加鲁棒。
(图中有10个系数,当alpha较大时,对系数大小的惩罚较大,所以系数分布在0附近;alpha较小时,则系数较发散。具体参考以下第一个示例)
与其他线性模型一样,Ridge 类成员函数 fit 以数组X和y为输入,并将线性模型的系数 存储在其成员变量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).
参考: