1. 线性回归(Linear Regression)
1.1 简述
在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。
我们需要一个机制去评估我们θ是否比较好,通过对真实值和预测值之间的误差来确定最优的权重系数θ,一般这个函数称为损失函数(loss function)或者错误函数(error function)或者评价函数。如常用的均方误差(mean squared error)损失函数等。
平方损失函数是去对x(i)的估计值与真实值y(i)差的平方和作为错误估计函数,前面乘上的1/2是为了在求导的时候,这个系数就消掉了。
其中均方误差,平方损失这些本质上是最小二乘法的思想方法。
思考:为何损失函数要使用平方和?
选用损失函数为平方和,可用概率解释。假设根据特征的预测结果与实际结果有误差,那么预测结果和真实结果满足下式:
一般来讲,误差满足平均值为0的高斯分布,也就是正态分布。利用高斯分布来估计了一条样本的结果概率,然而我们期待的是模型能够在全部样本上预测最准,也就是概率积最大。注意这里的概率积是概率密度函数积,连续函数的概率密度函数与离散值的概率函数不同。这个概率积成为最大似然估计。我们希望在最大似然估计得到最大值时确定θ。那么需要对最大似然估计公式求导,求导得出上面的最终结果。
接下来思考的是如何调整θ以使得J(θ)取得最小值?
1.2 梯度下降法
在选定线性回归模型后,只需要确定参数θ,就可以将模型用来预测。然而θ需要在J(θ)最小的情况下才能确定。因此问题归结为求极小值问题,使用梯度下降法。梯度下降法最大的问题是求得有可能是全局极小值,这与初始点的选取有关。需要注意:此处不是随机梯度下降法,因为均方误差损失函数是凸函数。在求解最优化问题的时候要注意特征归一化,这在许多机器学习模型中都需要注意的问题。
梯度下降法是按下面的流程进行的:
1)首先对θ赋值,这个值可以是随机的,也可以让θ是一个全零的向量。
2)改变θ的值,使得J(θ)按梯度下降的方向进行减少。梯度方向由J(θ)对θ的偏导数确定,由于求的是极小值,因此梯度方向是偏导数的反方向。结果为
迭代更新的方式有两种,一种是批梯度下降,也就是对全部的训练数据求得误差后再对θ进行更新,另外一种是增量梯度下降,每扫描一步都要对θ进行更新。前一种方法能够不断收敛,后一种方法结果可能不断在收敛处徘徊。
一般来说,梯度下降法收敛速度还是比较慢的。另一种直接计算结果的方法是最小二乘法。
1.3 最小二乘法(OLS)
将训练特征表示为X矩阵,结果表示成y向量,仍然是线性回归模型,误差函数不变。OLS 最小二乘求偏导,求出θ:
但此方法要求X是列满秩的,而且求矩阵的逆比较慢。对于那些不能直接求矩阵的逆,在工程实践中发现有个Trick(技巧),结果发现性能效果要比上面的还要好些,这完全是实践出来的。
1.4 岭回归(Ridge Regression)
岭回归是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法。通过损失最小二乘法的无偏性,以损失部分信息、降低精度为代价,提升数值稳定性泛化能力,获得回归系数更为符合实际、更可靠的回归方法。
对于数据集中的数据(包含这些病态数据:训练样本数量少,甚至少于样本维数,这样将导致数据矩阵无法求逆;又比如样本特征中存在大量相似的特征,导致很多参数所代表的意义重复。其本质是考虑到数据一定有偏差,使得这些特征相关系数变小了),做到一定的特征选择。
岭回归:消除共线性;模的平方处理
岭回归等于线性回归 + L2范数 (L2是高斯分布。)
1.5 Lasso 回归
岭回归的正则化因子上使用模型参数向量的二范数形式。如果使用一范数形式,那就是lasso回归了。lasso回归相比于岭回归,会比较极端。它不仅可以解决过拟合问题,而且可以在参数缩减过程中,将一些重复的没必要的参数直接缩减为零,也就是完全减掉了。这可以达到提取有用特征的作用。但是lasso回归的计算过程复杂,毕竟一范数不是连续可导的。
比岭回归好的是可以方便删除无效变量(系数为零即无效),因此不用靠人眼去主观筛选变量。它不仅可以解决过拟合问题,而且可以在参数缩减过程中,将一些重复的没必要的参数直接缩减为零,也就是完全减掉了。这可以达到提取有用特征的作用。用Lasso作为删选变量的工具更有可实际操作性。
Lasso回归:压缩变量,起降维作用;模处理
Lasso回归等于线性回归 + L1范数(L1是拉普拉斯分布)
1.6 弹性网络回归(ElasticNetRegression)
ElasticNet 回归,即岭回归和Lasso技术的混合。弹性网络是一种使用 L1, L2 范数作为先验正则项训练的线性回归模型。 这种组合允许学习到一个只有少量参数是非零稀疏的模型,就像 Lasso 一样,但是它仍然保持一些像 Ridge 的正则性质。我们可利用 l1_ratio 参数控制 L1 和 L2 的凸组合。
弹性网络在很多特征互相联系的情况下是非常有用的。Lasso 很可能只随机考虑这些特征中的一个,而弹性网络更倾向于选择两个。
在实践中,Lasso 和 Ridge 之间权衡的一个优势是它允许在循环过程(Under rotate)中继承 Ridge 的稳定性。
当α接近0时,ElasticNet表现接近lasso, 当α从1变化到0时,目标函数的稀疏解(系数为0的情况)从0增加到Lasso的稀疏解。