统计学习方法——感知机
1.1 感知机的定义
1.2 感知机的学习策略
1.2.1 数据集的线性可分
1.2.2 感知机的损失函数
1.3 感知机算法
1.1 感知机的定义
感知机是一种线性分类模型,属于判别模型,用于处理二分类问题。感知机是分类模型中比较简单的一种,是神经网络和支持向量机的基础。
假设输入空间是 ,输出空间是,输入,表示特征向量,输出表示样本的类别。由输入空间到输出空间的函数称为感知机。和都是感知机的参数,叫做权值,叫做偏置。是符号函数,并且有
通俗的说,线性方程对应于特征空间(输入空间)的一个超平面,将整个输入空间分成两部分,每一部分对应于一个类别(下文为简便起见,这两个类定为+1和-1)。其中是这个超平面的法向量,是这个超平面的截距。
一个典型的感知机见下图(图片来源http://blog.csdn.net/dream_angel_z/article/details/48915561)
1.2 感知机学习策略
1.2.1 数据集的线性可分
通俗的来说,数据集的线性可分即是对于输入空间的所有向量,存在一个超平面,可以将数据集的正实例点和负实例点完全正确的分开,这也是感知机学习算法能够找到正确的超平面的条件。如果数据集不满足线性可分,那么感知机找到的超平面会在迭代过程中不断震荡。对于线性不可分的数据集,我们可以采用支持向量机,将输入向量映射到高维,当输入向量在高维线性可分时,再寻找一个超平面然后映射回低维。(这是线性不可分支持向量机的思想,在实际上用了更简便的方法)
当数据集线性可分时,我们能够找到超平面将数据点正确的划分。对于所有的实例,有,对于所有的实例,有。
1.2.2 感知机的损失函数
假设数据集是线性可分的,那么感知机的目标就是找出一个超平面将所有的正实例点和负实例点完全正确的分开,也就是寻找合适的参数
为了寻找合适的参数,我们定义了一个损失函数,采用的是所有误分类点到超平面的距离。我们通常认为一个向量距离超平面越近,它的分类准确率就越不可信。反之,如果距离超平面越远,分类准确率就越可信。因为一个向量越靠近超平面,那么下一次超平面变动时,它就越可能变成另外一类,所以它的分类准确率就越不可信。所以感知机的损失函数采用的是所有误分类点到超平面的距离,这也是有道理的。
首先,输入空间中任意一点到超平面的距离为:
这里是的范数。
对于误分类点,当时,,而当时,,所以恒成立。因此,误分类点到超平面的距离为:
那么,假设所有误分类点的集合为,所有误分类点到超平面的距离为:
我们的目的是让损失函数尽可能小,所以目标是找出参数,来使上面的这个式子尽可能小。而是一个常数,并不影响我们让损失函数最小,所以感知机的损失函数为:
1.3 感知机算法
现在我们有一个损失函数,并且目标是找出参数,来使损失函数尽可能小。也就是找出一个极小化问题的解:
其中是所有误分类点的集合
对于这种问题,我们通常使用梯度下降法来极小化目标函数。先对目标函数求偏导:
为了减少计算量,我们采用随机梯度下降,即随机选取一个误分类点,对进行更新:
其中是学习率,也是梯度下降中的步长。
所以感知机的原式算法为:
1. 选取的初值
2. 在训练集中选取样本
(a)若样本满足,更新
(b)转至2,直到训练集中没有误分类点
实例:
正实例点:,
负实例点:
用感知机算法的原始形式来求感知机模型。其中和均为二维向量。
解:首先确定最优化问题,然后按照原始算法来求解。我们设=1
(1)先取初值(不一定要都取零,但初值不同解可能不同)
(2)对,满足,即是一个误分类点,所以更新
,得到
(3)接着迭代,对于不满足,即分类正确,不更新。对有,所以更新
,得到
……
同理,最后得到,所有数据分类正确,算法终止。最后得到
分离超平面为:
感知机模型为: