Sklearn.linear_model

线性回归场景

  • 根据 𝐘=𝐗𝜃 得到输出向量𝐘和输入特征𝐗之间的线性关系,求出线性回归系数𝜃。
    其中𝐘的维度为mx1,𝐗的维度为mxn,而𝜃的维度为nx1。m代表样本个数,n代表样本特征的维度。

  • 定义一个损失函数,一个极小化损失函数的优化方法,以及一个验证算法的方法。损失函数的不同,损失函数的优化方法的不同,验证方法的不同,就形成了不同的线性回归算法。

1.LinearRegression

  • 损失函数: J ( θ ) = 1 2 ( X θ − Y ) T ( X θ − Y ) J(\mathbf\theta) = \frac{1}{2}(\mathbf{X\theta} - \mathbf{Y})^T(\mathbf{X\theta} - \mathbf{Y}) J(θ)=21(XθY)T(XθY)

  • 优化方法:最小二乘法 θ = ( X T X ) − 1 X T Y \mathbf{\theta} = (\mathbf{X^{T}X})^{-1}\mathbf{X^{T}Y} θ=(XTX)1XTY

  • 验证方法:
    无,需要我们自己把数据集分成训练集和测试集,然后训练优化。

  • 使用场景:
    一般来说,只要我们觉得数据有线性关系,LinearRegression类是我们的首先。

2.Ridge

  • 损失函数: J ( θ ) = 1 2 ( X θ − Y ) T ( X θ − Y ) + 1 2 α ∣ ∣ θ ∣ ∣ 2 2 J(\mathbf\theta) = \frac{1}{2}(\mathbf{X\theta} - \mathbf{Y})^T(\mathbf{X\theta} - \mathbf{Y}) + \frac{1}{2}\alpha||\theta||_2^2 J(θ)=21(XθY)T(XθY)+21αθ22

  • 优化方法:最小二乘法 θ = ( X T X + α E ) − 1 X T Y \mathbf{\theta = (X^TX + \alpha E)^{-1}X^TY} θ=(XTX+αE)1XTY
    其中E为单位矩阵。

  • 验证方法:
    无,需要我们自己把数据集分成训练集和测试集,设置好超参数𝛼。然后训练优化。

3.RidgeCV

  • 验证方法:
    RidgeCV类对超参数𝛼使用交叉验证来选择一个合适的𝛼。在初始化RidgeCV类时候,传一组备选的𝛼值,10个,100个都可以,RidgeCV类会选择一个合适的𝛼。

  • 使用场景:
    觉得数据有线性关系,用LinearRegression类拟合的不是特别好,需要正则化,用RidgeCV来跑Ridge回归。但如果输入特征的维度很高,而且是稀疏线性关系的话,RidgeCV类就不合适了。

4.Lasso

  • 损失函数: J ( θ ) = 1 2 m ( X θ − Y ) T ( X θ − Y ) + α ∣ ∣ θ ∣ ∣ 1 J(\mathbf\theta) = \frac{1}{2m}(\mathbf{X\theta} - \mathbf{Y})^T(\mathbf{X\theta} - \mathbf{Y}) + \alpha||\theta||_1 J(θ)=2m1(XθY)T(XθY)+αθ1

  • 优化方法:
    Lasso类采用的是坐标轴下降法,后面讲到的LassoLars类采用的是最小角回归法

  • 验证方法:
    无,需要自己设置好超参数𝛼,然后训练优化。

5.LassoCV

  • 验证方法:
    LassoCV类对超参数𝛼使用交叉验证,来选择一个合适的𝛼。在初始化LassoCV类时候,可以传一组备选的𝛼值,10个,100个都可以,LassoCV类会选择一个合适的𝛼。
  • 使用场景:
    对于高维的特征数据,尤其线性关系是稀疏的(绝大多数的特征和样本输出没有关系),或者是要在一堆特征里面找出主要的特征。用LassoCV类来跑Lasso回归。

6.LassoLars

  • 优化方法:
    LassoLars类采用的是最小角回归法,前面讲到的Lasso类采用的是坐标轴下降法。

7.LassoLarsCV

  • 验证方法:
    LassoLarsCV类对超参数𝛼使用交叉验证,来选择一个合适的𝛼。在初始化LassoLarsCV类时候,可以传一组备选的𝛼值,10个,100个都可以,LassoLarsCV类会选择一个合适的𝛼。
  • 使用场景:
    场景一:如果我们想探索超参数𝛼更多的相关值的话,由于最小角回归可以看到回归路径,此时用LassoLarsCV比较好。
    场景二: 如果我们的样本数远小于样本特征数的话,用LassoLarsCV也比LassoCV好。
    其余场景最好用LassoCV。

