吴恩达机器学习系列一
什么是机器学习
Arthur Samuel (1959):在没有明确设置的情况下,使计算机具有学习能力的研究领域
Tom Mitchell(1998):计算机程序从经验E中学习,解决某一任务T,进行某一性能度量P,通过P测定在T上的表现因经验E而提高
举例:
通过人工把邮箱里的邮件标记为垃圾邮件与否,使程序能够自动识别垃圾邮件
T:分类邮件是否是垃圾邮件
E:观察邮件的标签是否是垃圾邮件
P:正确归类的邮件的比例
机器学习算法
有监督学习(Supervised learning)
定义
给算法一个数据集,且数据集中的每个样本都被告知了正确答案(有标签),通过数据集进行学习得到预测的正确的值。
回归算法、分类算法
无监督学习(Unsupervised learning)
定义
给算法一个数据集,数据集中的每个样本都没有标签或者有相同的标签。
无监督学习可以把这些数据分为不同的簇
聚类算法
线性回归(Linear regression)
有监督学习
训练集标识符(training set)
m
= 训练样本的数量training example
x's
= 输入变量 / 特征features
y's
= 输出变量 / 目标变量(要预测的) “target” variable
(x,y)
= 一个训练样本
(x^(i),y^(i))
= 第i个训练样本
监督学习算法是如何工作的
以房价预测为例子
h:假设函数 -->>这是学习算法的目的 —>>预测y关于x的函数
代价函数
线性回归的整体目标函数,即是确定 θ 0 、 θ 1 \theta_0 、 \theta_1 θ0、θ1的值,使得平均误差【 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 \frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^{2} 2m1∑i=1m(hθ(x(i))−y(i))2】最小。/ 训练集中预测值和真实值的差的平方的和最小的1/2m最小的 θ 0 、 θ 1 \theta_0 、 \theta_1 θ0、θ1
定义一个代价函数(平均误差代价函数):
J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta_0,\theta_1) = \frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^{2} J(θ0,θ1)=2m1∑i=1m(hθ(x(i))−y(i))2
关于 θ 0 和 θ 1 \theta_0和\theta_1 θ0和θ1对函数 J ( θ 0 、 θ 1 ) J(\theta_0 、 \theta_1) J(θ0、θ1)求最小值
代价函数作用
代价函数 J ( θ 0 , θ 1 ) J(\theta_{0},\theta_{1}) J(θ0,θ1)的图像:
梯度下降
一种可以用于最小化代价函数 J J J的算法
也可用于更一般的函数
梯度下降算法:
repeat until 收敛{
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
(
f
o
r
j
=
0
a
n
d
j
=
1
)
\theta_{j} := \theta_{j}-\alpha\frac{\partial}{{\partial}\theta_{j}}J(\theta_{0},\theta_{1}) \quad (for \quad j = 0\quad and\quad j=1)
θj:=θj−α∂θj∂J(θ0,θ1)(forj=0andj=1)
}
α \alpha α:学习率,用来控制梯度下降时,我们迈出多大的步子;梯度下降的速度
如果 α \alpha α过小,收敛速度太慢;如果 α \alpha α过大,则有可能无法得到收敛值
如果到达局部最优值,就不再改变
同时更新 θ 0 、 θ 1 \theta_0 、 \theta_1 θ0、θ1
t e m p 0 : = θ 0 − α ∂ ∂ θ 0 J ( θ 0 , θ 1 ) temp0 := \theta_{0}-\alpha\frac{\partial}{{\partial}\theta_{0}}J(\theta_{0},\theta_{1}) temp0:=θ0−α∂θ0∂J(θ0,θ1)
t e m p 1 : = θ 1 − α ∂ ∂ θ 1 J ( θ 0 , θ 1 ) temp1 := \theta_{1}-\alpha\frac{\partial}{{\partial}\theta_{1}}J(\theta_{0},\theta_{1}) temp1:=θ1−α∂θ1∂J(θ0,θ1)
θ 0 : = t e m p 0 \theta_{0}:=temp0 θ0:=temp0
θ 1 : = t e m p 1 \theta_{1}:=temp1 θ1:=temp1
梯度下降法用于线性回归
线性回归算法:
repeat until 收敛{
θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) \theta_{0} := \theta_{0}-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)}) θ0:=θ0−αm1∑i=1m(hθ(x(i))−y(i))
θ 1 : = θ 1 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x ( i ) \theta_{1} := \theta_{1}-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)}){\cdot}x^{(i)} θ1:=θ1−αm1∑i=1m(hθ(x(i))−y(i))⋅x(i)
}
同步更新 θ 0 , θ 1 \theta_{0},\theta_{1} θ0,θ1
由于线性回归的代价函数总是一个碗型,因此没有局部最优,因此总会收敛至全局最优
这时也叫“Batch”梯度最优;因为每一步下降都使用了所有的训练样本数据。
矩阵和向量
矩阵
以数字组成的矩形阵列,并写在方括号内
矩阵的维数 = 矩阵的行数 × 列数
A i j A_{i}{j} Aij表达的是第i行第j列的元素
向量
向量是特殊的矩阵
是一个n×1的矩阵(只有一列)
y i y_{i} yi表示第i个元素
运算
矩阵加法
只有维度相同的两个矩阵才能相加
标量和矩阵乘法
得到的仍是和原矩阵相同维度的新矩阵
两个矩阵相乘
矩阵向量乘法
矩阵矩阵乘法
矩阵乘法特征
A × {\times} ×B ≠ {\neq} = B × {\times} ×A 矩阵乘法不服从交换律
A × {\times} × B × {\times} × C = (A × {\times} ×B) × {\times} ×C = A × {\times} ×(B × {\times} ×C) 服从结合律
单位矩阵
对任意矩阵A来说:
A ⋅ I = I ⋅ A = A A{\cdot} I = I {\cdot} A = A A⋅I=I⋅A=A
逆和转置
逆矩阵
如果一个矩阵A是m × {\times} ×m的,那么它有一个逆矩阵:
A A − 1 = A − 1 A = I . AA^{-1} = A^{-1}A=I. AA−1=A−1A=I.
此时A也称为方阵,实际上只有方阵才有逆
不存在逆矩阵的矩阵被称为奇异矩阵或者退化矩阵
矩阵的转置
A --> A T A^{T} AT
多元线性回归
多元线性回归的假设形式
x ( i ) x^{(i)} x(i)是一个n维向量,代表第i个训练样本
h θ ( x ) = θ T x = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n h_{\theta}(x) = \theta^{T}x= \theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+{\cdots}+\theta_{n}x_{n} hθ(x)=θTx=θ0+θ1x1+θ2x2+⋯+θnxn
表示为两个向量内积
多元梯度下降法
可以把 θ 0 , θ 1 , . . . , θ n \theta_{0},\theta{1},...,\theta{n} θ0,θ1,...,θn看做一个n+1维向量 θ \theta θ
因此代价函数 J ( θ 0 , θ 1 , . . . , θ n ) J(\theta_{0},\theta{1},...,\theta{n}) J(θ0,θ1,...,θn)又可以看做 J ( θ ) J(\theta) J(θ)
梯度下降:
repeat {
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
0
,
.
.
.
,
θ
n
)
\theta_{j} := \theta_{j}-\alpha\frac{\partial}{{\partial}\theta_{j}}J(\theta_{0},...,\theta_{n}) \quad
θj:=θj−α∂θj∂J(θ0,...,θn)
}
(同步更新每一个
j
=
0
,
.
.
.
,
n
j=0,...,n
j=0,...,n)
用于多元线性回归的梯度下降函数:
Repeat{
θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x j ( i ) \theta_{j} := \theta_{j}-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)}){\cdot}x^{(i)}_{j} θj:=θj−αm1∑i=1m(hθ(x(i))−y(i))⋅xj(i)
}
(同步更新
θ
j
,
j
=
0
,
.
.
.
,
n
\theta_{j},{\quad}j=0,...,n
θj,j=0,...,n)
实用技巧
特征缩放
通过特征缩放来减少偏移,使得可以更快地收敛
通常特征缩放的目标是:将每个特征的取值约束在[1,1]的范围内
如果特征值在[-3,3]或[ − 1 3 , 1 3 -\frac{1}{3},\frac{1}{3} −31,31]内,则也不需要缩放
均值归一化
x 1 = x 1 − μ 1 s 1 x_{1} = \frac{x_{1}-\mu_{1}}{s_{1}} x1=s1x1−μ1
【 μ 1 {\mu}_{1} μ1是均值, s 1 s_{1} s1是该特征值的范围(最大值-最小值)】
学习率
保证梯度下降算法正常运行——每一步迭代之后 J ( θ ) J(\theta) J(θ)都会下降
画出代价函数 J ( θ ) J(\theta) J(θ)随迭代步数的变化曲线来判断是否正常运行 以及什么时候停止
则说明 α \alpha α 过大,通常使用更小的 α \alpha α 就可以解决问题
总之,如果 α {\alpha} α太小,可能会导致收敛太慢;
如果 α {\alpha} α太大, J ( θ ) J(\theta) J(θ)可能会不下降
特征选择和多项式回归
特征
例子:
当预测价格时,可以创造一个新的特征:Area面积来取代长、宽两个特征
多项式回归
有可能不止使用一元线性来拟合
此时,特征缩放就更加重要了
正规方程(区别于迭代方法的直接解法)
正规方程法只需要一步就能得到最终值
举例:
θ = ( X T X ) − 1 X T y \theta = (X^{T}X)^{-1}X^{T}y θ=(XTX)−1XTy
( X T X ) − 1 (X^{T}X)^{-1} (XTX)−1为X的转置乘以X 再取逆
直接得出最终的最小化代价函数 J ( θ ) J(\theta) J(θ)
使用正则方程时,不需要特征缩放
何时使用梯度下降,何时使用正规方程法?
m个样本量,n个特征
梯度下降算法 | 正规方程法 |
---|---|
需要选择学习率 α {\alpha} α | 不需要选择学习率 α {\alpha} α |
需要更多次的迭代 | 不需要迭代 |
在n非常大的时候也可以运行良好 | 如果n很大就会计算缓慢(O( n 3 ) n^{3}) n3)) |