首页 > 代码库 > Coursera公开课机器学习:Linear Regression with multiple variables

Coursera公开课机器学习:Linear Regression with multiple variables

多特征


实际上我们真正买过房子的都知道,在选择房子的时候,需要考虑的不仅仅是面积,地段、结构、房龄、邻里关系之类的都应该是考虑对象,所以前面几讲谈论的,单纯用面积来谈房价,不免失之偏颇。

多考虑些特性

我们加入一些特性来考虑房价问题:

符号解释

$n$:特性数目

$x ^{(i)}$:输入的第$i$个训练数据

$x ^{(i)} _j$:第$i$个训练数据的第$j$个特性

$h _\theta (x)$

相应的,$h _\theta (x)$也就变了:

$h _\theta (x) = \theta _0 + \theta _1 x _1 + \theta _2 x _2 + \cdots +\theta _n x _n$

结合上节的向量内容,加上$x _0 = 1$,可得到:

$$ \matrix{x}= \begin{bmatrix} x _0 \cr x _1 \cr \vdots \cr x _n \cr \end{bmatrix} \matrix{\theta}= \begin{bmatrix} \theta _0 \cr \theta _1 \cr \vdots \cr \theta _n \cr \end{bmatrix} $$

$h _\theta (x) = \matrix{\theta} ^T \matrix{x}$

其中,$x _0 = 1$

代价函数

$J(\matrix{\theta})=J(\theta _0,\theta _1,\cdots,\theta _n)=\frac{1}{2m}\sum _{i=1}^m{(h _\theta(x^{(i)}) - y^{(i)})^2}$

多变量梯度下降


如上一讲所述,重复下面的公式直至收敛:

$\theta _j = \theta _j -\alpha \frac{\partial}{\partial \theta _j}J(\theta _0,\theta _1,\cdots,\theta _n)$

把微分方程计算开,即:

$\theta _j = \theta _j -\alpha \frac{1}{m}\sum _{i=1}^m{(h _\theta(x^{(i)}) - y^{(i)}) x ^{(i)} _j}$

特征值归一化


在实际运作中,难免会遇到特征值很大的情况,比如说1~10000000,这时候如果想要处理的话,计算量很大,不是很利于实际操作,所以缩小下范围是个不错的选择。

归一化,其实就是把数据处理下,限制在某一特定范围,便于后续处理,且能加快程序收敛速度。

均值归一化

$x _i=\frac {x _i - \bar{x}} {\sigma}$

$\sigma=\sqrt{\frac {1} {n} \sum _{i=1} ^n {(x _i -\bar{x}) ^2}}$

步长的选择


步长的选择,单变量、多变量并没有什么区别,不能过大,不能过小,至于原因,可以看上一讲的东西,其实都一样。

多项式回归


合并部分特征

如果说房子给出了长、宽两项来预测房价,我们都知道的,两变量处理起来比单变量麻烦,其实这时候完全可以用面积来代替长、宽,这样只有一个变量,处理起来也方便很多。

多项式

可能有时候线性回归不能很好拟合给定的样本,比如说房价预测:

$h _\theta (x) = \theta _0 +\theta _1(size) +\theta _2{(size)} ^2 +\theta _3 {(size)} ^3$

可能这种式子能更好拟合样本,这时候看式子里有平方、立方,不是线性的了。

其实可以转变成线性的:

$x _1=(size)$

$x _2={(size)} ^2$

$x _3={(size)} ^3$

这样替换进去又是我们熟悉的多变量回归了。

同样开根号也是可以根据实际情况去选择的,处理的时候同上述方法。

正规方程


除了迭代法之外,其实利用线性代数只是,是可以直接算出$\matrix{\theta}$的。

举个例子,4组特性的房价预测:

最小二乘法

$\theta = (\matrix{X} ^T \matrix{X})^{-1}\matrix{X} ^T \matrix{y}$

梯度下降、正规方程优缺点

梯度下降:

  • 需要合适的步幅$\alpha$;
  • 需要多轮迭代;
  • 即便$n$很大,效果也很好。

正规方程:

  • 不需要选择$\alpha$;
  • 不需要迭代,一次搞定;
  • 计算$(\matrix{X} ^T \matrix{X})^{-1}$,时间复杂度$O(n ^3)$;
  • 如果$n$很大,运算起来非常慢。

正规方程矩阵不可逆的处理方法


$\matrix{X} ^T \matrix{X}$不可逆处理方式:

  • 去掉冗余特性;

  • 删除过多特征。

参考信息


本篇主要参考了以下资料:

  • Andrew Ng,Machine Learning
  • Coursera公开课笔记: 斯坦福大学机器学习第四课“多变量线性回归(Linear Regression with Multiple Variables)”