【吴恩达机器学习】线性回归 Linear Regression

线性回归(Linear Regression)

单变量线性回归 (Linear regression with one variable / Univariate linear regression)
多变量线性回归 (Linear regression with multiple variables / Multivariate linear regression)

标记符号:

  • m m — 训练样本的数量
  • x x — 输入变量/特征
  • y y — 输出变量
  • ( x , y ) (x,y ) — 一个训练样本
  • ( x ( i ) , y ( i ) ) (x^{(i)}, y^{(i)}) — 第 i i 个训练样本
  • n n — 特征的数量
  • x ( i ) x^{(i)} — 第 i i 个样本输入
  • x j ( i ) x_j^{(i)} — 第 i i 个样本输入的第 j j 个特征

在这里插入图片描述

假设函数(Hypothesis)

h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n\\

另外的定义 x 0 = 1 x_0=1 ,那么假设函数就可以通过两个向量的乘积来表示:
x = [ x 0 x 1 x 2 . . . x n ] θ = [ θ 0 θ 1 θ 2 . . . θ n ] x=\begin{bmatrix}x_0\\x_1\\x_2\\.\\.\\.\\x_n\end{bmatrix}\qquad \theta=\begin{bmatrix}\theta_0\\\theta_1\\\theta_2\\.\\.\\.\\\theta_n\end{bmatrix}

h θ ( x ) = θ 0 x 0 + θ 1 x 1 + . . . θ n x n = θ T x \begin{aligned} h_\theta(x) &=\theta_0x_0+\theta_1x_1+...\theta_nx_n\\ &=\theta^Tx \end{aligned}

代价函数(Cost Function)

J ( θ 0 , θ 1 , . . . , θ n ) = 1 2 m i = 1 m ( h θ ( x ( i ) y ( i ) ) ) 2 J(\theta_0,\theta_1,...,\theta_n)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)}-y^{(i)}))^2

梯度下降(Gradient Descent )

“Batch” Gradient Descent
“Batch”: Each step of gradient descent uses all the training examples.

n n 个特征的梯度下降一般算法:
r e p e a t    u n t i l    c o n v e r g e n c e    { θ j : = θ j α θ j J ( θ 0 , θ 1 . . . θ n ) } \begin{aligned} & repeat\;until\;convergence\;\{\\ & \qquad \theta_j:=\theta_j-\alpha \frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1...\theta_n)\\ & \}\\ \end{aligned}

  • α \alpha (Learning rate): 控制参数 θ \theta 变化的快慢
    • 如果 α \alpha 太小,梯度下降就会太慢
    • 如果 α \alpha 太大,在跌倒中,有可能越过最低点,代价函数 J ( θ ) J(\theta) 可能会上升; 最后不能收敛(converge),甚至发散(diverge)。
    • 对于 α \alpha , 可以这样一次乘三倍的去尝试 . . . , 0.001 , 0.003 , 0.01 , 0.03 , 0.1 , 0.3 , 1 , . . . ...,0.001,0.003,0.01,0.03,0.1,0.3,1,...
  • 梯度(Gradient) 也就是下降速度,表示为斜率,每个参数按照不同方向的斜率,尽快的下降。越接近最小值,变化速率也会随着斜率的减小自动的减小。

J ( θ 0 , θ 1 . . . θ n ) = 1 2 m i = 1 m ( θ 0 + θ 1 x 1 ( i ) + . . . + θ n x n ( i ) y ( i ) ) 2 θ j J ( θ 0 , θ 1 . . . θ n ) = J ( θ 0 + θ 1 x 1 ( i ) + . . . θ n x n ( i ) y ( i ) ) x j ( i ) \begin{aligned} J(\theta_0,\theta_1...\theta_n)&=\frac{1}{2m}\sum_{i=1}^{m}(\theta_0+\theta_1x_1^{(i)}+...+\theta_nx_n^{(i)}-y^{(i)})^2 \\ \frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1...\theta_n)&=J(\theta_0+\theta_1x_1^{(i)}+...\theta_nx_n^{(i)}-y^{(i)})*x_j^{(i)} \end{aligned}

  • 梯度下降很容易陷入局部最优,只要初始值偏离一点,最后也可能会落在不同的最优处。
  • 但是对于线性回归来说,所有的函数都是凸函数,也就是说局部最优就是全局最优。

