感知机算法
基本概念
一个感知机(线性分类器),目的是找一个超平面将数据集正确分为两类。数据集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
迭代过程
对于迭代中的一次:
- 将数据集(X,y)的X带入f(X),得出预测的类别y'
- 和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变小,点更可能被分到负类
终止条件
此轮迭代结束,然后继续进行迭代,直到:
- 没有误分类的点
- 或达到次数上限
评论区