1. 感知机模型的引入
由信用卡发放问题引入感知机模型。假设现在有历史的信用卡发放数据,需要学习一个模型来,用来评判是否发放给一个新用户信用卡。
用户具有不同的特征,对这些特征加权得到一个分数,如果最终分数大于某个值,就发放,否则不发放。抽象为数学模型如下:
那么,我们就需要使用数学模型来学习这些加权系数w。
为了分析方便,现在考察维度为2的线性可分问题。
那么,我们接下来要做的工作就是利用数据集D,从所有的分割超平面的集合中找出最接近真是的f的那个分割超平面g。
2. 感知机的学习算法PLA
我们想要g 近似于 f,这这么办?我们稍微放宽一点,让g在D上接近于f,但这也是很难办到的,因为g的可能性是非常多的,所有我们引入PLA来解决。
基本思想就是:从某个g0 开始,修正分类错误的那些结点,更新g0得到g1,再修正,循环往复。
如图所示,如果一个本来为+1的点分类错误,那么就代表w和x的夹角太大了,使用w + x来进行修正。
如果一个本来为-1的点分类错误,那么就代表w和x的夹角太小了,使用w - x来进行修正。
3.规范化使用数学语言描述
我们之前由信用卡发放问题引入解决二分类问题的感知机模型,并从几何角度提出了感知机的求解方法。现在我们应入损失函数,并使用随机梯度下降算法来求解感知机。其实最后的到的结果和之前的直观分析是一样的。
感知机的学习:
假设数据时线性可分的,那么我们需要寻找某个分割超平面使得数据都能够被正确分类。现在我们需要来定义一个损失函数,并将损失函数极小化。
一个直观的思路是误分类点的个数作为损失函数,但是这样的损失函数不是参数w b的可导函数,不易优化,所以这里我们定义损失函数为误分类点到超平面的总距离。
,其中集合M表示误分类点的集合。
现在忽略前边的损失函数,那么我们就得到感知机的损失函数,具体描述如下:
好了,接下来我们的目标就是需要最小化损失函数,由于损失函数关于w b是可导的,这里可以使用随机梯度下降算法,一次随机选取一个误分类点使得其梯度下降。
4. 算法收敛性分析
思考这样一个问题,对于线性可分的数据,PLA算法一定会停下来吗?答案是一定的。
可知,每次迭代之后,wf与wt的内积是在增大的,似乎就表明这两个向量越来越接近,但实际上还有问题,因为可能是由于模的增大而导致了越来越大。接下来说明模值的增大速度是有限制的。
所以,内积是在不断增大的,模的增大速度是有限制的,可以得到(不理解怎么得到)
今天看了统计学习方法,理解了这部分内容。
内积的增大速度快于wt的模的增大速度,所以wf和wt是在不断靠近的。
这个算法的优点就是实现简单,但缺点是事先不确定是线性可分的,而且即使确定是线性可分的,也不确定它多久能够停下来。
好了,上述证明得到,如果数据集线性可分,那么感知机学习算法的原始形式迭代是收敛的。即经过有限步的迭代能够停下类。但是感知机的算法存在许多解,这些解依赖于初始值的选择,也依赖与迭代过程中误分类点的选择顺序,为了得到唯一的分离超平面,需要对分离超平面增加约束条件,这也就是线性SVM的想法。当训练集线性不可分时,感知机学习算法不收敛,迭代结果会发生震荡。
5. 感知机学习算法的对偶形式
这里与SVM的原始形式和对偶形式相对应。
基本思想是:将 w 和 b 转化为训练数据 x 和 y 的线性组合,通过求解其系数而求得 w b