机器学习定义
计算机程序从经验(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"梯度下降算法,每一步梯度下降都遍历了数据集的全部样本。
当然也有其他梯度下降算法每次没有全览整个训练集,每次只关注小子集。