吴恩达-机器学习笔记(第一周)
一、引言
1.2 机器学习是什么?
Tom Mitchell:一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P,当且仅当,有了经验E后,经过P评判,程序在处理T时的性能有所提升。
e.g.经验E 就是程序上万次的自我练习的经验,任务T 就是下棋。性能度量值P 就是它赢得比赛的概率。
1.3 监督学习
监督学习:给学习算法一个由“正确答案”组成的数据集,然后运用学习算法,算出更多的正确答案(作出预测)。
回归问题:e.g.预测房价。回归是指,推测出这一系列连续值属性。
分类问题:e.g.估算良恶性肿瘤概率。分类指的是,我们试着推测出一组离散的输出值(0,1,2,3,……)。
希望获取大量(无限多)特征来做推测
–>无限多个特征的处理、存储
–>算法:支持向量机,里面有一个巧妙的数学技巧,能让计算机处理无限多个特征。
1.4 无监督学习
无监督学习:已知的只有一个数据集,不给标签(没法提前知道哪些是哪些)。无监督学习需要针对数据集,自动地找到数据中的结构,把这些数据自动地聚类到各个类。所以叫做聚类算法。
聚类应用:(例子)
谷歌新闻:搜索众多的新闻事件,自动地把同一主题的新闻事件聚类到一起;
组织大型计算机集群:解决什么样的机器易于协同地工作;
社交网络的分析;
鸡尾酒宴问题(分离音频);
others:
Octave编程环境。对大量机器学习算法,第一步是建原型。
二、单变量线性回归(Linear Regression with One Variable)
2.1 模型表示
回归一词指的是,我们根据之前的数据预测出一个准确的输出值。
分类问题,当我们想要预测离散的输出值,
m
m
m 代表训练集中实例的数量
x
x
x 代表特征/输入变量
y
y
y代表目标变量/输出变量
(
x
,
y
)
(x,y)
(x,y) 代表训练集中的实例
(
x
(
i
)
,
y
(
i
)
)
(x^{(i)},y^{(i)})
(x(i),y(i)) 代表第i 个观察实例
h
h
h 代表学习算法的解决方案或函数也称为假设(hypothesis),是一个从
x
x
x 到
y
y
y 的函数映射。
![模型示意图](https://i-blog.csdnimg.cn/blog_migrate/72b9c4485ae6d643e124463465906559.png)
h θ ( x ) = θ 0 + θ 1 x h_{\theta}(x)=\theta_{0}+\theta_{1}x hθ(x)=θ0+θ1x,只含有一个特征/输入变量,因此这样的问题叫做单变量线性回归问题
2.2 代价函数
训练集
S i z e Size Size i n in in f e e t 2 ( x ) feet^{2}(x) feet2(x) | P r i c e Price Price i n in in 100 0 ′ s ( y ) 1000's(y) 1000′s(y) |
---|---|
2014 | 460 |
1416 | 232 |
1534 | 315 |
852 | 178 |
… | … |
Hypothesis:
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_{\theta}(x)=\theta_{0}+\theta_{1}x
hθ(x)=θ0+θ1x
θ
i
\theta_{i}
θi's: Parameters
How to choose
θ
i
\theta_{i}
θi's
选择合适的参数(parameters)θ0
和θ1(斜率、截距)决定了我们得到的直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距(下图中蓝线所指)就是建模误差(modeling
error)。
选出使得modeling error的平方和最小的模型参数。 即使得代价函数
J
(
θ
0
,
θ
1
)
J(\theta_0, \theta_1)
J(θ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)=2m1i=1∑m(hθ(x(i))−y(i))2
误差平方代价函数,对于对于大多数线性回归问题非常合理的。
Hypothesis:
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_{\theta}(x)=\theta_0+\theta_1x
hθ(x)=θ0+θ1x
Paramaters:
θ
0
,
θ
1
\theta_0,\theta_1
θ0,θ1
Cost Function:
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)=2m1i=1∑m(hθ(x(i))−y(i))2
2.5 梯度下降
梯度下降思想:开始,随机选择一个参数的组合(θ0,θ1,…,θn ),计算J,然后寻找下一个能让J下降最多的参数组合。持续操作至到达一个局部最小值(local minimum),但不能确定得到的局部最小值是否是全局最小值(global minimum)。
理解:想想自己站在山顶一小步一小步往下寻找最快下山的路径。
批量梯度下降(batch gradient descent)算法的公式为:
repeat until convergence{
θ 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\quad(for\,j=0\;and\;j=1) θj:=θj−α∂θj∂J(θ0,θ1)(forj=0andj=1)
}
a:学习率(learning rate),它决定下山迈出的步子有多大。
在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
即,所有θj都减去微分项,然后所有θj都要更新成减去微分项后的值,然后再走下一步。
同时更新是梯度下降中的一种常用方法,是更自然的实现方法。
2.6 梯度下降的直观理解
在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度。所以实际上没有必要再另外减小
α
\alpha
α.
2.7 梯度下降的线性回归
对我们之前的线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即:
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
=
∂
∂
θ
j
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
\frac{\partial}{\partial\theta_j} J(\theta_0,\theta_1)=\frac{\partial}{\partial\theta_j}\frac{1}{2m}\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2
∂θj∂J(θ0,θ1)=∂θj∂2m1i=1∑m(hθ(x(i))−y(i))2
j=0时:
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
=
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
\quad\frac{\partial}{\partial\theta_j} J(\theta_0,\theta_1)=\frac{1}{m}\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})
∂θj∂J(θ0,θ1)=m1i=1∑m(hθ(x(i))−y(i))
j=1时:
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
=
1
m
∑
i
=
1
m
(
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
(
i
)
)
\quad\frac{\partial}{\partial\theta_j} J(\theta_0,\theta_1)=\frac{1}{m}\sum_{i=1}^m((h_{\theta}(x^{(i)})-y^{(i)})x^{(i)})
∂θj∂J(θ0,θ1)=m1i=1∑m((hθ(x(i))−y(i))x(i))
则算法改写成:
repeat until convergence{
θ 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−αm1i=1∑m(hθ(x(i))−y(i))
θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x ( i ) ) \theta_0:=\theta_0-\alpha\frac{1}{m}\sum_{i=1}^m((h_{\theta}(x^{(i)})-y^{(i)})\cdot x^{(i)}) θ0:=θ0−αm1i=1∑m((hθ(x(i))−y(i))⋅x(i))
}
批量梯度下降,指的是在梯度下降的每一步中,我们都用到了所有的训练样本,在梯度下降中,在计算微分求导项时,我们需要进行求和运算,所以,在每一个单独的梯度下降中,我们最终都要计算这样一个东西,这个项需要对所有m个训练样本求和。因此,批量梯度下降法这个名字说明了我们需要考虑所有这一"批"训练样本,而事实上,有时也有其他类型的梯度下降法,不是这种"批量"型的,不考虑整个的训练集,而是每次只关注训练集中的一些小的子集。在后面的课程中,我们也将介绍这些方法。
用线性代数 计算代价函数J最小值的数值解法,**正规方程(normal equations)**的方法。数据量较大时,梯度下降法比正规方程要更适用一些。
三、线性代数回顾(Linear Algebra Review)
略