Stanford机器学习__Lecture notes CS229. Logistic Regression(逻辑回归)(2)
这里其实我们要说的是感知器算法。
之所以要把感知器算法(Perceptron Learning Algorithm)放在这里,是因为这两个算法在形式上的相似性。
我们在logistic回归中,考虑到二分类问题,其输出标记y∈(0,1),而线性回归模型产生的预测值
hθ(x)=11+e(wTx)
当我们把对数几率函数(Logistic functino)替换为
g(z)={10if z≥0if z < 0
此时,另hθ(x)=g(θTx)
参数更新规则:
θjnew=θjold−α(hθ(x(i))-y(i))x(i)j,
到这里,我们就已经有了完整的感知器学习算法。
我们可以看到,这里的参数更新规则实际上跟logistic随机梯度下降的参数更新规则是一致的。
细心一点可以看出,其实
以2维空间为例:
对于所有满足
Perceptron Learning
Perceptron Learning Algorithm的目的是要找到一个perceptron,能把正确地把不同类别的点区分开来。在二维平面上,任何找一条直线都可以用来做perceptron,只不过有些perceptron分类能力比较好(分错的少),有些perceptron分类能力比较差(分错的多)。
自然,Perceptron Learning Algorithm需要找到一个好的perceptron。
Perceptron Learning要做的是,在“线性可分”的前提下,至少存在一个perceptron,可以做到百分百的正确率,对于任意的
我们把完美的Perceptron记作:
由一个初始的Perceptron开始,通过不断的learning,不断的调整
Perceptron Learning Algorithm (PLA) - “知错就改”的算法
PLA的方法如下:
PLA的
costfunction(x)=−∑错误分类的索引集合iyi(θxi+b) 为了简化我们之后的论证过程,在这里做出小改动:
1. 我们将负样本标记为-1
2. 基于1的改动,我们也需要把g(.)函数替换为:
sign(z)={1−1if z≥0if z < 0
3. 基于以上,我们需要变动参数的更新法则:
极小化cost function的梯度是对w和b求偏导,即:
∇θcostfunction=−∑yixi∇bcostfunction=−∑yi
这样,我们只需要对每个错分类的样本进行下面的更新即可:
θjnew=θjold+yix(j)i,
如果
直到找不到错误点,返回最后一次迭代的
Perceptron Learning Algorithm (PLA)收敛性证明
我们知道在数据线性可分的前提下,我们心目中有个完美的
,它能够完美的把圈圈和叉叉区分开来。那么如何证明PLA能够使
这里就要用到夹角余弦的公式,如果令t表示
- 当数据“线性可分”时,
θbest 是必然存在的,所以训练集中任意的(xi,yi) 都可以被正确分类,可知:
2. 下面证明在数据线性可分时,简单的感知机算法会收敛。
初始时
t次更新以后:
看起来
证:
根据上述的性质,我们可以求算
根据上式可得:
由于夹角余弦是小于等于1的,我们可以有:
1≥θbestθt|θbest||θt|≥t√*const常数
上面的不等式告诉我们两点:
- PLA能够帮助
θt 进步,因为θt 与θbest 的夹角余弦随着更新错误点的次数 t 的增加而增加,θt 越来越接近θbest 。 - PLA会停止(halt),因为当数据是线性可分时,经过有限次数的迭代,一定能找到一个能够把数据完美区分开的perceptron。
Pocket Algorithm
当数据线性不可分时(存在噪音),简单的PLA 算法显然无法收敛。我们要讨论的是如何得到近似的结果。即寻找
与简单PLA 的区别:迭代有限次数(提前设定);随机地寻找分错的数据(而不是循环遍历);只有当新得到的
由于计算
参考博客:
https://www.douban.com/note/319669984/
http://www.tuicool.com/articles/eeame2