共计 1725 个字符,预计需要花费 5 分钟才能阅读完成。
这篇文章将为大家详细讲解有关 Python 中岭回归的示例分析,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
岭回归是一种专门用于共线性数据分析的有偏估计回归方法,实质上时改良的最小二乘估计法,通过放弃最小二乘法的无偏性(在反复抽样的情况下,样本均值的集合的期望等于总体均值),以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对共线性问题和病态数据的拟合要强于最小二乘法经,常用于多维问题与不适定问题(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 中岭回归的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。