机器学习之线性回归

 |
总阅读量


  自己早已对机器学习观望已久,现在不入门,更待何时?在找到Coursera时,发现教学方法很对胃口,于是开始ML之旅…现在在这里总结一下机器学习之线性回归。

  机器学习有很多种方式,比如监督学习,半监督学习,无监督学习等。它们区别于训练集的种类,比如监督学习的训练集其每一个训练样本都有正确的答案,而无监督学习则没有,只能通过算法自动分类。而半监督学习,顾名思义,一部分是监督学习,一部分是无监督学习。

监督学习

  监督学习又分为聚类和回归。其中聚类是预测连续值,回归是预测离散值。例如垃圾邮件识别,网页类别划分等是聚类。预测房价、股票涨跌等是回归。
下面总结一下线性回归。

线性回归

线性回归模型

截取自Coursera课程课件


假设有房价数据集如下:

房子面积/$m_{2}$(x) 价格/w(y)
80 40
90 60
100 80

数据集1
以下为一些字母的含义:


字母 含义
$m$ 表示训练样本数量
$x$ 表示输入特征(特征量)
$y$ 表示输出变量(目标量)
$(x,y)$ 表示一个训练样本
$(x^{(i)},y^{(i)})$ 表示第i个训练样本

对应于线性回归的假设函数(hypothesis function)

其中$\theta$为参数
对应的代价函数(cost function)(其图像为一个凹函数)为

这个方程有什么意义呢?
下面是一个散点图:


由图片e表示假设函数结果与训练样本之间的误差。

所有误差的和即为

要想得到拟合最好的效果,我们必须要让误差和最小。但是通常我们都用平均每个训练样本的误差的一半来表示。也即代价函数:

此时得到的参数$\theta{0},\theta{1}$为最合适的参数。


梯度下降算法(Gradient Descent Algorithm)

其中$\theta$表示参数,$\alpha(\geq0)$表示学习效率,后面表示$\theta{j}$的偏导。
为了叙述方便,下面令$\theta
{0}=0$,此时$J({\theta{1}})$只有一个参数$\theta{1}$,令$J(\theta)$最小值对应于$\theta_{min}$

  • 假如$\theta{1}>\theta{min}$,则该点切线斜率大于等于0,即$\frac{dJ(\theta{1})}{d\theta{1}}\geq 0$(因为只有一个参数,所以退化为求微分),所以,$\theta{1}$减去一个正数,$\theta{1}$减小,则$\theta{1}$更靠近$\theta{min}$
  • $\theta{1}<\theta{min}$分析方法类似

梯度下降算法在线性回归中的应用

  将之前的代价函数带入梯度下降算法里,得到(其实就是复合函数求导,可以手动算一下):

多元线性回归

有数据集如下:

$x_{0}$ 房子面积/$m{2}(x{1})$ 卧室数量$(x_{2})$ 层数$(x_{3})$ 房子寿命$(x_{4})$ 价格/w(y)
1 80 1 1 50 50
1 90 2 2 60 60
1 100 3 3 70 60

数据集2
PS:为了$\theta{i}$与$x{j}$下标一致,所以多加一列,其所有值都为1

补充字母含义:

字母 含义
n 特征数量
$x^{(i)}$ 第i个训练样本
$x^{(i)}_{j}$ $i^{th}$训练样本$j^{th}$特征值

此时,假设函数为:

代价函数:

也等价于

则梯度下降算法对应的偏导为:

加快梯度下降算法收敛方法

  1. 特征缩放(feature scaling)
     保证每个特征量范围都在$-1\geq x_{i}\geq 1$,每个特征值除以该特征范围。
  2. 均值归一化(mean normalization)
     保证特征变量在$-0.5\geq x_{i} \geq 0.5$,令其中,$\mu{i}$表示$i^{th}$特征的均值,$s{i}$表示表示$i^{th}$特征的范围或标准差。
  3. 调整学习效率$\alpha$
     $\alpha$必须足够小,且$J(\theta)$必须在每一次迭代后减小,可以以每次为原来的3倍来调整$\alpha$。
    • 当$\alpha$太小,算法收敛过慢。
    • 当$\alpha$太大,$J(\theta)$可能在迭代若干次后开始增加,最终算法不能收敛。

多项式线性回归

 当假设函数不再是线性时,可以通过平方,立方,开平方来进行多项式拟合。
e.g
$h{\theta}(x)=\theta{0}+\theta{1}x{1}$
对于数据集1,可以令

  1. $h{\theta}(x)=\theta{0}+\theta{1}x{1}^{2}$
    此函数为二次函数,根据实际情况,房价不可能随面积增大而减小。
  2. $h{\theta}(x)=\theta{0}+\theta{1}x+\theta{1}x{1}^{2}+\theta{2}x{1}^{3}$
    此函数中,令$x
    {2}=x{1}^{2},x{3}=x^{3}_{1}$,此时,三个特征范围相差过大,对于特征值归一化有不利影响。
  3. $h{\theta}(x)=\theta{0}+\theta{1}x{1}+\theta{2}\surd{x{1}}$
    此时较符合模型。运用此方法 ,特征缩放很重要,而且特征之间关联程度要小。

正规方程(Normal Equation)

 对于训练样本数为m,特征数为n,
令矩阵

其中,X为m*(n+1)阶矩阵。

有正规方程,在数学上可证明其正确性:

最终$\theta$为1*(n+1)阶矩阵

梯度下降算法与正规方程比较

梯度下降算法 正规方程
需要选择$\alpha$ 不需要选择$\alpha$
需要多次迭代 不需要迭代
时间复杂度为$O(kn^{2}$) $O(n^{3}$),主要在矩阵求逆
当n很大时,能运行得不错 当n很大时,因为矩阵求逆而速度很慢

注: 当n大于10000时,考虑用梯度下降算法

正规方程不可逆

  1. 存在多余的特征,即存在关联程度很大的特征,此时可以分析特征,删去关联程度大的特征中一个。
  2. 特征值太多,例如$m<n$。此时可以删去存在关联的特征,或进行正则化。

夜已深,就总结到这里,接下来准备做一个小项目。晚安~