写在前面:
在友人的推荐下,开始入李航老师的坑,《统计学习方法》。
读到第二章,感知机,李航老师由浅入深让我有了很好的理解,现在自己总结一下思路。
正文:
感知机用于二分类问题,由浅开始:假定我们有一个平面上存在许许多多的蓝色点和红色点,并且假设存在一条直线可以将蓝红两色的点分隔在直线两侧(即书中所说的数据线性可分)。我们如何找到一条这样的直线y=wx+b呢?
同理:将这个问题推广到n维空间中,在空间若存在两组不同的特征点,我们是否能找到一个超平面来将这两组截然不同的目标分隔在超平面两端呢?
由上述的问题,便引出了感知机这样的二分类模型。我们设定用于分隔数据的直线(超平面)表达式为y=wx+b(在二维平面中,w、b为一个数;而在n维平面中w为数组,b还是一个数),我们将直线一侧的数据分类结果表示为1,另一侧我们用-1来表示。很自然的,我们引出符号函数:
按照李航老师的思路,统计学习路线为:模型→策略→算法,我们先提出模型:
感知机的模型我们定义为:;其中,。而在感知机模型中,w称为权重(weights),b称为偏置(bias)。
有了模型,我们就需要有一种学习策略,也就是如何优化这个模型,或者说如何衡量这个模型的优劣?很自然的一个想法,就是我们看一看分类错误的点的个数就能衡量模型的好坏。但是这种衡量方式对于w,b来说是一种离散的关系,无法求导,也就无从下手去优化w,b的值(找不到优化方向);第二种方法就是衡量被误分类的点到分类直线(超平面)的距离总和,距离总和越小,证明我们分类的越准确。
基于上述思路,我们首先提出任意一点到超平面的距离公式:
对于误分类问题来说,,因为错误分类,当括号内>0时,<0,反之亦然。因此对于被误分类的点来说,它的距离公式就变为了:
(这里刚看的时候转不过弯,不明白为什么误分类的点距离要扩大倍,后来发现取值是1……蠢哭)
那么如果我们总共有M个点被误分类,那么这M个点的距离总和为:
不妨令上述距离变为L关于w、b的函数,那么我们希望通过改变w、b的值,令L变得越小越好。那么对于我们并不关心,它无非就是一个系数而已,因此将其省略后,L的函数为:
很明显,这个函数在存在误分类点时>0(非负,毕竟是距离嘛),在没有误分类点时为0。因此为了最小化L的取值,我们需要不断更新w,b的值。使用的方法是随机梯度下降法,我对随机的理解就是随便选取一个w0,b0的初值(随便选取一个直线or超平面)。然后L分别对w、b求偏导,那么根据求导结果:
其中η∈(0,1],叫做步长(step)或着学习率。
那么有了策略后,我们需要再提出一个算法来进行实操。
数中的第一个算法就是感知机学习算法的原始形式:
对于一个数据集,我们有了感知机的模型,有了学习率:
(1)首先我们随便取一个初值;
(2)选取一个训练集中的数据带入;
(3)如果≤0则存在误分类的情况,需要按照; 来更新w、b的取值
(4)再次重复(2)直到没有≤0,则训练结束。