第二周 线性回归

https://www.coursera.org/learn/machine-learning/home/week/2

多元线性回归

一般的,我们用m代表样本数,n代表特征数,我们提到的向量默认都是指列向量,行向量用 转置的形式来表示。

假设:$h_{\theta}=\theta_0+\theta_1x_1+\theta_2x_2+\cdots+\theta_nx_n$

为了对称 $\theta$ 和 $x$, 我们令

则:

多变量梯度下降

Hypothesis:$h_\theta=\theta^{T}x=\theta_0x_0+\theta_1x_1+\theta_2x_2+\cdots+\theta_nx_n \quad (x_0=1$)

Parameters:$\theta_0,\theta_1,\cdots,\theta_n$

Cost Function

Gradient Descent

求偏导之后

计算时需要注意,$\theta$ 更新时,不要单个元素更新,而是算出所有元素后,以向量更新,因为算$\theta$的一个元素时要用用到其他元素,即每次学习时,$\theta$ 作为一个向量,整体来迭代更新。

Feature Scaling

因为在原始的资料中,各变数的范围大不相同。对于某些机器学习的算法,若没有做过标准化,目标函数会无法适当的运作。举例来说,多数的分类器利用两点间的距离计算两点的差异,若其中一 个特征具有非常广的范围,那两点间的差异就会被该特征左右,因此,所有的特征都该被标准化,这样才能大略的使各特征依比例影响距离。另外一个做特征缩放的理由是他能使加速梯度下降法的收敛。

一般有4种方法来进行 特征缩放

  • Rescaling (min-max normalization) $x’=\frac{x-\min(x)}{\max(x)-\min(x)}$
  • Mean normalization $x’=\frac{x-\text{average}(x)}{\max(x)-\min(x)}$,$\text{average}(x)$ 指的是 最大值和最小值(range)的中间值
  • Standardization $x’ = \frac{x - \bar{x}}{\sigma}$
  • Scaling to unit length $x’=\frac{x}{||x||}$

一般情况会把所有的特征都转化到 [-1,1] 之间,但是比不是特别严格,只要不会出现偏差值特别大的情况即可。比如以下的变量值范围都是可以的。

  • [0,3]
  • [-2,0.5]

以下的值范围是要进行处理的:

  • [-100,100]
  • [-0.0001,0.00001]

Learning Rate

训练过程中,一般设置一组$\alpha$,如{0.001,0.01,0.1,1},分别绘制出Cost Function(Y轴) 与迭代次数(X轴)的函数图


一般来说 A 是比较合适的学习速率。

根据效果和项目时间限制,可以多尝试不同的速率

  • {0.001,0.01,0.1,1} 10x step
  • {0.001,0.004,0.016,0.032…} 4x step

Polynomial Regression

有时候线性回归的拟合效果并不是很好,这时候你可以考虑多项式回归。比如你有房子的宽度,长度两个特征,当单纯的使用

无法如何训练都不能获得比较满意的效果时,你可以考虑使用

有时候甚需要

这些变化实际上属于特征工程的范畴,不是说顺便变化原始的特征,一般是根据业务经验处理,比如平方代表面积,立法代表体积。

需要注意,特征变化后,需要做Feature Scaling。

Normal Equation

正规方程求解

构造$X$,$Y$

则有:

正规方程推导

我们的目标是 $y \simeq y’$,求导得

第二种推导

梯度下降 vs 正规方程

  • 梯度下降
    • 需要选择 $\alpha$
    • 需要迭代很多次
    • n 很大时,也可以工作的很好
  • 正规方程
    • 不需要选择 $\alpha$
    • 不需要迭代很多次
    • n 很大时,需要求 $\mathbb{R}^{n*n}$规模矩阵的逆,计算规模大概是$O(n^3)$,计算很慢。

- - - - - - - - End Thank For Your Reading - - - - - - - -
0%