博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sklearn help之岭回归 ridge regression
阅读量:7238 次
发布时间:2019-06-29

本文共 1411 字,大约阅读时间需要 4 分钟。

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

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

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

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

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

import numpy as npimport matplotlib.pyplot as pltfrom 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 pathsn_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 resultsax = 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

你可能感兴趣的文章
电源磁珠选择
查看>>
Android线控的使用
查看>>
《C陷阱与缺陷》阅读笔记(个人版)
查看>>
项目管理过程 (1)
查看>>
hdu 3033
查看>>
Redis (windows)安装
查看>>
Axure基础操作
查看>>
<转>boost 1.53 and STLPort build binary for windows
查看>>
洛谷 P1736 创意吃鱼法 Label:dp || 前缀和
查看>>
物理备库互转快照备库
查看>>
SEO之HTML标签
查看>>
test1
查看>>
P与NP,从概念到研究全面综述
查看>>
查找SQL数据表或视图中的字段属性信息
查看>>
WEB请求处理六:浏览器HTTP协议漫谈
查看>>
用JS描述的数据结构及算法表示——栈和队列(基础版)
查看>>
【2019年OCP新题】OCP题库更新出现大量新题-10
查看>>
int(1)和int(11)是否有区别?
查看>>
ORACLE11g R2【单实例 FS→单实例FS】
查看>>
Linux中fork()函数详解
查看>>