8.LassoLarsIC

  • 验证方法:
    不需要指定备选的𝛼值,由LassoLarsIC类基于 Akaike信息准则(AIC)和贝叶斯信息准则(BIC)自己选择。LassoLarsIC类可以一轮找到超参数𝛼,而用K折交叉验证需要K+1轮才能找到。相比之下LassoLarsIC类寻找𝛼更快。
  • 使用场景:
    由于使用了AIC和BIC准则,数据必须满足一定的条件才能用LassoLarsIC类。这样的准则需要对解的自由度做一个适当的估计。该估计是来自大样本(渐近结果),并假设该模型是正确的(即这些数据确实是由假设的模型产生的)。
    当待求解的问题的条件很差的时候(比如特征个数大于样本数量的时候),这些准则就会有崩溃的风险。所以除非知道数据是来自一个模型确定的大样本,才能用LassoLarsIC。而实际上得到的数据大部分都不能满足这个要求。

9.ElasticNet

  • 损失函数: J ( θ ) = 1 2 m ( X θ − Y ) T ( X θ − Y ) + α ρ ∣ ∣ θ ∣ ∣ 1 + α ( 1 − ρ ) 2 ∣ ∣ θ ∣ ∣ 2 2 J(\mathbf\theta) = \frac{1}{2m}(\mathbf{X\theta} - \mathbf{Y})^T(\mathbf{X\theta} - \mathbf{Y}) + \alpha\rho||\theta||_1 + \frac{\alpha(1-\rho)}{2}||\theta||_2^2 J(θ)=2m1(XθY)T(XθY)+αρθ1+2α(1ρ)θ22
    其中𝛼为正则化超参数,𝜌为范数权重超参数。

  • 优化方法:
    ElasticNet回归损失函数的优化方法常用的有两种,坐标轴下降法和最小角回归法。ElasticNet类采用的是坐标轴下降法。

  • 验证方法:
    无。需要自己设置好超参数𝛼和𝜌,然后训练优化。

10.ElasticNetCV

  • 验证方法:
    ElasticNetCV类对超参数𝛼和 𝜌使用交叉验证,来选择合适的𝛼和𝜌。在初始化ElasticNetCV类时候,传入一组备选的𝛼值和𝜌,10个,100个都可以。ElasticNetCV类会选择一个合适的𝛼和𝜌。
  • ElasticNetCV类用在发现Lasso回归太过(太多特征被稀疏为0),而用Ridge回归正则化又不够(回归系数衰减的太慢)的时候。一般不推荐直接上ElasticNetCV。

11.OrthogonalMatchingPursuit(OMP)

  • 损失函数:
    OMP算法和普通的线性回归损失函数的区别是增加了一个限制项,来限制回归系数中非0元素的最大个数 (𝜃 的L0范数)。 J ( θ ) = 1 2 ( X θ − Y ) T ( X θ − Y ) J(\mathbf\theta) = \frac{1}{2}(\mathbf{X\theta} - \mathbf{Y})^T(\mathbf{X\theta} - \mathbf{Y}) J(θ)=21(XθY)T(XθY)

    s u b j e c t    t o    ∣ ∣ θ ∣ ∣ 0 ≤ n n o n − z e r o − c o e f s subject\;to \;||\theta||_0 \leq n_{non-zero-coefs} subjecttoθ0nnonzerocoefs

  • 优化方法:   
    使用前向选择算法来优化损失函数。最小角回归算法的缩水版,虽然精度不如最小角回归算法,但运算速度很快。

  • 验证方法:
    无。需要自己选择限制参数𝑛𝑛𝑜𝑛−𝑧𝑒𝑟𝑜−𝑐𝑜𝑒𝑓𝑠,然后训练优化。

12.OrthogonalMatchingPursuitCV

  • 验证方法:
    使用交叉验证,在S折交叉验证中以MSE最小为标准来选择最好的𝑛𝑛𝑜𝑛−𝑧𝑒𝑟𝑜−𝑐𝑜𝑒𝑓𝑠。

  • 使用场景:
    通常用在稀疏回归系数的特征选择上,不过由于它的损失函数优化方法是前向选择算法,精确度较低,一般情况不是特别推荐用,用LassoCV就够,除非你对稀疏回归系数的精确个数很在意,那可以考虑用OrthogonalMatchingPursuitCV。

