机器学习:利用梯度下降法及正规方程法求解线性回归

gradient descent &normal equation

Posted by 粘世强 on June 13, 2018

利用梯度下降法及正规方程法求解线性回归

该文章是在学习了唐宇迪机器学习视频及吴恩达在couresa上的机器学习视频后进行的总结。

回归和分类的区别

回归算法的预测值是连续的,而分类算法的预测值是一组类别,是离散值。比如,银行根据客户的历史数据,判断某个人的信用是否良好,预测结果就是好和坏两种类型。如果银行想根据客户的历史数据来判断向客户贷款的额度,这便是一个回归问题。

线性回归问题介绍

正规方程求解

如上图所示,我们想根据客户的工资和年龄数据来决定向客户贷款的额度,“工资”和“年龄”在机器学习中被称为“特征”,”额度“这一列被称为“标签”,表格中的每一行被称为”样本“。这是一个典型的回归问题。在上图中,hθ(x)是预测值,可以写成矩阵的格式。

其中,误差为独立同分布,所谓独立同分布,即每个样本的误差之间是独立的,没有联系。同分布即为每个样本的误差都服从上述的高斯分布。 第一个公式表示误差服从高斯分布,第二个公式是将第一个公式中的误差用”真实值y-预测值“代替,在这个公式中,θ是参数,是可以变化的,x和y都是样本值,表示寻找一组θ,使得”真实值y-预测值“尽可能地小,也就代表着公式2的概率值尽可能的大。公式3将公式2中的每个样本对应的概率值进行相乘。使得所有的样本的”真实值y-预测值“尽可能的小。 将公式3取对数,然后进行计算,可以发现,求l(θ)的最大值即是J(θ)的最小值。于是对J(θ)进行求导,得到θ取值。这样也就得到了回归方程。 需要注意的是这种利用矩阵计算直接得到回归方程系数的方法的适用性不大,因为涉及矩阵求逆,有时候矩阵是不存在逆矩阵的。另外,矩阵求逆的计算量很大。在使用正规方程求解系数时,不需要进行特征归一化(feature scaling)。

代价函数的解释

~下边内容学习自吴恩达机器学习视频。~ 另外,在此,我们引入代价函数(cost function)。在这里我们假设只有一个特征,即h(x) = θ0 + θ1x

上图中的蓝线即表示预测值和实际值的差,称为建模误差,我们的目的在于使得建模误差的平方尽可能地小。

上式即表示线性回归的代价函数,代表平均每个样本的误差平方值。

代价函数的直观解释如上图所示,可以看出,h(x)是x的函数,而代价函数J(θ)是θ的函数。这一点很重要。目的是通过不断地更改θ值,使得代价函数的值越来越小,即误差越来越小。

梯度下降算法求解

对代价函数进行求导:

则梯度下降法可以改写为:

这个算法称为“批量梯度下降”,指的是在每一步的迭代过程中,都要用到所有的训练样本。

当变量个数多于1个时,同样可以利用梯度下降算法进行迭代求解,

我们的目标同样时要找到一组参数,使得代价函数的值最小。多变量线性回归问题的梯度下降法:

对代价函数求导,得到:

当n>=1时,

初始给定一组参数值,然后进行迭代循环直至收敛。

接下来总结一下梯度下降学习率α的问题:

梯度下降算法的每次迭代过程受到学习率的影响,如果学习率过小,则达到收敛所需的迭代次数会非常高,如果学习率过大,则可能会越过最低点,导致无法收敛。一般通过绘制代价函数和迭代次数的曲线来观察算法在何时收敛。

一般可按照:

0.001,0.003,0.01,0.03,0.1,0.3,1.……来进行学习率α选取。

梯度下降法和正规方程的比较

什么时候会出现X转置乘X不可逆的情况?

\1. 特征之间是相关的。

2.特征的数量大于样本的数量。比如有100个特征,但是只有10个样本,这样利用10个方程,求解100个未知数是不可取的。

首先,看特征值里是否有一些多余的特征,像这些 x1 和 x2 是线性相关的,互为线性函数。同时,当有一些多余的特征时,可以删除这两个重复特征里的其中一个,无须两个特征同时保留,将解决不可逆性的问题。因此,首先应该通过观察所有特征检查是否有多余的特征,如果有多余的就删除掉,直到他们不再是多余的为止,如果特征数量实在太多,我会删除些 用较少的特征来反映尽可能多内容,否则我会考虑使用梯度下降法。