【机器学习】线性回归之梯度下降、多元线性回归概述

线性回归是一种监督学习方法. 
对每个样本来说: 

Hypothesis:

【机器学习】线性回归之梯度下降、多元线性回归概述

即:

【机器学习】线性回归之梯度下降、多元线性回归概述

其中,【机器学习】线性回归之梯度下降、多元线性回归概述 为预测值,【机器学习】线性回归之梯度下降、多元线性回归概述 为样本的第i个特征,且【机器学习】线性回归之梯度下降、多元线性回归概述; 【机器学习】线性回归之梯度下降、多元线性回归概述 为该特征下的权重,bias偏差【机器学习】线性回归之梯度下降、多元线性回归概述。线性回归就是要在已有的样本特征和标签下学习特征权重,从而在待测样本中应用学习好的特征权重,得到待测样本的标签。 

定义损失函数:

【机器学习】线性回归之梯度下降、多元线性回归概述

我们的目的是找到最优的 【机器学习】线性回归之梯度下降、多元线性回归概述 来最小化 【机器学习】线性回归之梯度下降、多元线性回归概述  , 使用梯度下降方法:

【机器学习】线性回归之梯度下降、多元线性回归概述

对每一个样本来说: 

【机器学习】线性回归之梯度下降、多元线性回归概述

Batch Gradient Descent:

【机器学习】线性回归之梯度下降、多元线性回归概述

 

其中i表示第i个样本。上式为第i个样本第j个特征的梯度求解然后平均。 

因此:

【机器学习】线性回归之梯度下降、多元线性回归概述

其中【机器学习】线性回归之梯度下降、多元线性回归概述为学习速率。

对于【机器学习】线性回归之梯度下降、多元线性回归概述的一些使用建议可以参考下图。

【机器学习】线性回归之梯度下降、多元线性回归概述


接下来,我们来了解几种求解最优参数的方法。

批量梯度下降(batch gradient descent(BGD)):

不断迭代下式直到收敛{

【机器学习】线性回归之梯度下降、多元线性回归概述

}

由上式可知,每一次迭代都要遍历所有样本,因此,当样本量很大时,批量梯度下降法迭代时间会很长。

随机梯度下降(stochastic gradient descent(SGD)): 

不断迭代下式直到收敛{ 
for i = 1 to m,{ 

【机器学习】线性回归之梯度下降、多元线性回归概述

}

由上式可知,随机梯度下降法每一次迭代只使用一个训练样本,因此可以大大缩小迭代时间。

SGD每一个epoch也需要计算样本量大小的数量的梯度(1...m)。SGD与BGD的主要区别在于,SGD一个epoch下来计算了m次梯度同时也更新了m次【机器学习】线性回归之梯度下降、多元线性回归概述,而BGD一个epoch下来虽然也同样计算了m次梯度,但它只更新了一次【机器学习】线性回归之梯度下降、多元线性回归概述。导致最后收敛是BGD所需要计算的样本梯度次数远远大于SGD。

Mini-batch gradient descent

具体是指:在每一次迭代中,随机选取若干个训练样本(比如50个),使用上述梯度下降方法进行参数优化,多次迭代直到收敛。该方法的速度比BGD快,比SGD慢;精度比BGD低,比SGD高。

特征归一化(Features Scaling)

【机器学习】线性回归之梯度下降、多元线性回归概述

上图中的两幅图解释了为什么需要做特征归一化。这里以二维情形来举例说明。如果【机器学习】线性回归之梯度下降、多元线性回归概述的分布相差很大的话,会造成左图的情形,损失函数就会很瘦长像一个椭圆一样,这样梯度下降的时候就会来回震荡,效果很差。而如果归一化之后,损失函数就会像一个圆一样,这样梯度下降就会好很多。

至于为什么损失函数在椭圆的时候梯度下降效果不好。可以这么理解,尺度小的一方可能早早达到了最优解附近,但由于尺度大的变量还在缓慢优化中,尺度小的只能来回震荡,此时又会对尺度大的变量产生影响。还有一个原因就是尺度大的变量“路”比较远,更新的慢!

【机器学习】线性回归之梯度下降、多元线性回归概述

通常的做法是将它们缩放到一定到尺寸,如-1到1,这个数字并不是特别重要,如-3到3或者-1/3到1/3也是可以到。

另一种普遍到做法是进行标准化,将数据标准化到0-1正态分布。也可以不除以标准差,因为标准差到计算往往也比较费时,可以直接用样本的数值范围来代替。我们叫做Mean normalization

【机器学习】线性回归之梯度下降、多元线性回归概述

 

线性回归的在线学习算法采用的就是SGD的梯度下降方式。

多元线性回归

在机器学习算法中,基于针对数据的非线性函数的线性模型是非常常见的,这种方法即可以像线性模型一样高效的运算,同时使得模型可以适用于更为广泛的数据上,多元线性回归就是这类算法中最为简单的一个。

关于多元线性回归的应用,这里举个非常简单的例子:一般的线性回归,模型既是参数【机器学习】线性回归之梯度下降、多元线性回归概述的线性函数,同时也是输入变量【机器学习】线性回归之梯度下降、多元线性回归概述的线性函数,对于一个二维的数据而言,模型的数学表达式如下:

【机器学习】线性回归之梯度下降、多元线性回归概述

如果想要拟合一个抛物面,而不是拟合一个平面的话,那么就需计算输入变量【机器学习】线性回归之梯度下降、多元线性回归概述二次项的线性组合,则模型更新为下面这个形式:

【机器学习】线性回归之梯度下降、多元线性回归概述

注意:这里需要说明的是,更新后的模型,虽然是输入变量【机器学习】线性回归之梯度下降、多元线性回归概述的二次函数,但是,由于它仍然是参数【机器学习】线性回归之梯度下降、多元线性回归概述的一次线性函数,所以它仍然是一个线性模型。为了说明这个问题,可以假设有一个新的变量【机器学习】线性回归之梯度下降、多元线性回归概述,那么就可以将上面的模型重写为下面的这个形式:

【机器学习】线性回归之梯度下降、多元线性回归概述

用向量【机器学习】线性回归之梯度下降、多元线性回归概述替换向量【机器学习】线性回归之梯度下降、多元线性回归概述的过程,相当于一个特征变换或者叫做特征生成的过程,它将输入特征的维度提高,但模型仍然是一个线性模型。

 

关于线性模型与非线性模型写过一篇文章线性模型非线性模型,感知机与神经网络