Perceptron Classifier 感知机分类器

感知机模型

在n维度空间,有m个数据组成的线性可分的数据集,每个数据点都有对应的类别,但一共只有两个类别:,则存在一个超平面,( 其中 )能够准确地将所有的C1和C2数据区分开来,使得他们分别在在超平面的两边。

感知机只针对线性可分的数据,超平面在二维空间是一条线,在三维空间就是一个平面。

线性可分:

线性不可分:

超平面分类的判别方法是通过带入计算正负,比如:

作为1类

作为-1类

感知机的损失函数

感知机的学习过程就是将分错类的数据不断纠正的过程。设分类器对判定的类别是 ,而它实际的类别是 ,完美情况下当然希望所有点都能满足

即使不完美我们也知道一个好的分类器会有这两个特性:被分错的点尽可能少,即使被分错了,也距离超平面非常近。能够描述这两个的特性的,就是被分错的点到超平面的距离之和。所以可以把这个距离之和作为损失函数。

点到超平面的距离为:, 注意它是有正负的,1类的点到超平面的距离为正,-1类的点为负。我们关注被分错的点,不管是1类点被错分到-1类,还是-1类点被错分到1类,他们的距离取绝对值都是:

设所有分错的点的集合是,那么所有分错的点到超平面的距离和是:

忽略常数项 =>

对损失函数求导:

也就是说参数更新公式为:

的更新如果细化到每个维度,就是:

训练过程

输入:m个n维度的线性可分的已经标好label的数据集只有1或-1两种label。

输出:

1) 选择初始值 构建初始感知机分类器
2) 选择数据点进行分类,判断是否为分错的点,即如果则为分错的点。否则循环2)
3) 更新参数,因为每次只取一个点来更新参数,所以参数迭代公式可以简化为:

4)回到2)直到找不到分错的点

以上。