天天看点

python实现线性回归之岭回归

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

python实现线性回归之岭回归

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

python实现线性回归之岭回归

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

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

python实现线性回归之岭回归

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

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

python实现线性回归之岭回归

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

python实现线性回归之岭回归

​​​​

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

岭回归的核心就是l2正则化项:

然后是岭回归的核心代码:

最后是主函数:

结果:

python实现线性回归之岭回归

继续阅读