博客
关于我
其他线性模型
阅读量:338 次
发布时间:2019-03-04

本文共 2184 字,大约阅读时间需要 7 分钟。

其他线性模型

1 共线性与L2正则化

L2正则化,可以使系数w的绝对值变小,使对应的特征项对结果的影响变小。如果数据没有问题,多元线性回归和多项式回归中,才有使用正则化的必要,一元线性回归不需要L2正则化。

在岭回归中,经常能看到共线性(collinearity)这个词,其实就是特征之间线性相关。
X m n = [ x 1 , x 2 , . . . , x n ] X_{mn}=[x_1, x_2, ... , x_n] Xmn=[x1,x2,...,xn]
这里假如m表示样本数量,n表示特征数,那么 x 1 , x 2 , . . . , x n x_1, x_2, ... , x_n x1,x2,...,xn均为列向量,若 x 1 , x 2 , . . . , x n x_1, x_2, ... , x_n x1,x2,...,xn线性相关,则说明特征之间存在共线性。
因此当特征之间存在共线性时,X不可逆, X T X X^T X XTX也不可逆,那么正规方程 w = ( X T X ) − 1 X T y w=(X^{T}X)^{-1}X^{T}y w=(XTX)1XTy就不能使用,L2正则化,就是为了解决这个问题而诞生的,即令 w = ( X T X + λ ∗ I ) − 1 X T y w=(X^TX+λ*I)^{-1}X^Ty w=(XTX+λI)1XTyI是单位矩阵,λ是超参数
在线性回归的损失函数中,添加一个L2正则化项,即为岭回归的损失函数,为
在这里插入图片描述
对J2(θ)求导
在这里插入图片描述

其中,J1(θ)是没加L2正则化项时的损失函数,即

在这里插入图片描述
w = ( X T X + λ ∗ I ) − 1 X T y w=(X^TX+λ*I)^{-1}X^Ty w=(XTX+λI)1XTy时,
在这里插入图片描述
具体过程详见这篇知乎文章:https://zhuanlan.zhihu.com/p/32488420

2 Lasso回归

岭回归是在构建损失函数的时候,在普通线性回归损失函数的基础上加上L2正则化项,如果加的不是L2正则化项,而是L1正则化,那么就是Lasso回归。

关于L1正则化,详见这篇知乎文章:https://zhuanlan.zhihu.com/p/38309692
Lasso回归的目标函数为:
在这里插入图片描述

3 多任务Lasso回归

先说一下何为多任务,如果要用同一条数据做多个预测,比如用一个人的身高、体重预测他的体脂率、血压、血糖等信息,这就是多任务,说白了,就是目标值不止一个。

而多任务Lasso回归,其实就是对每个目标值都用Lasso回归进行预测。
多任务Lasso回归的目标函数:
在这里插入图片描述
这里Fro表示弗伦尼乌斯范数
在这里插入图片描述
正则化项为L1和L2的混合范数
在这里插入图片描述

4 弹性网络

弹性网络的正则化项综合了L1和L2范数,其目标函数为

在这里插入图片描述

5 随机梯度下降

随机梯度下降,在每次迭代参数时,都只使用一个样本,而非遍历所有训练样本,这样与普通梯度下降比起来,计算量就会小很多,从而使得参数快速接近局部最优解。但随机梯度下降仅以当前样本点进行梯度更新,通常无法达到真正局部最优解,只能比较接近,属于用精度换效率。

sklearn.linear_model.SGDRegressor()

在这里插入图片描述

可以通过参数,指定正则化方法(L1,L2,elasticnet等),学习率是常数还是衰减(如果要指定学习率是多少,那么learning_rate=‘constant’ 而非具体的值,eta0才是指定具体的值),是否早停等。关于参数的详细说明,请查阅scikit-learn官方文档(这个还是去读源文档吧,一个个介绍参数真的太花时间,但这个方法中不少参数确实有必要看)。

关于在函数中出现参数 * ,可以阅读这个问题下的回答:https://www.zhihu.com/question/287097169

6 回归模型的评价标准

在回归问题中,不能再像分类一样用准确率来估计误差,sklearn中自带的评价标准为R^2

如果不建模,直接用训练集目标值的平均值进行估计(暴力估计),假如 y_i 为真实值,那么误差平方和为
在这里插入图片描述
建模之后,根据模型的预测值来估计,那么误差平方和为
在这里插入图片描述
我们做优化/升级的时候,喜欢使用“经过优化(升级、改造)后,成本(效率)仅仅相当于原来的50%,30%”之类的术语,其实就是优化后的成本除以优化前的。我们把这种思路引入到模型评价上来,使用模型估计的误差,除以暴力估计的误差,那么也就可以用前面的术语了:建模后的误差为原来的百分之几了。
在这里插入图片描述

如果要计算建模后的误差相对于建模前降低了多少,那么可以用1减上面的数,得到:

在这里插入图片描述
此即为R^2,即
在这里插入图片描述
当 R^2 越大,表示回归效果越好。

为何不用均方差来作为模型评价的标准,可以看这篇知乎专栏:https://zhuanlan.zhihu.com/p/158817889?utm_source=wechat_session

在sklearn的线性回归模型中,默认使用 R^2 作为模型的评价标准

在这里插入图片描述
在这里插入图片描述
可以看到,使用线性回归模型自带的score方法得到的分数,和自己按照 R^2 定义计算得到的,完全一样

7 岭回归交叉验证

在这里插入图片描述

alpha是正则化力度的候选值

np.logspace()是获取一个在log尺度上等距分布的序列,即等比数列

在这里插入图片描述

转载地址:http://hnqh.baihongyu.com/

你可能感兴趣的文章
MySQL与Informix数据库中的同义表创建:深入解析与比较
查看>>
mysql与mem_细说 MySQL 之 MEM_ROOT
查看>>
MySQL与Oracle的数据迁移注意事项,另附转换工具链接
查看>>
mysql丢失更新问题
查看>>
MySQL两千万数据优化&迁移
查看>>
MySql中 delimiter 详解
查看>>
MYSQL中 find_in_set() 函数用法详解
查看>>
MySQL中auto_increment有什么作用?(IT枫斗者)
查看>>
MySQL中B+Tree索引原理
查看>>
mysql中cast() 和convert()的用法讲解
查看>>
mysql中datetime与timestamp类型有什么区别
查看>>
MySQL中DQL语言的执行顺序
查看>>
mysql中floor函数的作用是什么?
查看>>
MySQL中group by 与 order by 一起使用排序问题
查看>>
mysql中having的用法
查看>>
MySQL中interactive_timeout和wait_timeout的区别
查看>>
mysql中int、bigint、smallint 和 tinyint的区别、char和varchar的区别详细介绍
查看>>
mysql中json_extract的使用方法
查看>>
mysql中json_extract的使用方法
查看>>
mysql中kill掉所有锁表的进程
查看>>