13.MultiTaskLasso

  • 指多个线性回归模型共享样本特征,但是有不同的回归系数和特征输出。
  • 具体的线性回归模型是𝐘=𝐗𝐖。其中X是mxn维度的矩阵。W为nxk维度的矩阵,Y为mxk维度的矩阵。m为样本个数,n为样本特征,而k就代表多个回归模型的个数。
  • 所谓的“MultiTask”这里其实就是指k个线性回归的模型一起去拟合。
  • 损失函数: J ( W ) = 1 2 m ( ∣ ∣ X W − Y ∣ ∣ ) F r o 2 + α ∣ ∣ W ∣ ∣ 21 J(\mathbf{W}) = \frac{1}{2m}\mathbf{(||XW-Y||)_{Fro}^2} + \alpha||\mathbf{W}||_{21} J(W)=2m1(XWY)Fro2+αW21
    其中, (||𝐗𝐖−𝐘||)𝐅𝐫𝐨是𝐘=𝐗𝐖的Frobenius范数,||𝐖||21代表W各列的根平方和之和。
  • 优化方法:   
    MultiTaskLasso类使用坐标轴下降法来优化损失函数。
  • 验证方法:
    无。需要自己设置好超参数𝛼,然后训练优化。

14.MultiTaskLassoCV

  • 验证方法:
    MultiTaskLassoCV类会根据传入备选的𝛼值帮我们选择一个合适的𝛼。

  • 使用场景:
    MultiTaskLassoCV是多个回归模型需要一起共享样本特征一起拟合时候的首选。

15.MultiTaskElasticNet

  • 损失函数:
    J ( W ) = 1 2 m ( ∣ ∣ X W − Y ∣ ∣ ) F r o 2 + α ρ ∣ ∣ W ∣ ∣ 21 + α ( 1 − ρ ) 2 ( ∣ ∣ W ∣ ∣ ) F r o 2 J(\mathbf{W}) = \frac{1}{2m}\mathbf{(||XW-Y||)_{Fro}^2} + \alpha\rho||\mathbf{W}||_{21} + \frac{\alpha(1-\rho)}{2}\mathbf{(||W||)_{Fro}^2} J(W)=2m1(XWY)Fro2+αρW21+2α(1ρ)(W)Fro2
    其中, (||𝐗𝐖−𝐘||)𝐅𝐫𝐨是𝐘=𝐗𝐖的Frobenius范数,||𝐖||21代表W各列的根平方和之和。
  • 优化方法:   
    MultiTaskElasticNet类使用坐标轴下降法来优化损失函数。
  • 验证方法:
    无。需要自己设置好超参数𝛼,然后训练优化。

16.MultiTaskElasticNetCV

  • 验证方法:
    MultiTaskLassoCV类会根据传入备选的𝛼值和 𝜌帮我们选择一个合适的𝛼和 𝜌。
  • 使用场景:
    多个回归模型需要一起共享样本特征一起拟合时候的两个备选之一,首选是MultiTaskLassoCV。如果发现用MultiTaskLassoCV时回归系数衰减的太快,那么可以考虑用MultiTaskElasticNetCV。

17.BayesianRidge

  • 贝叶斯回归模型假设先验概率,似然函数和后验概率都是正态分布。先验概率是假设模型输出Y是符合均值为𝑋𝜃的正态分布,正则化参数𝛼被看作是一个需要从数据中估计得到的随机变量。回归系数𝜃的先验分布规律为球形正态分布,超参数为𝜆。我们需要通过最大化边际似然函数来估计超参数𝛼和𝜆,以及回归系数𝜃。

  • 使用场景:
    如果数据有很多缺失或者矛盾的病态数据,可以考虑BayesianRidge类,它对病态数据鲁棒性很高,也不用交叉验证选择超参数。但是极大化似然函数的推断过程比较耗时,一般情况不推荐使用。

18.ARDRegression

  • ARDRegression和BayesianRidge唯一的区别在于对回归系数𝜃的先验分布假设。

    BayesianRidge假设𝜃的先验分布规律为球形正态分布
    而ARDRegression丢掉了BayesianRidge中的球形高斯的假设,采用与坐标轴平行的椭圆形高斯分布。
    这样对应的超参数𝜆有n个维度,各不相同。而BayesianRidge中球形分布的𝜃对应的𝜆只有一个。
    ARDRegression也是通过最大化边际似然函数来估计超参数𝛼和𝜆向量,以及回归系数𝜃。

  • 使用场景:
    如果数据有很多缺失或者矛盾的病态数据,发现BayesianRidge类拟合不好,可以换ARDRegression试一试。因为ARDRegression对回归系数先验分布的假设没有BayesianRidge严格,某些时候会比BayesianRidge产生更好的后验结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值