感知机算法

基本概念

一个感知机(线性分类器),目的是找一个超平面将数据集正确分为两类。数据集A维度是n维(x1,x2...xn-1,y),那么求解的超平面就是w1x1+w2x2+...+wn-1xn-1=0,超平面的法向量即(w1,w2,...,wn-1)。

模型定义

由于类别只有两类,所以线性分类器的模型是f(X)=g(wX+b),其中:

  • 当wX+b≥0时,g(wX+b)=+1
  • 当wX+b<0时,g(wX+b)=-1

初始化

最初模型参数:

  • w=(0,0,...,0)
  • b=0

迭代过程

对于迭代中的一次:

  1. 将数据集(X,y)的X带入f(X),得出预测的类别y'
  2. 和y进行相乘
    • 若积>0,分类正确,继续迭代
    • 若积≤0,分类错误,进入参数调整阶段

参数更新

w的更新

w新=w旧+nyX

  • n是步长
  • y是正确的类别
  • X是数据集

这个公式本质上是通过向量加法实现超平面法向量的旋转,将点分配到正确的一侧:

  • w旧是当前的法向量
  • X可视为数据的方向向量
  • y则是决定超平面旋转的方向(法向量所指的一侧是正例)
  • 将yX乘以系数n避免更新太快,以此实现w向正确的一侧旋转

正类点情况(y=+1)

如果被错误分类了,说明这个点在超平面的负侧:

  • 这时yX=+X,w会向X方向调整(旋转)
  • 使得wX变大,点会被划分到正侧

负类点情况(y=-1)

如果被错误分类了,说明这个点在超平面的正侧:

  • 这时yX=-X,w会向-X方向调整(旋转)
  • 使得wX变小,点会被划分到负侧

b的更新

b新=b旧+ny

代表的就是超平面在w方向(法向量方向)的平移:

  • wX+b=0可变形为wX=-b
  • 意味着超平面上的点到原点的距离是b/||w||(点到平面距离公式)
  • 所以b的大小直接意味着超平面到原点的距离,也就是在法向量方向的平移

正类点被误分类(y=+1)

  • b增大(+n)
  • 超平面向w的反方向平移
  • 使得wX+b变大,点更可能被分到正类

负类点被误分类(y=-1)

  • b减小(-n)
  • 超平面向w的方向平移
  • 使得wX+b变小,点更可能被分到负类

终止条件

此轮迭代结束,然后继续进行迭代,直到:

  • 没有误分类的点
  • 或达到次数上限