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

线性回归(Linear Regression)

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

标记符号:

  • mmm — 训练样本的数量
  • xxx — 输入变量/特征
  • yyy — 输出变量
  • (x,y)(x,y )(x,y) — 一个训练样本
  • (x(i),y(i))(x^{(i)}, y^{(i)})(x(i),y(i)) — 第iii个训练样本
  • nnn — 特征的数量
  • x(i)x^{(i)}x(i) — 第iii个样本输入
  • xj(i)x_j^{(i)}xj(i)​ — 第iii个样本输入的第jjj个特征

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

假设函数(Hypothesis)

hθ(x)=θ0+θ1x1+θ2x2+...+θnxn h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n\\ hθ​(x)=θ0​+θ1​x1​+θ2​x2​+...+θn​xn​

另外的定义 x0=1x_0=1x0​=1,那么假设函数就可以通过两个向量的乘积来表示:
x=[x0x1x2...xn]θ=[θ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} x=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡​x0​x1​x2​...xn​​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤​θ=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡​θ0​θ1​θ2​...θn​​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤​

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

代价函数(Cost Function)

J(θ0,θ1,...,θn)=12mi=1m(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 J(θ0​,θ1​,...,θn​)=2m1​i=1∑m​(hθ​(x(i)−y(i)))2

梯度下降(Gradient Descent )

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

nnn个特征的梯度下降一般算法:
repeat  until  convergence  {θj:=θjαθjJ(θ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} ​repeatuntilconvergence{θj​:=θj​−α∂θj​∂​J(θ0​,θ1​...θn​)}​

  • α\alphaα (Learning rate): 控制参数θ\thetaθ变化的快慢
    • 如果 α\alphaα 太小,梯度下降就会太慢
    • 如果 α\alphaα 太大,在跌倒中,有可能越过最低点,代价函数 J(θ)J(\theta)J(θ) 可能会上升; 最后不能收敛(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,......,0.001,0.003,0.01,0.03,0.1,0.3,1,...
  • 梯度(Gradient) 也就是下降速度,表示为斜率,每个参数按照不同方向的斜率,尽快的下降。越接近最小值,变化速率也会随着斜率的减小自动的减小。

J(θ0,θ1...θn)=12mi=1m(θ0+θ1x1(i)+...+θnxn(i)y(i))2θjJ(θ0,θ1...θn)=J(θ0+θ1x1(i)+...θnxn(i)y(i))xj(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} J(θ0​,θ1​...θn​)∂θj​∂​J(θ0​,θ1​...θn​)​=2m1​i=1∑m​(θ0​+θ1​x1(i)​+...+θn​xn(i)​−y(i))2=J(θ0​+θ1​x1(i)​+...θn​xn(i)​−y(i))∗xj(i)​​

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

特征缩放(Feature Scaling)

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

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

  • 均值归一(Mean normalization): xi=xiμisix_i=\frac{x_i-\mu_i}{s_i}xi​=si​xi​−μi​​

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

    si=xi的取值范围(maxmin)s_i = x_i\text{的取值范围}\qquad (max-min)si​=xi​的取值范围(max−min)

多项式回归(Polynomial regression)

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

正规方程(Normal Equation)

对于 mmm 个样本,nnn 个特征 的训练,我们可以表示mmm个输入x(i)x^{(i)}x(i)和一个输出yyy
把所有的特征向量x(i)x^{(i)}x(i)构造出设计矩阵(design matrix)XXX。
x(i)=[x0ix1ix2i...xni]Rn+1X=[(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} x(i)=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡​x0i​x1i​x2i​...xni​​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤​∈Rn+1X=⎣⎢⎢⎢⎢⎢⎢⎡​(x(1))T(x(2))T...(x(m))T​⎦⎥⎥⎥⎥⎥⎥⎤​y=⎣⎢⎢⎢⎢⎢⎢⎡​y(1)y(2)...y(m)​⎦⎥⎥⎥⎥⎥⎥⎤​
那么就可以神奇的得到向量θ\thetaθ,里面的数就是最优的参数。
θ=(XTX)1XTy \theta=(X^TX)^{-1}X^Ty θ=(XTX)−1XTy

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

  • 一般情况下XTXX^TXXTX都是可以求逆的,就算不可以求逆,OctaveOctaveOctave里的函数pinvpinvpinv也能够计算出逆。
  • 不可求逆的一般原因:
    • 特征之间线性依赖,存在多余的特征
    • 特征过多 (mnm\le nm≤n)
      • 删除掉无关特征,或者使用正则化(regularization)

参考资料

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

【吴恩达机器学习】线性回归 Linear Regression【吴恩达机器学习】线性回归 Linear Regression Elliott__ 发布了237 篇原创文章 · 获赞 25 · 访问量 2万+ 私信 关注
上一篇:单应矩阵


下一篇:矩阵的线性变换