python实现岭回归_python实现线性回归之岭回归

本文介绍了岭回归与线性回归的区别,主要关注岭回归的代价函数及其优化方法,包括梯度下降和随机梯度下降。通过Python实现了一个基础的岭回归模型,并在多项式回归的基础上进行了应用。最后,使用交叉验证找到最佳正则化参数,以预测温度数据,并展示了训练和测试结果。
摘要由CSDN通过智能技术生成

岭回归与多项式回归的最大区别就是损失函数上的区别。岭回归的代价函数如下:

为了方便计算导数,通常也会写成以下形式:

上述式子中w为长度为n的向量,不包括偏置项的系数 θ0,θ是长度为n+1的向量,包括偏置项系数θ0;m为样本数,n为特征数。

岭回归的代价函数仍然是凸函数,因此可以利用梯度等于0的方式求得全局最优解:

上述方程与一般线性回归方程相比多了一项λI,其中I表示单位矩阵,加入XTX是一个奇异矩阵(不满秩),添加这一项之后可以保证该项可逆,由于单位矩阵上的对角元素均为1,其余元素都为0,看起来像是一条山岭,因此而得名。

还可以使用随机梯度下降算法来求解:

参数更新就可以如下表示:

首先还是定义一个基类,各种线性回归都需要继承该基类:

classRegression(object):"""Base regression model. Models the relationship between a scalar dependent variable y and the independent

variables X.

Parameters:

-----------

n_iterations: float

The number of training iterations the algorithm will tune the weights for.

learning_rate: float

The step length that will be used when updating the weights."""

def __init__(self, n_iterations, learning_rate):

self.n_iterations=n_iterations

self.learning_rate=learning_ratedefinitialize_weights(self, n_features):"""Initialize weights randomly [-1/N, 1/N]"""limit= 1 /math.sqrt(n_features)

self.w= np.random.uniform(-limit, limit, (n_features, ))deffit(self, X, y):#Insert constant o

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值