1.1.2 Ridge Regression
Ridge回归通过对系数的惩罚值来解决最小二乘法的系数问题。岭系数的最小化惩罚残差平方和的公式:
这里,是用来控制收缩量的复杂参数:参数值越大,收缩量也越大,因此系数对共线性变得更加稳健。
与其他线性模型一样,岭模型对数组X,y进行拟合,并将线性模型的系数存储在coef_成员中
from sklearn import linear_model
reg=linear_model.Ridge(alpha=0.5)
print(reg.fit([[0,0],[0,0],[1,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)
print(reg.coef_)#[0.16363636 0.16363636]
例子
展现共线性对估计参数系数的影响
岭回归在本例中被使用。每一种颜色代表一种不同的系数向量,这时作为正则参数的函数显示的。
此例将岭回归应用在了高度异常的矩阵上,对于这个矩阵,小小的改变可以导致计算权重产生巨大的差异。在这种情况下,设置一定的正则化(参数)对减少这张变化(噪音)是由用的。
当参数很大的时候,正则化之后的影响的贡献对二次损失函数以及系数的影响趋近于零。在图像的末尾,由于参数趋近于零,选用的是普通的最小二乘法,最后的系数产生了较强的震荡。在实际情况下,需要手动调参保持两者平衡。(上面标题是代码的链接)
这个例子展示了怎么通过scikit-learn进行bag-of-words的方法对文档进行分类。
1.1.2.1复杂度
这个方法与最小二乘法的复杂度相同
1.1.2.2设置一个正则化的参数:广义的交叉验证
RidgeCV通过alpha参数的内置交叉验证实现岭回归,这个对象的工作原理与GridSearchCV(这个是找最好梯度的一个函数),没有参数会默认给出参数(0.1 1 10)用于做交叉验证,这时一个有效的留一法的交叉验证:
from sklearn import linear_model
reg=linear_model.RidgeCV()
print(reg.fit([[0, 0], [0, 0], [1, 1]], [0, .1, 1]))#RidgeCV(alphas=(0.1, 1.0, 10.0), cv=None, fit_intercept=True, gcv_mode=None,normalize=False, scoring=None, store_cv_values=False)
print(reg.alpha_)#0.1
参考
关于最小二乘法的详解我是超链接