几天前一个同学问我感知机是啥?我随口就说,感知机还不简单,就是那种对线性可分的数据进行分类的分类器吗!然后发现自己很肤浅。还是需要总结一下吧!
一、感知机模型是一种要对线性可分的数据进行分类的一种分类器。产生于上世纪50年代,具有简单容易实现的特点。
$f(x)=sign(w*x+b)$
从数学我们知道w实际上就是这个超平面的法向量,b为截距。
对于所有的训练样本,如果为正类标记为+1,如果为负类标记为-1.
二、损失函数
所有误分类点到感知机超平面的距离之和, 定义为
$-\sum_{i \in M}y_{i}*(w*x_{i}+b)$
现在问题转化为了
$min_{w,b}L(w,b) = -\sum_{i \in M}y_{i}*(w*x_{i}+b)$
三、优化方法——随机梯度下降法
实际上上述损失函数可以看做关于w和b的一个线性多维函数,如果我们对w和b进行求导
$\nabla_{w}L(w,b) = -\sum_{i \in M}y_{i}*x_{i}$
$\nabla_{b}L(w,b) = -\sum_{i \in M}y_{i}$
我们知道随着梯度方向可以使损失函数下降最快,我们在这里随机选择一个误分类点,假设是$(x_{i},y_{i})$
我们对w和b进行更新。
$w=w+\alpha * y_{i}*x_{i}$
$b=b+\alpha * y_{i}$
算就可以这样设计,在更新完w,b之后再次计算误分类点,如果有随机找一个进行进一步的调整,最后一定会将所有的点正确分队,当然前提是数据是线性可分的,如果不可分会出现循环往复的情况,算法可能不会停止。
[1] “统计学习方法”,李航