机器学习02线性回归、多项式回归、正规方程

单变量线性回归(Linear Regression with One Variable)

机器学习02线性回归、多项式回归、正规方程_第1张图片



预测器表达式:




选择合适的参数(parameters)θ0 和 θ1,其决定了直线相对于训练集的准确程度。

建模误差(modeling error):训练集中,模型预测值与实际值之间的差距。

目标:选出使建模误差平方和最小的模型参数,即损失函数最小。

损失函数(Cost Function):


机器学习02线性回归、多项式回归、正规方程_第2张图片

可以看出在三维空间中存在一个使得 J(θ0,θ1)最小的点。



梯度下降算法(Gradient Descent):

批量梯度下降(batch gradient descent)算法的公式为:

机器学习02线性回归、多项式回归、正规方程_第3张图片


总结:

1、先确定预测模型,然后确定损失函数;

机器学习02线性回归、多项式回归、正规方程_第4张图片

2、使用梯度下降算法,让损失函数最小化,此时的参数可使预测模型的经验误差达到最优。

机器学习02线性回归、多项式回归、正规方程_第5张图片


————————————————————————————————————————————————


多变量线性回归(Linear Regression with Multiple Variables)





为了简化公式,引入 x0=1。

此时模型中的参数是一个 n+1 维的向量,任何一个训练实例也都是 n+1 维的向量,特征矩阵 X 的维度是 m*(n+1)。

公式可以简化为:



多变量线性回归代价函数,这个代价函数是所有建模误差的平方和:

机器学习02线性回归、多项式回归、正规方程_第6张图片


多变量线性回归的批量梯度下降算法为:

机器学习02线性回归、多项式回归、正规方程_第7张图片

即:


机器学习02线性回归、多项式回归、正规方程_第8张图片

开始随机选择一系列的参数值, 计算所有的预测结果后, 再给所有的参数一个新的值,如此循环直到收敛。


————————————————————————————————————————————————————————


梯度下降算法实践1——特征缩放

Feature Scaling

机器学习02线性回归、多项式回归、正规方程_第9张图片


将所有特征的尺度都尽量缩放到-1 到 1 之间。



梯度下降算法实践 2——学习率

梯度下降算法的每次迭代受到学习率的影响:

如果学习率 α 过小, 则达到收敛所需的迭代次数会非常高;

如果学习率 α 过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。 

通常可以考虑尝试些学习率: α=0.01,0.03,0.1,0.3,1,3,10 

————————————————————————————————————————————————————————


多项式回归( Polynomial Regression)

线性回归并不适用于所有数据, 有时需要曲线来适应数据。

比如一个二次方模型:


或者三次方模型:



通常需要先观察数据然后再决定准备尝试怎样的模型。

根据函数图形特性,还可以使用:

机器学习02线性回归、多项式回归、正规方程_第10张图片


注:如果采用多项式回归模型,在运行梯度下降算法前,特征缩放非常有必要。


————————————————————————————————————————————————————————


正规方程(Normal Equation)

正规方程通过求解下面的方程来找出使得代价函数最小的参数:


假设训练集特征矩阵为 X(包含了 x0=1),训练集结果为向量 y

则利用正规方程解出向量:



机器学习02线性回归、多项式回归、正规方程_第11张图片


总结:

只要特征变量的数目并不大,标准方程是一个很好的计算参数 θ 的替代方法。 

具体地说, 只要特征变量数量小于一万, 通常使用标准方程法, 而不使用梯度下降法。

 

随着学习算法越来越复杂,例如,分类算法,逻辑回归算法, 并不能使用标准方程法。 

对于那些更复杂的学习算法,将仍然使用梯度下降法。

因此,梯度下降法是一个非常有用的算法,可以用在有大量特征变量的线性回归问题。


或者在以后课程中,会讲到的一些其他的算法,因为标准方程法不适合或者不能用在它们上。 

但对于这个特定的线性回归模型, 标准方程法是一个比梯度下降法更快的替代算法。

所以,根据具体的问题,以及你的特征变量的数量,这两种算法都是值得学习的。


不可逆性:

 X'X 的不可逆的问题很少发生

第一个原因:一个线性方程的两个特征值是线性相关的,矩阵 X'X 不可逆;

第二个原因:用大量的特征值,尝试实践学习算法的时候,可能会导致矩阵 X'X 不可逆。


通常,使用一种叫做正则化的线性代数方法,通过删除某些特征或者是使用某些技术,来解决当 m 比
n 小的时候的问题。即使你有一个相对较小的训练集,也可使用很多的特征来找到很多合适的参数。 

你可能感兴趣的:(机器学习笔记)