人工智能中文网
  • 主页
  • 线代考研视频
  • 线性代数
  • Python机器学习与算法
  • 大数据与机器学习
  • Python基础入门教程
  • 人工智能中文网
    教程目录
    阅读:

    岭回归和Lasso回归算法详解(Python实现)

    在处理较为复杂的数据的回归问题时,普通的线性回归算法通常会出现预测精度不够,如果模型中的特征之间有相关关系,就会增加模型的复杂程度,并且对整个模型的解释能力并没有提高,这时,就需要对数据中的特征进行选择。

    对于回归算法,特征选择的方法有岭回归(Ridge Regression)和 Lasso回归

    岭回归和 Lasso 回归都属于正则化的特征选择方法,对于处理较为复杂的数据回归问题通常选用这两种方法。

    岭回归模型

    岭回归(Ridge Regression)是在平方误差的基础上增加正则项:


    其中,λ>0。通过确定 λ 的值可以使得在方差和偏差之间达到平衡:随着 λ 的增大,模型方差减小而偏差增大。

    岭回归模型的求解

    与线性回归一样,在利用最小二乘法求解岭回归模型的参数时,首先对 W 求导,结果为:


    令其为 0,可求得 W 的值为:


     
    其中,I 是单位对角矩阵。

    现在让我们一起利用 Python 实现最小二乘的解法,在最小二乘法的求解过程中,需要用到矩阵的计算,因此,我们需要导入 Python 的矩阵计算模块:
    import numpy as np
    岭回归的最小二乘解法的具体实现如下所示:
    def ridge_regression(feature, label, lam):
        '''最小二乘的求解方法
        input:  feature(mat):特征
                label(mat):标签
        output: w(mat):回归系数
        '''
        n = np.shape(feature)[1]
        w = (feature.T * feature + lam * np.mat(np.eye(n))).I * feature.T * label
        return w
    ridge_regression 函数实现了岭回归模型的最小二乘解法,函数输入为训练数据的特征 feature、训练数据的目标值 label 以及参数lam,输出为权重 w。在岭回归的求解过程中,最关键的是上述权重的求解过程。

    Lasso回归

    Lasso 采用的则是 L1 正则,即 Lasso 是在平方误差的基础上增加 L1 正则:


    其中,λ>0。通过确定 λ 的值可以使得在方差和偏差之间达到平衡:随着 λ 的增大,模型方差减小而偏差增大。

    与基于 L2 正则的岭回归不同的是,上述的损失函数在 wj =0 处是不可导的,因此传统的基于梯度的方法不能直接应用在上述的损失函数的求解上。为了求解这样的问题,一些近似的优化算法被采用,或者可以采用一些简单的方法来近似这样的优化过程。