机器学习定义
计算机程序从经验(experience) E 中学习解决某一任务(task) T 进行某一性能度量(performance) P,通过P测定在T上的表现因经验E而提高。
机器学习分类
- 监督学习(Supervised learning)
- 无监督学习(Unsupervised learning)
- 其他:
加强学习(reinforcement)
推荐系统(recommender systems)
监督学习
监督学习就是给出算法一个数据集,其中包含了正确答案。
每个样本都有正确的答案(标签)。
通过算法预测的出正确答案。
- 回归问题:预测一个连续值输出
比如:房价预测 - 分类问题:预测离散值输出
比如:癌症预测
无监督学习
无监督学习给的数据集中样本没有任何标签,不知道要拿他做什么,也不知道每个数据点究竟是什么,只被告知有一个数据集,找出他们的某种结构。
无监督学习算法可能判定该数据集包含两个不同的簇。
- 聚类算法:将数据分为不同的簇
比如:市场划分,天文数据分析
线性回归算法模型
1. 线性回归平方差代价函数
预测一个 real-valued 输出,
Note:
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 i i 个训练样本
h为假设函数
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_\theta(x) = \theta_0 + \theta_1 x
hθ(x)=θ0+θ1x
线性方程整体目标函数:
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
\frac{1}{2m} \sum\limits_{i=1}^m(h_\theta(x^{(i)}) - y^{(i)})^2
2m1i=1∑m(hθ(x(i))−y(i))2
参数
θ
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\limits_{i=1}^m(h_\theta(x^{(i)}) - y^{(i)})^2
J(θ0,θ1)=2m1i=1∑m(hθ(x(i))−y(i))2
目标:
最
小
化
J
(
θ
0
,
θ
1
)
最小化J(\theta_0 , \theta_1)
最小化J(θ0,θ1)
选用平方差代价函数也许是解决回归问题最常用的手段
2. 线性回归代价函数J最小化的梯度下降法
Outline:
- 给定 θ 0 , θ 1 \theta_0, \theta_1 θ0,θ1
- 持续改变
θ
0
,
θ
1
\theta_0, \theta_1
θ0,θ1的值去减小
J
(
θ
0
,
θ
1
)
J(\theta_0, \theta_1)
J(θ0,θ1),直到找到
J
J
J的最小值或者局部最小值
算法描述:
repeat until convergence{
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
\theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)
θj:=θj−α∂θj∂J(θ0,θ1) (for j = 0 and j = 1)
}
即
repeat until convergence{
θ
0
:
=
θ
0
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
\theta_0:=\theta_0-\alpha\frac{1}{m} \sum\limits_{i=1}^m(h_\theta(x^{(i)}) - y^{(i)})
θ0:=θ0−αm1i=1∑m(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\limits_{i=1}^m(h_\theta(x^{(i)}) - y^{(i)})·x^{(i)}
θ1:=θ1−αm1i=1∑m(hθ(x(i))−y(i))⋅x(i)
}
α \alpha α为学习率(learning rate),用来控制梯度下降速度, α \alpha α越大速度越快。
∂ ∂ θ j J ( θ 0 , θ 1 ) \frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1) ∂θj∂J(θ0,θ1)为一个导数项
Correct:Simultaneous update
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
"Batch"梯度下降算法
以上梯度下降算法也叫"Batch"梯度下降算法,每一步梯度下降都遍历了数据集的全部样本。
当然也有其他梯度下降算法每次没有全览整个训练集,每次只关注小子集。