线性模型第2讲:岭回归与分类

论文合作、课题指导请联系QQ2279055353

岭回归

岭回归(Ridge Regression), 在最小二乘估计问题的基础上,向离差平方和增加了一个L2范数的惩罚项,即,
min ⁡ w ∥ X w − y ∥ 2 2 + α ∥ w ∥ 2 2 \mathop{\min}\limits_{w} \| Xw-y\|_2^2+\alpha\|w\|_2^2 wminXwy22+αw22
复杂系数 α ≥ 0 \alpha\ge0 α0 控制缩水的规模: α \alpha α 的值越大,缩水量越大。这样,系数对于多重共线性问题是更稳健的。

Python 类

linear_model库的Ridge类实现岭回归算法,它拟合数据X, y, 调用方法coef_ member访问回归系数 w w w. 下面,举一个简单的例子:
线性模型第2讲:岭回归与分类_第1张图片

分类问题

Ridge类有一个分类器的形式:RidgeClassifier. 该分类器首先把二值targets转换到 { − 1 , 1 } \{-1, 1\} {1,1}, 然后把它作为一个回归任务,优化相同的目标函数。预测类对应回归预测的符号函数。对于多水平分类问题,则视为一个多输出的回归,预测类对应回归的最高值输出。
当有多水平类时,RidgeClassifier显著地快于LogisticRegression, 这是因为它只需要计算投影矩阵 ( X T X ) − 1 X T (X^{T}X)^{-1}X^T (XTX)1XT 一次。

设置正则参数

RidgeCV类使用参数 α \alpha α 的内置交叉验证法执行岭回归。它的常用代码如下:
线性模型第2讲:岭回归与分类_第2张图片

岭系数图

在这个例子里,我们应用岭回归到病态数据矩阵上。对于这种类型的矩阵,在计算权值时目标变量可能有巨大的方差。这时,设置正则参数 α \alpha α 的值有助于减小方差。现在,我们把 α \alpha α 作为回归系数的函数,看一看权值与 α \alpha α 之间的关系。
线性模型第2讲:岭回归与分类_第3张图片
从图上可以看出,随着 α \alpha α 变大,惩罚项控制了平方损失函数的大部,回归系数趋向于零。在路径的最后,随着 α \alpha α 趋向零,回归的解趋向于普通最小二乘估计,系数有较大摇摆。在实际应用种,应该调整 α \alpha α 的值,使二者达到平衡。

实现代码如下:

# Author: Fabian Pedregosa -- 
# License: BSD 3 clause

print(__doc__)

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

# X is the 10x10 Hilbert matrix
X = 1. / (np.arange(1, 11) + np.arange(0, 10)[:, np.newaxis])
y = np.ones(10)

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

n_alphas = 200
alphas = np.logspace(-10, -2, n_alphas)

coefs = []
for a in alphas:
    ridge = linear_model.Ridge(alpha=a, fit_intercept=False)
    ridge.fit(X, y)
    coefs.append(ridge.coef_)

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

ax = plt.gca()

ax.plot(alphas, coefs)
ax.set_xscale('log')
ax.set_xlim(ax.get_xlim()[::-1])  # reverse axis
plt.xlabel('alpha')
plt.ylabel('weights')
plt.title('Ridge coefficients as a function of the regularization')
plt.axis('tight')
plt.show()

你可能感兴趣的:(线性模型第2讲:岭回归与分类)