Python中岭回归的示例分析
这篇文章将为大家详细讲解有关 Python中岭回归的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的松北网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
岭回归是一种专门用于共线性数据分析的有偏估计回归方法,实质上时改良的最小二乘估计法,通过放弃最小二乘法的无偏性(在反复抽样的情况下,样本均值的集合的期望等于总体均值),以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对共线性问题和病态数据的拟合要强于最小二乘法经,常用于多维问题与不适定问题(ill-posed problem)。
岭回归通过引入一个惩罚变量解决了普通最小二乘法的问题。岭回归相关系数是的惩罚残差平方和最小:
是收缩率,既控制模型复杂度的因子。
import numpy as np import matplotlib.pyplot as plt from sklearn import linear_model#创建一个希伯特矩阵(高度病态,任何一个元素的点发生变动,整个矩阵的行列式的值和逆矩阵都会发生巨大变化)#这里的加法运算类似于矩阵相乘X = 1. / (np.arange(1, 11) + np.arange(0, 10)[:, np.newaxis]) y = np.ones(10)#计算路径n_alphas = 200alphas = np.logspace(-10, -2, n_alphas) clf = linear_model.Ridge(fit_intercept=False) coefs = []for a in alphas: clf.set_params(alpha=a) clf.fit(X, y) coefs.append(clf.coef_)#图形展示#设置刻度ax = plt.gca() #设置刻度的映射 ax.plot(alphas, coefs)#设置x轴的刻度显示方式ax.set_xscale('log')#翻转x轴ax.set_xlim(ax.get_xlim()[::-1])#设置x、y标签以及标题plt.xlabel('alpha') plt.ylabel('weights') plt.title('Ridge coefficients as a function of the regularization')#使得坐标轴最大值和最小值与数据保持一致plt.axis('tight') plt.show()
上图展示了岭回归模型的解的10个分量随正则化参数Alpha变化而变化的趋势。每一种颜色代表了不同的相关系数向量特征,它随着传入的正则化参数Alpha的变化而变化。由于图像形态,岭回归又称为脊回归。
这个例子展示了岭回归处理病态矩阵( ill-conditioned matrices)的优势。在病态矩阵里每一个目标变量微小的变动都会产生巨大的方差。对于这种情况就需要设置一个比较合适的正则化参数来减少离差(噪声)。
当正则参数Alpha非常大的时候,正则化的影响支配了二乘法函数,相关系数趋近于0。在路径的结尾,当正则参数alpha趋近于0的时候,结果解趋近于了普通最小二乘法,系数表现出了很大的震荡。
设置正则参数
在实践中要不断的调节正则参数Alpha在上述过程中寻求一种平衡。
RidgeCV实现了岭回归的交叉验证,下面是一种高效的交叉验证方式-留一交叉验证(leave-one-out):
>>> from sklearn import linear_model >>> clf = linear_model.RidgeCV(alphas=[0.1, 1.0, 10.0]) >>> clf.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) >>> clf.alpha_ 0.1
关于“ Python中岭回归的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
网站名称:Python中岭回归的示例分析
文章来源:http://pwwzsj.com/article/gesiep.html