基本的线性回归模型因为都比较容易这里不赘述,主要讲 线性回归中的 Lasso 问题
1. 线性回归正则化
为了防止模型的过拟合,我们在简历线性模型的时候经常需要加入正则化项。一般有 L1 正则化和 L2 正则化。其中,L1 正则化通常称为 Lasso 回归,它和一般线性回归的区别是在损失函数上增加了一个 L1 正则化的项,L1 正则化的项有一个常数 αα 来调节损失函数的均方差项和正则化项的权重,具体表达式为:
其中,nn 为样本个数, 为常数系数,需要进行调优。||θ||1||θ||1 是 L1 范数。
Lasso 回归会使得一些系数变小,甚至还是一些绝对值较小的系数直接变为 0,因此特别适合于参数树缩减与参数的选择,因而用来估计系数参数的线性模型。而关于 L1 正则化为什么会使得一些较小的系数直接变为 0 ,这会在之后的文章中与 L2 正则化一起进行对比介绍。
但是 Lasso 回归有一个很大的问题,因为他的损失函数并不是连续可导的,由于 L1 范数的定义是使用所有参数的绝对值之和,因此会导致损失函数产生不可导的点。也就是说,最小二乘,梯度下降,牛顿法和拟牛顿法在这种情况下都失效了。为了解决这个问题,引入了两种新的方法,也就是 坐标轴下降法 和 最小角回归法。
2. 坐标轴下降法求解 Lasso
坐标轴下降法也就是说,沿着坐标轴的方向进行下降,这个梯度下降不同,因为梯度下降是沿着梯度的负方向进行下降。不过梯度下降和坐标轴下降的共性是都采用的迭代法,通过启发式的方法一步一步迭代求解函数的最小值。
坐标轴下降的主要数学依据是根据结论:
一个可微的凸函数 J(θ)J(θ),其中 θθ 是n×1n×1 的向量,也就是有 nn 个维度。如果在某一点 ,有 J(θ)J(θ) 在每一个坐标轴 θ¯i(i=1,2,...,n)θ¯i(i=1,2,...,n) 上都是最小值,那么 J(θ¯i)J(θ¯i) 就是一个全局的最小值。
因此优化目标就是 θθ 的 nn 个坐标轴上(方向向量)对损失函数都做迭代的下降,当所有的坐标轴上的 都达到收敛时,损失函数最小,这时的 θθ 也就是想要求得的最优值。
下面介绍一下具体算法:
将 θθ 向量随机取为一个初值,记为 θ(0)θ(0),向量上面的 0 表示迭代的次数,初始轮数为 0,
对于第 k 轮的迭代,从 θ(k)1θ1(k) 开始,到 θ(k)nθn(k) 结束,依次求出 θ(k)iθi(k) 的表达式如下:
θ(k)i∈arg minθiJ(θ(k)1,θ(k)2,...,θ(k)i−1,θ(k)i,θ(k)i+1,...,θ(k−1)in)θi(k)∈arg minθiJ(θ1(k),θ2(k),...,θi−1(k),θi(k),θi+1(k),...,θin(k−1))
也就是说 θ(k)iθi(k) 是使 J(θ(k)1,θ(k)2,...,θ(k)i−1,θ(k)i,θ(k)i+1,...,θ(k−1)in)J(θ1(k),θ2(k),...,θi−1(k),θi(k),θi+1(k),...,θin(k−1)) 最小化时候的 θiθi 的值。此时 j(θ)j(θ) 只有 θ(k)iθi(k) 是变量,其余都是常量,因此最小值容易通过求导得出。检查 θ(k)θ(k) 向量和 θk−1θk−1 向量在各个维度上的变化情况,如果在所有维度上变化都足够小,则 θkθk 就是我们最后想要的结果,否则转入第二步,继续进行第 k+1k+1 轮迭代。
梯度下降与坐标轴下降:
- 坐标轴下降法在每次迭代中在当前当初沿一个坐标方向进行一维搜索,固定其他的坐标方向,找到一个函数的局部极小值,而梯度下降总是沿着梯度的负方向求函数的局部最小值。
- 坐标轴下降优化方法是一种费梯度优化算法。在整个过程中以此循环使用不同的坐标方向进行迭代,一个周期的以为搜索迭代过程相当于一个梯度下降的迭代。
- 梯度下降是利用目标函数的导数来确定搜索方向的,该梯度方向可能不和任何坐标轴平行。而坐标轴下降法是利用当前坐标方向进行搜索,不需要求目标函数的倒数,只要按照某一坐标方向进行搜索最小值。
- 两者都是迭代方法,且每一轮迭代,都需要 O(mn)O(mn) 的计算量 (m 为样本数,n 是系数向量的维度)。