广义线性模型(一)

一、说明

本章主要讲述一些用于回归的方法,如果需要使用广义线性模型进行分类,请使用Logistic回归。

二、符号说明

           

            X: 训练集

三、普通最小二乘法

普通最小二乘法拟合一个带有系数的线性模型,使得目标值和预测值之间的残差平方和最小,其数学表达式为:

3.1、普通最小二乘法示例

普通最小二乘法
权值与截距

普通最小二乘法优势:简单,易于实现。

普通最小二乘法缺点:普通最小二乘法的系数估计依赖于各个特征的相互独立性。当各个特征相关时,样本集合X所构成的矩阵会趋向于奇异矩阵,那么这种模型对于随机误差会非常敏感,可能产生很大的方差。比如,我们将最右下角的点重新设为(5,20),拟合直线会产生较大波动。

改变最右下角的点
权值与截距

3.2、普通最小二乘法的复杂度

由于对X矩阵进行奇异值分解,假设矩阵大小为,当时,该方法的复杂度为。

四、岭回归

岭回归通过对系数施加惩罚来解决最小二乘法的缺点,其数学表达式为:

4.1、岭回归示例

岭回归模型
权值与截距

从岭回归模型可以看出来岭回归具有较好的鲁棒性。

4.2、岭回归复杂度

岭回归只是在普通最小二乘法的基础上增加了惩罚项,所以它的复杂度与普通最小二乘法一样。

4.3、设置α参数:广义交叉验证

广义交叉验证是一种有效的留一验证,如果我们将超参数值cv修改为10,则广义交叉验证变为10折交叉验证。

岭回归广义交叉验证模型
权值、截距与最佳α值

如果将最后一个点的y值设置更大点,普通最小二乘法与岭回归的对比效果可能会更明显点。

五、Lasso回归

Lasso回归利用坐标下降法拟合稀疏系数的线性模型,即它设定一些系数为0,倾向于使用较少参数值的情况,有效的减少所依赖的特征数量。它的最小化目标函数为:

5.1、Lasso回归示例

随机生成的回归数据集,利用Lasso回归,我们可以看看它最终的权值向量(由于特征过多,给出部分):


Lasso回归结果

最后权值向量中非0元素只有10个,意味着我们可以只用其中对应的10个特征来训练数据集就可以得到一个很好的模型,Lasso回归的效果应该不言而喻了吧。

5.2、使用交叉验证

对于Lasso回归来说,有两种交叉验证函数,一种是LassoCV,还有一种是LassoLarsCV(就是下面要说的最小角回归)。根据官网API的说明,当样本数量比特征数量少的多时,LassoLarsCV更快,通常,远小于的标准为。

5.3、与SVM正则化参数的比较

            或者           

六、弹性网络

弹性网络是一种使用L1、L2范数作为先验正则项的线性回归模型,这种组合既可以像Lasso一样允许拟合到只有少量参数的非零稀疏模型,也可以像Ridge一样保持它的可导性质。弹性网络在特征相互联系下是很有用的。它的最小化目标函数为:

其中,,那么这个式子就转换为了带罚项的目标函数。

6.1、弹性网络示例

与Lasso回归的数据集一样,我们看看弹性网络的效果。(由于特征过多,博主只给出部分)

弹性网络回归结果

经检验,最后弹性网络权值向量中非0元素占了2111个。那么它和Lasso回归相比,哪个效果更好一点呢?

我们利用分数来进行对比:

分数对比

差距挺大,问题出在哪?经过博主的不断查找,总结有两点原因:1、我们的决定系数,分数高不一定说明每个回归系数都可信任,换句话说,从5000维降到2111维可能比从5000维降到10维的权值更可信一点。2、我们选取的数据为维,对于这样的高维数据,并且参杂着一半的噪声的数据,Lasso可能更适合一点。

七、最小角回归

LARS也是一种对高维数据的回归算法,这里我们只介绍它的主要优点和缺点:

优点:

1、当p>>n时,该算法运算更快。

2、它拥有和普通最小二乘法相同的复杂度(如果数据集的n和p都不是非常大的话的确算个优点)。

缺点:

对噪声非常敏感(博主认为这个缺点很致命),我们不妨看看它对噪声到底有多敏感:

我们将回归数据集的一半替换为噪声,我们看看它与Lasso的效果差别:

分数对比

当然,在不同的数据集中会有不同的结果,如果你觉得结果能在你的容许范围内,想要换取更快的时间,那么就用最小角回归。


博主想把广义线性模型分为两部分,毕竟量太多,博主也需要时间去思考。博主认为对于绝大多少机器学习者来说,应该将重点放在业务上,知道何时用什么模型,理论给予我们的是:当模型出现问题的时候,我们能够通过理论迅速定位问题出在哪里。最后,如有错误,请指正;如有疑问,请留言。


参考:《Scikit-learn文档》

你可能感兴趣的:(广义线性模型(一))