线性回归的模型函数和损失函数
线性回归的问题
有个样本,每个样本对应于维特征和一个结果输出:
对于一个新的 ,它所对应的是多少呢? 如果这个问题里面的是连续的,则是一个回归问题,否则是一个分类问题。
模型
对于维特征的样本数据,如果决定使用线性回归,那么对应的模型是这样的:
其中为模型参数,为每个样本的个特征值。
增加一个特征(简化表示),这样:
用矩阵形式表达更加简洁:
为 的向量,为的向量,有个代数法的模型参数。为 维的矩阵,代表样本的个数,代表样本的特征数。
损失函数
得到了模型,需要求出需要的损失函数,一般线性回归我们用均方误差作为损失函数,损失函数的代数法表示:
用矩阵形式表达损失函数:
线性回归算法
对于线性回归的损失函数,常用的有两种方法来求损失函数最小化时候的参数:
如果采用梯度下降法,则迭代公式是这样的:,若干次迭代后,可以得到最终的的结果;
如果采用最小二乘法,则的结果公式:
当然还有其他的常用算法,比如牛顿法和拟牛顿法等等
线性回归的推广:多项式回归
线性模型,如果这里不仅仅是的一次方,比如增加二次方,那么模型就变成了多项式回归。
一个只有两个特征的二次方多项式回归的模型:
令,这样就得到了下式:
又重新回到了线性回归,这是一个五元线性回归,可以用线性回归的方法来完成算法。对于每个二元样本特征 ,得到一个五元样本特征,通过这个改进的五元样本特征,重新把不是线性回归的函数变回线性回归。
线性回归的推广:广义线性回归
这里对于做推广,比如输出不满足和的线性关系,但是和满足线性关系,模型函数如下:
这样对与每个样本的输入,用去对应, 从而仍然可以用线性回归的算法去处理这个问题。
把 一般化,假设这个函数是单调可微函数,则一般化的广义线性回归形式是:
这个函数通常称为联系函数
线性回归的正则化
为了防止模型的过拟合,在建立线性模型的时候经常需要加入正则化项,一般有 正则化和正则化。
对于同样的训练集,模型越复杂在训练集上误差越小,但泛化能力越差,越容易过拟合。正则化是通过减小模型复杂度(假设空间复杂度)的方式来降低泛化误差(防止过拟合)的一种方式。那么怎么衡量模型复杂度呢?假设空间中包含的假设越多越复杂。对于线性模型来说:
- 比要复杂,因为前一个参数是3个维度的,后一个只有2个维度。
- 对于同一个来说,参数定义域越大参模型越复杂
正则化就是通过限制参数范围的方式来减小模型复杂度的,是正则化的一类方法
假设模型为,为了防止过拟合,可以对参数的取值范围进行约束,例如: 通过距离对参数进行约束,所以这种正则化叫 正则化。如果使用 距离进行约束,那么就变为,这就是正则化。此时优化问题由无约束变为有约束优化,使用拉格朗日乘子法把约束融合进去并进行一些变换后就得到了正则化后的损失函数。
频率派的解释
把两个参数在平面坐标上表示,整个平面表示无约束的假设空间。那么 约束 是一个正方形,四个角都在坐标轴上,也就是说把假设空间的范围限制在了一个正方形内,但我们不知道的那个最好的假设 是不是位于正方形内,如果位于正方形以外,优化算法使得我们在这个正方形内寻找一个最接近 的点,很可能位于正方形的角上,此时某个坐标轴即为0,对应着某个特征的参数为0。
想象一下,我们拿着一个正方形的盒子,盒子里装进去一个小球,除非我们把盒子端的很平,不然小球总会滚到某个角落。这里地球引力的方向就是最优化的方向,盒子就是我们做出的约束,这个比喻也可以看出, 是比较容易产生0参数的。同理可以得出正则化约束为一个圆,就不那么容易使参数恰好为0了。
贝叶斯派的解释,就是高斯先验和拉普拉斯先验
L1正则化
线性回归的 正则化通常称为Lasso回归,它和一般线性回归的区别是在损失函数上增加了一个正则化的项, 正则化的项有一个常数系数来调节损失函数的均方差项和正则化项的权重,具体Lasso回归的损失函数表达式如下:
其中为样本个数, 为常数系数,需要进行调优。 为范数。
Lasso回归可以使得一些特征的系数变小,甚至还是一些绝对值较小的系数直接变为0,增强模型的泛化能力,特别适用于参数数目缩减与参数的选择,因而用来估计稀疏参数的线性模型(稀疏线性关系的意思就是绝大多数的特征和样本输出没有关系,线性拟合后这些特征维度的系数会全部为0,只有少量和输出相关的特征的回归系数不为0)。由于Lasso 回归产生稀疏模型,因此可以用于执行特征选择。
但是Lasso回归有一个很大的问题,就是它的损失函数不是连续可导的,由于 范数用的是绝对值之和,导致损失函数有不可导的点。也就是说,最小二乘法,梯度下降法,牛顿法与拟牛顿法对它统统失效了。那怎么才能求有这个 范数的损失函数极小值呢?
Lasso回归的求解办法一般有坐标轴下降法(coordinate descent)和最小角回归法( Least Angle Regression)
坐标轴下降法
坐标轴下降法顾名思义,是沿着坐标轴的方向去下降,和梯度下降不同。梯度下降是沿着梯度的负方向下降。不过梯度下降和坐标轴下降的共性就都是迭代法,通过启发式的方式一步步迭代求解函数的最小值。
坐标轴下降法的数学依据:一个可微的凸函数,其中是的向量,即有个维度。如果在某一点,在每一个坐标轴上都是最小值,那么就是一个全局的最小值。
于是优化目标就是在的个坐标轴上(或者说向量的方向上)对损失函数做迭代的下降,当所有的坐标轴上的 都达到收敛时,损失函数最小,此时的即为要求的结果。
算法过程:
- 首先,把向量随机取一个初值,记为。括号里面的数字代表迭代的轮数,初始轮数为0
- 对于第轮的迭代。从开始,到为止,依次求。 的表达式如下:
也就是说是使最小化时候的的值。此时只有是变量,其余均为常量,因此最小值容易通过求导或者一维搜索求得。
例如在第轮, 向量的个维度的迭代式:
...........................................................................................
- 检查向量和向量在各个维度上的变化情况,如果在所有维度上变化都足够小,那么即为最终结果,否则转入2,继续第轮的迭代。
和梯度下降比较:
- 坐标轴下降法在每次迭代中在当前点处沿一个坐标方向进行一维搜索 ,固定其他的坐标方向,找到一个函数的局部极小值。而梯度下降总是沿着梯度的负方向求函数的局部最小值。
- 坐标轴下降优化方法是一种非梯度优化算法。在整个过程中依次循环使用不同的坐标方向进行迭代,一个周期的一维搜索迭代过程相当于一个梯度下降的迭代。
- 梯度下降是利用目标函数的导数来确定搜索方向的,该梯度方向可能不与任何坐标轴平行。而坐标轴下降法法是利用当前坐标方向进行搜索,不需要求目标函数的导数,只按照某一坐标方向进行搜索最小值。
- 两者都是迭代方法,且每一轮迭代,都需要的计算量(为样本数,为系数向量的维度)
最小角回归法
前向选择(Forward Selection)算法
前向选择算法的原理是是一种典型的贪心算法。要解决的问题是对于: 这样的线性关系,如何求解系数向量的问题。其中为 的向量, 为的矩阵, 为 的向量。 为样本数量, 为特征维度。
把矩阵看做个的向量,在的变量 中,选择和目标最为接近(余弦距离最大)的一个变量,用来逼近,得到下式:
即:是在上的投影。那么,可以定义残差(residual):。由于是投影,所以很容易知道是正交的。再以为新的因变量,去掉后,剩下的自变量的集合 为新的自变量集合,重复刚才投影和残差的操作,直到残差为0,或者所有的自变量都用完了,才停止算法。
当只有2维时,如上图,和最接近的是,首先在上面投影,残差如上图长虚线。此时 模拟了, 模拟了(仅仅模拟了一个维度)。接着发现最接近的是,此时用残差接着在 投影,残差如图中短虚线。由于没有其他自变量了,此时模拟了,对应的模拟了两个维度的即为最终结果,此处计算设计较多矩阵运算,这里不讨论。
此算法对每个变量只需要执行一次操作,效率高,速度快。但也容易看出,当自变量不是正交的时候,由于每次都是在做投影,所有算法只能给出一个局部近似解。因此,这个简单的算法太粗糙,还不能直接用于Lasso回归。
前向梯度(Forward Stagewise)算法
前向梯度算法和前向选择算法有类似的地方,也是在变量 中,选择和目标最为接近(余弦距离最大)的一个变量 ,用来逼近,但是前向梯度算法不是粗暴的用投影,而是每次在最为接近的自变量的方向移动一小步,然后再看残差和哪个 最为接近。此时我们也不会把 去除,因为我们只是前进了一小步,有可能下面最接近的自变量还是 。如此进行下去,直到残差减小到足够小,算法停止。
当只有2维时,如上图,和最接近的是,首先在上面走一小段距离,此处 为一个较小的常量,发现此时的残差还是和最接近。那么接着沿走,一直走到发现残差不是和最接近,而是和最接近,此时残差如上图长虚线。接着沿着走一小步,发现残差此时又和最接近,那么开始沿着走,走完一步后发现残差为0,那么算法停止。此时 由刚才所有的所有步相加而模拟,对应的算出的系数即为最终结果。此处计算设计较多矩阵运算,这里不讨论。
当算法在很小的时候,可以很精确的给出最优解,当然,其计算的迭代次数也是大大的增加。和前向选择算法相比,前向梯度算法更加精确,但是更加复杂。
最小角回归(Least Angle Regression, LARS)算法
最小角回归法对前向梯度算法和前向选择算法做了折中,综合前向梯度算法和前向选择算法的优点,保留了前向梯度算法一定程度的精确性,同时简化了前向梯度算法一步步迭代的过程。具体算法是这样的:
首先,还是找到与因变量最接近或者相关度最高的自变量,使用类似于前向梯度算法中的残差计算方法,得到新的目标,此时不用和前向梯度算法一样小步小步的走。而是直接向前走直到出现一个,使得和的相关度和与的相关度是一样的,此时残差就在和的角平分线方向上,此时我们开始沿着这个残差角平分线走,直到出现第三个特征和的相关度足够大的时候,即到当前残差的相关度和, 与的一样。将其也叫入到的逼近特征集合中,并用的逼近特征集合的共同角分线,作为新的逼近方向。以此循环,直到足够的小,或者说所有的变量都已经取完了,算法停止。此时对应的系数即为最终结果。
当只有2维时,如上图,和 最接近的是 ,首先在 上面走一段距离,一直到残差在 和 的角平分线上,此时沿着角平分线走,直到残差最够小时停止,此时对应的系数 即为最终结果。此处计算设计较多矩阵运算,这里不讨论。
最小角回归法是一个适用于高维数据的回归算法,其主要的优点有:
- 特别适合于特征维度 远高于样本数 的情况
- 算法的最坏计算复杂度和最小二乘法类似,但是其计算速度几乎和前向选择算法一样
- 可以产生分段线性结果的完整路径,这在模型的交叉验证中极为有用
主要的缺点是:
由于LARS的迭代方向是根据目标的残差而定,所以该算法对样本的噪声极为敏感。
Lasso回归是在ridge回归的基础上发展起来的,如果模型的特征非常多,需要压缩,那么Lasso回归是很好的选择。一般的情况下,普通的线性回归模型就够了。这里对最小角回归法怎么求具体的参数值没有提及,具体的算计推导可以参考Bradley Efron的论文《Least Angle Regression》。
L2正则化
线性回归的正则化通常称为
Ridge
回归,它和一般线性回归的区别是在损失函数上增加了一个正则化的项,和Lasso
回归的区别是Ridge回归的正则化项是 范数,而Lasso回归的正则化项是范数。具体Ridge回归的损失函数表达式如下:其中为常数系数,需要进行调优。 为L2范数。
Ridge回归在不抛弃任何一个特征的情况下,缩小了回归系数,使得模型相对而言比较的稳定,但和Lasso回归比,这会使得模型的特征留的特别多,模型解释性差。
正则化要比 正则化要更加的严厉,惩罚也更加的重。所以会出现同样的正则化系数C,范数会让绝对值较小的系数直接变为0,则 范数却能保留绝大部分的回归系数,这里的解释性差只是说 正则化更容易突出主要的模型特征,因为次要的特征大部分都系数为0了。而 的绝大部分特征都有系数,可能较难抓住主要的特征部分。这尤其出现在特征数量在成百上千的时候。
Ridge回归的求解比较简单,一般用最小二乘法:
令的导数为0,得到:
整理即可得到最后的的结果: (为单位矩阵)
如果采用梯度下降法,则每一轮迭代的表达式: 为步长
一般线性回归是无偏估计,而Ridge回归是有偏估计?
无偏性意味着根据样本求得的参数期望等于总体分布的参数。
对于线性回归,无偏性意味着根据样本求得的回归系数的期望等于总体分布的回归系数
一般基于最小二乘法的回归都是无偏估计。这是因为:
两边取期望有:
由于最小二乘法的残差符合正态分布,所以这里
而Ridge回归
两边取期望有: 不等于
在测量误差服从高斯分布的情况下, 最小二乘法等价于极大似然估计
我们是想要获取到这样一个公式:
为了更好的计算,将这个公式进行一些变形,将后面加个,只不过这个等于1。所以可以变化成以下:
其次,以上求得的,只是一个预测的值,而不是真实的值,他们中间肯定会存在误差,因此会有以下公式:
要做的,就是找出最小的,使得预测值和真实值的差距最小
是存在正数,也存在负数,所以可以简单的把这个数据集,看做是一个服从均值为,方差为的正态分布。所以出现的概率为:
把代入到以上高斯分布的函数中,变成以下式子:
所以就成功的将误差的求解,转换成了求解了,应该求最大的时候的
似然函数求θ
似然函数的主要作用,就是在已经知道变量
x
的情况下,调整θ
,使得概率y
的值最大以抛硬币为例,假设拿到了一枚硬币,正常来说一枚均匀的硬币出现正反面的概率应该相同,都是 0.5 ,但是你不确定这枚材质、重量分布情况,需要判断其是否真的是均匀分布。所以,这里假设这枚硬币有 的概率会正面向上,有 的概率反面向上。
为了获得 的值,做了一个实验:将硬币抛 10 次,得到了一个正反序列 。这次实验满足二项分布,那么出现这个序列的概率为
到此为止,根据一次简单的二项分布实验,得到了一个关于 的函数,这实际上就是一个似然函数,当为0或者1时,对应的概率为0 ;而当 值为1/2时,对应的概率为1/1024 … …可以根据不同的 值,绘制出一条曲线,这个曲线就是的似然函数,而 y 轴表示出现这一现象的概率。
单纯对于这次实验来说,因为这一现象已经出现,那么可以相信,在似然函数最大值所在的 评估为目前认为的合理 值,也即是 0.7 。但是,不能得出最终的结论 。因为这里仅仅试验了一次,得到的样本太少,所以最终求出的最大似然值偏差较大,如果经过多次试验,扩充样本空间,则最终求得的最大似然估计可能将接近真实值 0.5
所以以上,可以得出求的似然函数为:
对数似然
累乘的方式不太方便求解
θ
,那么可以转换成对数似然,也就是将以上公式放到对数中,然后就可以转换成一个加法运算:化简后得出:
在这里不用去关心
log
后的值会改变,因为不是要去求极值,而是要去求极值点。想要把上面式子求得最大值,然后再获取最大值时候的
θ
。而上面式子中减号前面的一个常数项,所以只要把减号后面的变得最小即可,而减号后面的部分,可以把常数项去掉,因此得到最终的损失函数为:结论就出来了——线性回归的最小二乘是跟高斯误差模型相对应的。如果把误差模型换成其他的分布,最终得出来的就不一定是最小二乘了。
概率论的角度
- 最小二乘(Least Square)的解析解可以用Gaussian分布以及最大似然估计求得
- Ridge回归可以用Gaussian分布和最大后验估计解释
- LASSO回归可以用Lapace分布和最大后验估计解释
假设线性回归模型具有如下形式:
,误差。当前已知 ,如何求呢?
- 策略1:假设 ,即 ,那么用最大似然估计推导,公式就是最小二乘:
- 策略2:假设 ,那么用最大后验估计推导,公式就是Ridge回归:
- 策略3: 假设 ,同样采用后验估计推导,公式就是LASSO:
回归分析
回归分析的五个基本假设
- 线性 & 可加性
假设因变量为,自变量为 ,,则回归分析的默认假设为
线性性: 每变动一个单位, 相应变动 个单位,与的绝对数值大小无关
可加性: 对的影响是独立于其他自变量(如)的
- 误差项( )之间应相互独立
若不满足这一特性,模型具有自相关性(Autocorrelation)
- 自变量( )之间应相互独立
若不满足这一特性,模型具有多重共线性(Multicollinearity)。
- 误差项()的方差应为常数
若满足这一特性,模型具有同方差性(Homoskedasticity);若不满足,则为异方差性(Heteroskedasticity)。
- 误差项( )应呈正态分布
假设失效的影响
- 线性性 & 可加性
若变量之间的关系不满足线性性(如含有 , 项),或不满足可加性(如含有项),则模型将无法很好的描述变量之间的关系,极有可能导致很大的泛化误差(generalization error)
- 自相关性(Autocorrelation)
自相关性经常发生于时间序列数据集上,后项会受到前项的影响。当自相关性发生的时候,测得的标准差往往会偏小,进而会导致置信区间变窄
假设没有自相关性的情况下,自变量的系数为而标准差为。假设同一样本是有自相关性的,测得的标准差可能会只有,所以置信区间也会从 缩小到
- 多重共线性性(Multicollinearity)
如果发现本应相互独立的自变量们出现了一定程度(甚至高度)的相关性,那就很难得知自变量与因变量之间真正的关系了。 当多重共线性性出现的时候,变量之间的联动关系会导致我们测得的标准差偏大,置信区间变宽。 采用岭回归,Lasso回归或弹性网(ElasticNet)回归可以一定程度上减少方差,解决多重共线性性问题。因为这些方法,在最小二乘法的基础上,加入了一个与回归系数的模有关的惩罚项,可以收缩模型的系数。
岭回归:
Lasso回归:
弹性网回归:
- 异方差性(Heteroskedasticity)
异方差性的出现意味着误差项的方差不恒定,这常常出现在有异常值(Outlier)的数据集上,如果使用标准的回归模型,这些异常值的重要性往往被高估。在这种情况下,标准差和置信区间不一定会变大还是变小。
- 误差项( )应呈正态分布
如果误差项不呈正态分布,意味着置信区间会变得很不稳定,我们往往需要重点关注一些异常的点(误差较大但出现频率较高),来得到更好的模型。
假设检验方法
- 线性性 & 可加性
观察残差(Residual)/估计值(Fitted Value, )图
相较于图一(残差随机分布),图二的残差明显呈现了某种二次型趋势,说明回归模型没有抓住数据的某些非线性特征。
为了克服非线性性的影响,可以对自变量做一些非线性变换,如
- 自相关性(Autocorrelation)
观察杜宾-瓦特森统计量(Durbin-Watson Statistic)
该统计量的值落在 内,意味着没有自相关性,表明残差间有正的相关性,表明残差间有负的相关性。
经验上,如果或,则自相关性已经达到了需要示警的水平。如果事先给定了检验的方向(正/负相关性)和置信度,也可以根据假设检验的思路进行对应计算。
- 多重共线性性(Multicollinearity)
首先,可以通过观察自变量的散点图(Scatter Plot)来进行初步判断。
然后,针对可能存在多重共线性性的变量,我们观察其方差膨胀系数(VIF–Variance Inflation Factor)
假设回归模型为:
对于变量,可证得,其估计系数的方差为:
其中唯一与其它自变量有关的值是 ,是关于其它自变量回归的残差:
便称作,若,说明该变量基本不存在多重共线性性问题,若,说明问题比较严重。
- 异方差性(Heteroskedasticity)
观察残差(Residual)/估计值(Fitted Value, )图。
若该图呈现如上图所示的“漏斗形”,即随着的变化,残差有规律的变大或变小,则说明存在明显的异方差性。
或观察残差的标准差( )/估计值图(Scale Location Plot)。
也可以看出,异方差数据集呈现出明显的趋势性。
为了克服异方差性的影响,可以对因变量做一些非线性变换,如
- 误差项()应呈正态分布
方法一:观察Q-Q Plot (quantile-quantile plot)
如果误差项满足正态分布,Q-Q Plot里的散点会近似的落在一条直线上。若不满足正态分布,则散点会偏离该直线。
方法二:进行正态检验–如Kolmogorov-Smirnov检验,Shapiro–Wilk检验
代码
用线性回归来预测波士顿房价
- 正规方程的线性回归用的是
sklearn.linear_model.LinearRegression
- 梯度下降用的是
sklearn.linear_model.SGDRegressor
数据量小用正规方程,数据量大用梯度下降
在预测完成后,想要知道预测的好坏的指标,可以通过以下几种方式进行判别:
- 均方误差:
sklearn.metrics.mean_squared_error(y_true, y_pred)
(误差平方和的均值)
- 平均绝对误差:
sklearn.metrics.mean_absolute_error(y_true, y_pred)
(误差的平均)
通过上图我们可以发现,当数据量小于10W的时候,正规方程,否则就选择
SGD
。也就是说在数据量比较少的情况下,正规方程更有优势,在数据量比较大的时候SGD
会更加准确岭回归
岭回归,就是加入了正则惩罚项的回归,可以用
sklearn.linear_model.Ridge
来实现:岭回归超参数和回归系数的关系
越大,那么正则项惩罚的就越厉害,得到回归系数就越小,最终趋近与0。而如果越小,即正则化项越小,那么回归系数就越来越接近于普通的线性回归系数。
当比较大,接近于 时, 的10个维度都趋于0。而当比较小,接近于时,的10个维度都趋于线性回归的回归系数。
RidgeCV
通过内置的关于的 alpha 参数的交叉验证来实现岭回归。 该对象与 GridSearchCV 的使用方法相同,只是它默认为 Generalized Cross-Validation(广义交叉验证 GCV),这是一种有效的留一验证方法(LOO-CV):Lasso回归
Lasso
类的实现使用了 coordinate descent (坐标下降算法)来拟合系数LassoLars
类采用的是最小角回归法LassoCV
类的损失函数和损失函数的优化方法完全与Lasso
类相同,区别在于验证方法LassoLarsCV
类的损失函数和损失函数的优化方法完全与LassoLars
类相同,区别在于验证方法。LassoLarsIC
类的损失函数和损失函数的优化方法完全与LassoLarsCV
类相同,区别在于验证方法。验证方法
LassoLarsIC
类对超参数αα没有使用交叉验证,而是用Akaike
信息准则(AIC)和贝叶斯信息准则(BIC)。此时并不需要指定备选的 值,而是由LassoLarsIC
类基于AIC和BIC自己选择。用LassoLarsIC
类可以一轮找到超参数,而用K折交叉验证的话,需要K+1轮才能找到。相比之下LassoLarsIC类寻找 更快。使用场景
从验证方法可以看出,验证α
LassoLarsIC
比LassoLarsCV
快很多。那么是不是LassoLarsIC
类一定比LassoLarsCV
类好呢? 不一定!由于使用了AIC和BIC准则,数据必须满足一定的条件才能用LassoLarsIC类。这样的准则需要对解的自由度做一个适当的估计。该估计是来自大样本(渐近结果),并假设该模型是正确的(即这些数据确实是由假设的模型产生的)。当待求解的问题的条件数很差的时候(比如特征个数大于样本数量的时候),这些准则就会有崩溃的风险。所以除非知道数据是来自一个模型确定的大样本,并且样本数量够大,才能用LassoLarsIC。而实际上我们得到的数据大部分都不能满足这个要求。ElasticNet
损失函数
ElasticNet可以看做Lasso和Ridge的中庸化的产物。它也是对普通的线性回归做了正则化,但是它的损失函数既不全是 的正则化,也不全是 的正则化,而是用一个权重参数来平衡 和 正则化的比重,形成了一个全新的损失函数如下:
其中为正则化超参数,为范数权重超参数。
损失函数的优化方法
ElasticNet回归的损失函数优化方法常用的有两种,坐标轴下降法和最小角回归法。ElasticNet类采用的是坐标轴下降法。
ElasticNetCV
类的损失函数和损失函数的优化方法完全与ElasticNet
类相同,区别在于验证方法OrthogonalMatchingPursuit
损失函数:
OrthogonalMatchingPursuit(OMP)算法和普通的线性回归损失函数的区别是增加了一个限制项,来限制回归系数中非0元素的最大个数。形成了一个全新的损失函数如下:
subject to
其中 代表的L0范数,即非0回归系数的个数
损失函数的优化方法
OrthogonalMatchingPursuit类使用前向选择算法来优化损失函数。它是最小角回归算法的缩水版。虽然精度不如最小角回归算法,但是运算速度很快。
OrthogonalMatchingPursuitCV
类的损失函数和损失函数的优化方法完全与OrthogonalMatchingPursuit
类相同,区别在于验证方法验证方法
OrthogonalMatchingPursuitCV类使用交叉验证,在S折交叉验证中以MSE最小为标准来选择最好的
MultiTask
“MultiTask”的前缀不是编程里面的多线程,而是指多个线性回归模型共享样本特征,但是有不同的回归系数和特征输出
MultiTaskLassoCV
类的损失函数和损失函数的优化方法完全与MultiTaskLasso类
相同,区别在于验证方法MultiTaskElasticNetCV
类的损失函数和损失函数的优化方法完全与MultiTaskElasticNet
类相同,区别在于验证方法BayesianRidge
贝叶斯回归模型假设先验概率,似然函数和后验概率都是正态分布。先验概率是假设模型输出是符合均值为的正态分布,正则化参数 被看作是一个需要从数据中估计得到的随机变量。回归系数 的先验分布规律为球形正态分布,超参数为 。需要通过最大化边际似然函数来估计超参数 和 ,以及回归系数 。
此处对损失函数即负的最大化边际似然函数不多讨论,不过其形式和Ridge回归的损失函数很像,所以也取名BayesianRidge。
使用场景:如果数据有很多缺失或者矛盾的病态数据,可以考虑BayesianRidge类,它对病态数据鲁棒性很高,也不用交叉验证选择超参数。但是极大化似然函数的推断过程比较耗时,一般情况不推荐使用。
ARDRegression
ARDRegression
和BayesianRidge
很像,唯一的区别在于对回归系数θ的先验分布假设。BayesianRidge
假设θ的先验分布规律为球形正态分布,而ARDRegression
丢掉了BayesianRidge
中的球形高斯的假设,采用与坐标轴平行的椭圆形高斯分布。这样对应的超参数 有 个维度,各不相同。而上面的BayesianRidge
中球形分布的对应的只有一个。ARDRegression也是通过最大化边际似然函数来估计超参数 和 向量,以及回归系数 。
使用场景:如果数据有很多缺失或者矛盾的病态数据,可以考虑
BayesianRidge
类,如果发现拟合不好,可以换ARDRegression
试一试。因为ARDRegression
对回归系数先验分布的假设没有BayesianRidge
严格,某些时候会比BayesianRidge
产生更好的后验结果。