Fork me on GitHub

吴恩达笔记2_梯度下降和正规方程

吴恩达机器学习-2-梯度下降与正规方程

第二周主要讲解的内容包含:

  • 多维特征
  • 多变量梯度下降
  • 梯度下降法实践
  • 正规方程

多维特征Multiple Features

还是利用房价模型的例子,增加了更多的特征,比如:房间楼层、房间数量、地理位置等,构成了一个含有多个变量的模型

n:代表的是特征的数量

$x^{(i)}$:代表第$i$个训练实例,是特征矩阵中的第$i$行,是一个向量vector

$x^{(i)}_{j}$:表示的是第$i$个训练实例的第$j$个特征;i表示行,j表示列

支持多变量的假设$h$表示为: $$ h_{\theta}(x)=\theta_0+\theta_1x_1+…+\theta_nx_n $$ 为了简化公式,引入$x_0=1$,公式转化为: $$ h_{\theta}(x)=\theta_0x_0+\theta_1x_1+…+\theta_nx_n $$ 特征矩阵X 的维度是$m*(n+1)$,公式简化为: $$ h_{\theta}{(x)}=\theta^{T}X $$


多变量梯度下降

算法目标

与单变量线性回归类似,在多变量线性回归中,构建一个代价函数,则这个代价函数是所有建模误差的平方和,即:

其中:

算法过程

Python代码

给定特征矩阵X,输出y,学习率$\theta$,求代价函数$J$

1
2
3
4
5
import numpy as np

def computeCost(X,y,theta):
inner = np.power(((X * theta.T) - y), 2) # 求解每个平方项
return np.sum(inner) / (2 / len(X)) # 求和再除以2*len(X)

梯度下降法实践

特征缩放

面对多维度特征问题,我们需要保证这些特征具有相近的尺度,帮助梯度下降算法更快地收敛。

以房价问题为例,假设仅用两个特征,房屋的尺寸和数量,以两个参数分别为横纵坐标,假设尺寸在0-2000平方英尺,数量在0-5之间。

绘制代价函数的等高线图能,看出图像会显得很扁,梯度下降算法需要非常多次的迭代才能收敛。

解决办法:将所有的特征的尺度尽量缩放到-1到1之间,令: $$ x_n=\frac{x_n-u_n}{s_n} $$ 其中$u_n$为平均值,$s_n$为标准差

均值归一化

学习率问题

梯度下降算法的每次迭代受到学习率的影响

  • 如果学习率过小,则达到收敛所需的迭代次数会非常高,收敛速度非常慢
  • 如果学习率过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛

常用学习率包含:$\alpha=0.01, 0.03, 0.1, 0.31, 3,10$

特征和多项式回归

如房价预测问题, $$ h_{\theta}{(x)} = \theta_0+\theta_1 \cdot宽度 + \theta_2 \cdot 深度 $$ 同时房屋面积=宽度 * 深度

在实际拟合数据的时候,可能会选择二次或者三次方模型;如果采用多项式回归模型,在运行梯度下降法之前,特征缩放很有必要。

正规方程 Normal Equation

梯度下降缺点

需要多次迭代才能达到局部最优解

正规方程demo

正规方程具有不可逆性

正规方程就是通过求解下面例子中的方程找出使得代价函数最小参数$\theta$:

不可逆矩阵不能使用正规方程求解

Normal Equation VS Gradient Descent

梯度下降和正规方程的比较:

参数$\theta$求解过程

正规方程的Python实现

1
2
3
4
5
import numpy as np

def normalEquation(X, y):
theta = np.linalg.inv(X.T@X)@X.T@Y # X.T@X等价于X.T.dot(X) @等价于.dot
return theta

本文标题:吴恩达笔记2_梯度下降和正规方程

发布时间:2019年11月25日 - 19:11

原始链接:http://www.renpeter.cn/2019/11/25/%E5%90%B4%E6%81%A9%E8%BE%BE%E7%AC%94%E8%AE%B02-%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea