前言:本文主要介绍多重共线性、岭回归和Lasso的概念、公式推导及sklearn应用,使用的数据集为波士顿房价数据集、加利福尼亚房价数据集。
目录
如何在sklearn中使用linear_model.Ridge岭回归?(案例:波士顿房价数据集)
如何在sklearn中使用linear_model.RidgeCV,带交叉验证的岭回归?(案例:波士顿房价数据集)
如何理解Lasso,以及用Lasso进行特征选择?(案例:加利福尼亚房价数据集)
如何在sklearn中使用linear_model.LassoCV,带交叉验证的Lasso?(案例:加利福尼亚房价数据集)
如何从行列式理解多重共线性?
之前提及使用最小二乘法求解多元线性回归的损失函数,公式推导中需要左乘,但是没有讨论是否存在。
,为行列式,作为分母,那么等式成立的条件自然是不能等于0。
如何计算矩阵的行列式?
3条↘对角线元素相乘,然后相加,依次减去3条↙对角线元素相乘。
任何矩阵都有行列式,行列式通过初等行/列变换后大小不变,所以可以将行列式转换成梯形行列式,从而直接计算对角线元素之积即可求得行列式。
行列式不为0的条件为:当行列式通过变幻,变为对角矩阵时,对角线上的元素不为0。这种满足行列式变换后对角线元素不为0的矩阵,称为“满秩矩阵”。
可以通过numpy计算矩阵是否满秩
np.trace(array) # 计算矩阵对角线元素之和
np.linalg.det(array) # 计算矩阵的行列式,为0说明不满秩
如果,分母出现“除0错误”,称为特征存在精确相关关系;如果趋近于0,趋近于,称为特征存在高度相关关系。以上两种情况下,w都无法计算得出结果,统称为存在多重共线性。
多重共线性属于相关性的一种,当特征存在高度相关、精确相关时,则称特征存在多重共线性。
多重共线性的解决方案有如下思路:
- 使用统计学的先验思路,对特征进行相关性检验或降维;计算量增加;
- 使用前向逐步回归法,筛选对模型高度相关的特征;计算量增大;
- 对线性回归进行改进,使用岭回归、Lasso、弹性网等方式改进。
如何理解使用岭回归解决多重共线性?
岭回归解决多重共线性的办法为:在多元线性回归的损失函数上加上正则项:w的L2范式乘以正则化系数α,公式为:
岭回归解决多重共线性的原理:通过对对角线加上一个α,使变成满秩矩阵,从而消除多重共线性。其公式推导情况如下:
?没懂的地方:为什么上面是Xw-y,下面是y-Xw?