岭回归理论及代码实现

文章详细介绍了岭回归的概念,它通过添加回归系数的二范数防止过拟合,与线性和Lasso回归进行对比。提供了使用numpy手动实现岭回归的代码以及利用sklearn的Ridge模型的示例,强调了两者结果的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

岭回归的模型可以写作

与一般的线性回归相比, 岭回归加入了回归项系数的二范数, 其中

,

这样做是为了防止线性回归过程发生的过拟合现象. 直观点看, 其将的分量限制在了一个以圆点为中心的圆内. 而与Lasso回归相比, 该模型更具有稳定性.

岭回归的模型求解可以通过直接求梯度获得, 也就是

由此可求得:

如此便可得其代码(此代码只是为了更好的了解其求解过程)

import numpy as np
# 自动生成求解数据
from sklearn.datasets import make_regression


def ridge_recurrence(x_train, y_train, lam):
    mattemp = np.dot(x_train.T, x_train) + lam * np.eye(x_train.shape[1])
    # 判断矩阵是否可逆
    if np.linalg.det(mattemp) == 0:
        print("This matrix can not inverse!")
        return
    return np.dot(np.linalg.inv(mattemp), np.dot(x_train.T, y_train))


if __name__ == '__main__':
    X, y = make_regression(200, 5, noise=1)
    omega = ridge_recurrence(X, y, 1)
    print(omega)

同样的可以通过调用sklearn.liner_model中的Ridge对其进行实现, 具体代码如下

from sklearn.datasets import make_regression
from sklearn.linear_model import Ridge


if __name__ == '__main__':
    X, y = make_regression(200, 5, noise=1)
    model = Ridge(alpha=1)
    model.fit(X, y)
    print(model.coef_)

比较两个方式的结果有

如此完成对岭回归的整理. 本文参考b站岭回归的讲解

岭回归与Lasso回归算法——Python统计与数据分析实战系列(二)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值