python Scipy求解等价凸优化问题之Ridge_Regression(岭回归)

本文详细介绍了岭回归的基本原理,并通过Python代码演示了如何使用scipy.optimize模块和numpy/pandas库实现Ridge Regression,特别关注了正则项在减少过拟合中的作用。通过实例展示了如何构造凸优化问题并施加权重约束。

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


提示:本文不调用sklearn等包,直接使用scipy.optimize,numpy和pandas完成了Ridge_Regression,即岭回归算法的实现。


一、Ridge_Regression岭回归之算法原理?

岭回归是一种常见的方法,简单来说就是在线性回归 Y = β X + b 的基础上加入了正则项,减少了过拟合,其实也就介绍完了,这个正则项可以转变成一个对权重二范数的一个约束 || β || < t

那么我们可以用Scipy里面的NonlinearConstraint去解决这个问题。通常岭回归方程的**|| β ||**会稍低于普通回归分析,但回归系数的显著性往往明显高于普通回归,在存在共线性问题和病态数据偏多的研究中有较大的实用价值,也就是说在一些实际应用场景更具有应用价值吧。

二、python源码

代码如下(示例):

1.Ridge_Regression.py

from scipy.optimize import (BFGS, NonlinearConstraint, minimize)
import numpy as np
import pandas as pd


class problem:
    df = pd.read_csv('D:/Tencent/2668630468/FileRecv/PRISON.csv')
    data = np.array(df.values)
    thresh = 5
    m = data.shape[0]
    n = data.shape[1]

    testx = data[:, 0:-1]
    testy = data[:, -1]

    def f(self, x):
        temp = np.dot(self.testx, x.reshape(self.n-1, 1))
        result = temp - self.testy.reshape(self.m, 1)
        result = result.reshape(self.m, )
        result = np.sum(result)
        return result

    def g(self, x):
        return np.sum(x ** 2)

p = problem()
nonlinear_constraint = NonlinearConstraint(p.g, 0.0, p.thresh ** 0.5, jac='2-point', hess=BFGS())
res = minimize(p.f,
               x0=np.tile(np.array([0]),p.n-1),
               method='SLSQP',
               jac="2-point",
               constraints=[nonlinear_constraint]
               )
print(res.x)


2.读入数据

优快云数据链接如下:数据链接


总结

本文将岭回归问题转化为凸优化问题并通过Scipy.minimize进行求解,其中使用Scipy.NonlinearConstraint对求解权重 β 进行约束。

参考链接:https://blog.youkuaiyun.com/weixin_43374551/article/details/83688913

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是狮子搏兔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值