任何数据都存在噪声和多重共线性
如何解决多重共线性 ?
1.算法角度(正则化)
2.数据角度(最有效果)
岭回归与Lasso回归的出现是为了解决线性回归出现的过拟合(数据间高度线性相关)以及在通过正规方程方法求解θ的过程中出现的x转置乘以x不可逆这两类问题的,这两种回归均通过在损失函数中引入正则化项来达到目的,具体三者的损失函数对比见下图:
其中λ称为正则化参数,如果λ选取过大,会把所有参数θ均最小化,造成欠拟合,如果λ选取过小,会导致对过拟合问题解决不当,因此λ的选取是一个技术活。
岭回归与Lasso回归最大的区别在于岭回归引入的是L2范数惩罚项,Lasso回归引入的是L1范数惩罚项,Lasso回归能够使得损失函数中的许多θ均变成0,这点要优于岭回归,因为岭回归是要所有的θ均存在的,这样计算量Lasso回归将远远小于岭回归。
一、岭回归
1.1 回归系数计算公式:
其中λ为正则系数,I为单位矩阵。
1.2 优点
缩减方法可以去掉不重要的参数,因此能更好地理解数据。此外,与简单的线性回归相比,缩减法能取得更好的预测效果。.岭回归作为一种缩减算法可以判断哪些特征重要或者不重要,有点类似于降维的效果
岭回归是加了二阶正则项的最小二乘,主要适用于过拟合严重或各变量之间存在多重共线性的时候,岭回归是有bias的,这里的bias是为了让variance更小。
缩减算法可以看作是对一个模型增加偏差的同时减少方差
1.3 应用场景
岭回归可以解决特征数量比样本量多的问题
变量间存在共线性(最小二乘回归得到的系数不稳定,方差很大)
应用场景就是处理高度相关的数据
1.4 简单应用
对糖尿病数据集进行岭回归建模
from pandas import Series,DataFrame
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
diabetes = load_diabetes()
train = diabetes.data
target = diabetes.target
feature_names = diabetes.feature_names
X_train,X_test,y_train,y_test