特征缩放(Feature Scaling)

  • 在多元线性回归中,两个变量范围相差太大,每一次迭代的步子都可能会非常小,也就需要很多的迭代次数。

  • 特征缩放的目的是让所有的变量 x i x_i 取值都在 1 x i 1 -1\le x_i\le 1 之间。吴恩达给出的上下限: ( 3 , 3 ) , ( 1 3 , 1 3 ) (-3,3), (-\frac{1}{3},\frac{1}{3})

    扫描二维码关注公众号,回复: 8804100 查看本文章
  • 均值归一(Mean normalization): x i = x i μ i s i x_i=\frac{x_i-\mu_i}{s_i}

    μ i = x i 的平均值 \mu_i= x_i\text{的平均值}

    s i = x i 的取值范围 ( m a x m i n ) s_i = x_i\text{的取值范围}\qquad (max-min)

多项式回归(Polynomial regression)

  • 对于多项式模型的假设函数,如: h θ = θ 0 + θ 1 x + θ 2 x 2 + θ 3 x 3 h_\theta=\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3 ,可以令 x 1 = x , x 2 = x 2 , x 3 = x 3 x_1=x,x_2=x^2,x3=x^3 ,然后使用普通线性回归的梯度下降即可。
  • 通常需要特征缩放。

正规方程(Normal Equation)

对于 m m 个样本, n n 个特征 的训练,我们可以表示 m m 个输入 x ( i ) x^{(i)} 和一个输出 y y
把所有的特征向量 x ( i ) x^{(i)} 构造出设计矩阵(design matrix) X X
x ( i ) = [ x 0 i x 1 i x 2 i . . . x n i ] R n + 1 X = [ ( x ( 1 ) ) T ( x ( 2 ) ) T . . . ( x ( m ) ) T ] y = [ y ( 1 ) y ( 2 ) . . . y ( m ) ] x^{(i)}= \begin{bmatrix} x_0^{i}\\ x_1^{i}\\ x_2^{i}\\ .\\ .\\ .\\ x_n^{i}\\ \end{bmatrix}\in \mathbb{R}^{n+1} \qquad\qquad X= \begin{bmatrix} (x^{(1)})^T\\ (x^{(2)})^T\\ .\\ .\\ .\\ (x^{(m)})^T \end{bmatrix} \qquad\qquad y= \begin{bmatrix} y^{(1)}\\ y^{(2)}\\ .\\ .\\ .\\ y^{(m)}\\ \end{bmatrix}
那么就可以神奇的得到向量 θ \theta ,里面的数就是最优的参数。
θ = ( X T X ) 1 X T y \theta=(X^TX)^{-1}X^Ty

与梯度下降相比,正则化不需要计算出 α \alpha ,也不需要多次的迭代。但如果 n n 太大,它的效率也不高,因为 X T X X^TX 是一个 n × n n\times n 的矩阵,求逆的复杂度是 O ( n 3 ) O(n^3)

  • 一般情况下 X T X X^TX 都是可以求逆的,就算不可以求逆, O c t a v e Octave 里的函数 p i n v pinv 也能够计算出逆。
  • 不可求逆的一般原因:
    • 特征之间线性依赖,存在多余的特征
    • 特征过多 ( m n m\le n )
      • 删除掉无关特征,或者使用正则化(regularization)

参考资料

[1].吴恩达机器学习 第二章-单变量线性回归
[2].吴恩达机器学习 第五章-多变量线性回归
[3].黄海广博士笔记

发布了237 篇原创文章 · 获赞 25 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/monochrome00/article/details/104077303
今日推荐