sklearn help之岭回归 ridge regression

ridge regression: 在最小二乘的基础上添加一个系数为α的惩罚项,惩罚项为参数向量2范数的平方,可以通过控制α来调节数据集的过拟合问题

拟合方法,参数调用与线性回归相同

岭回归优点:可以应用于高度坏条件矩阵(目标值的轻微改变会造成参数的大方差,数据曲线波动加剧,容易导致过拟合问题,因此添加系数为α的惩罚项减小波动)

当α很大时,为了使模型达到最小值,惩罚项必须趋于零,此时主要考虑平方损失;当α趋近于0时,参数向量方差很大,容易导致过拟合。

对于岭回归,重点为调整α使平方损失与参数损失达到平衡。

import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model

# X is the 10x10 Hilbert matrix 生成10×10的希尔伯特矩阵和全1矩阵
X = 1. / (np.arange(1, 11) + np.arange(0, 10)[:, np.newaxis])
y = np.ones(10) 

# #############################################################################
# Compute paths

n_alphas = 200 #将α从10的-10到10的-2分为200个数
alphas = np.logspace(-10, -2, n_alphas)

coefs = []
for a in alphas:
    ridge = linear_model.Ridge(alpha=a, fit_intercept=False)#生成ridge对象,不考虑截距
    ridge.fit(X, y)#采用对象的fit方法进行岭回归拟合
    coefs.append(ridge.coef_)

# #############################################################################
# Display results

ax = plt.gca() #生成一个plot对象

ax.plot(alphas, coefs) #绘图
ax.set_xscale('log')#以log为单位绘制坐标间隔
ax.set_xlim(ax.get_xlim()[::-1])  # reverse axis坐标值以-1分隔,
plt.xlabel('alpha')
plt.ylabel('weights')
plt.title('Ridge coefficients as a function of the regularization')
plt.axis('tight')#不改变x,y的范围尽量将数据移动至图片的中央
plt.show()

 

1. 岭回归的时间复杂度为O(np2)

2. RidgeCV:在不同的α值时,通过交叉验证得出最优α

RidgeCV(alphas=[0.1, 1.0, 10.0], cv=None, fit_intercept=True, scoring=None,
    normalize=False)
CV默认为留1验证

 

转载于:https://www.cnblogs.com/yxr-blogs/p/9144131.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值