赞
踩
//个人学习记录,如有错误,请指正
首先我们来看线性回归的预测模型,可见这种模型是比较简单的,它赋予每个特征一个权值,再增加一个偏置量,最终得到预测值。显然我们需要训练的目标就是一个偏置量和每个特征的权值。
这里我们使用均方误差作为线性回归的损失函数,其主要的优势在于便于训练部分需要的计算。这里我们对比均方根误差,可以发现,就求偏导数而言,第一,均方根误差因为带有根号,可能并非处处可导,偏导数会存在突变情况,其导数计算也会比较复杂,而均方误差计算则简单一些。
现在我们可以看见我们的目标就是求得使均方误差取得最小值的参数θ。
这里我们引入凸函数(convex function)的性质:凸函数在最小值处导数为。并且已知线性模型的损失函数为凸函数。因此我们可以得到第一种训练方法:正规方程法。
1、正规方程(the normal equation)。求正规方程的核心就是对损失函数对参数θ求导,并且令导数为0,得到关于θ的方程,进而解方程得到参数θ完成训练。
从而得到正规方程:
求解正规方程的伪逆法:观察正规方程,我们可以发现一个问题,那就是XTX需要求逆,但是它并不一定可逆,这就为我们的计算带来了困难。因此这里,我们可以引入伪逆法进行计算。伪逆法可以分为两步理解:1、矩阵的奇异值分解可以求出一个接近原矩阵的新的低秩矩阵。2、我们可以用X的奇异值分解代替X,计算正规方程,并在特定步骤进行近似操作。
由此可以得到正规方程的伪逆计算方法,通过更严谨的数学推理,可以证明这种方法的正确性。
2、梯度下降法(gradient descent)。梯度下降法不像正规方程一种直接计算得到参数θ,而是首先确定一个初始θ,再进行不断迭代逐渐接近最优解。
线性模型损失函数梯度推导如下。
最后得到梯度如下:
我们前面所讲的线性模型都是单次的,我们有什么办法可以将线性模型转换为多项式模型吗?其实我们有一个很容易理解的方法实现这一点,那就是将计算多次项,并且将其作为新的特征插入到特征集中,这样再通过上述线性模型的方法进行训练,最后得到的便是多项式模型。
多项式模型可以被看作是线性模型升维的情况,在欠拟合时,我们可以使用这种方法,但是当模型过拟合时,我们可以应用何种方法呢?这里我们可以进行使用正则化方法。
正则化方法是通过对原有的损失函数再加上一个惩罚项,惩罚项可以选用参数θ的范数,因为增加了一个关于θ范数的惩罚项,因此,当我们对损失函数进行最小化时,θ也会趋向于变得更小。
常见的惩罚项包括L1范数,也叫 lasso 回归。
还有L2范数,也叫岭回归
对于新的损失函数,我们可以用和之前相同的方法进行求解,例如L2惩罚项的参数解为:
此外,将L1和L2组合起来,我们便可以得到弹性网络回归(Elasticnet)。
//图片公式摘自:《hand on machine learning with scikit-learn and tensorflow》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。