一、普通线性回归
from sklearn.linear_model import LinearRegression
原理:假定输人数据存放在矩阵X中,而回归系数存放在向量W中。那么对于给定的数据X1, 预测结果将会通过Y=X*W给出。现在的问题是,手里有一些X和对应的Y,怎样才能找到W呢?一个常用的方法就是找出使误差最小的W。这里的误差是指预测Y值和真实Y值之间的差值,使用该误差的简单累加将使得正差值和负差值相互抵消,所以我 们采用平方误差。
最小二乘法: 平方误差
对W求导,当导数为零时,平方误差最小,此时W等于:
二、岭回归
from sklearn.linear_model import Ridge
如果数据的特征比样本点还多应该怎么办?是否还可以使用线性回归和之前的方法来做预测?答案是否定的,即不能再使用前面介绍的方法。这是因为输入数据的矩阵X不是满秩矩阵。非满秩矩阵在求逆时会出现问题。为了解决这个问题,统计学家引入了岭回归(ridge regression)的概念
原理:岭回归是加了二阶正则项()的最小二乘,简单来说,岭回归就是在矩阵
上加入一个
从而使得矩阵非奇异,进而能对
求逆。其中矩阵
是一个m*m的单位矩阵,对角线上元素为1,其他元素为0。而
是一个用户定义的数值,在这种情况下,回归系数的计算公式将变成:
缩减 : 岭回归最先用来处理特征数多于样本数的情况,现在也用于在估计中加入偏差,从而得到更好的估计,这里通过引入来限制了所有w之和,通过引入该惩罚项,能减少不重要的参数,这个技术在统计学中也叫缩减
作用:1.岭回归可以解决特征数量比样本量多的问题
2.岭回归作为一种缩减算法可以判断哪些特征重要或者不重要,有点类似于降维的效果
3.缩减算法可以看作是对一个模型增加偏差的同时减少方差
适用范围:1.数据点少于变量个数
2.变量间存在共线性(最小二乘回归得到的系数不稳定,方差很大)
三、lasso回归
from sklearn.linear_model import Lasso
原理:对于参数w增加一个限定条件,能到达和岭回归一样的效果: 在
足够小的 时候,一些系数会因此被迫缩减到0