感知机(perceptron)是一种二类分类的线性分类模型,也就是说,使用于将数据分成两类的,并且数据要线性可分的情况。线性可分是指存在一个超平面能够将空间分成两部分,每一部分为一类,感知机的目的就在于找这样的一个超平面。
假设输入数据形式为x = (x1,x2....xn),即所谓的特征向量。y代表输入数据的类别,为{+1,-1},感知机的形式为f(x) = sign(w*x+b),当w*x+b>=0时,f(x)=+1,当w*x+b<0时,f(x)=-1.
f(x)就是我们对输入数据的分类,感知机的目的就在于找到合适的w和b,使得f(x)能正确分类。w是和x维数相同的向量(一个是行向量,一个是列向量),w是我们求的超平面的法向量,b是超平面的截距。
定义损失函数:误分类点到超平面的总距离(不定成误分类的点的个数是因为这样损失函数对w,b不是连续可导,不易优化),假设误分类点为0,那么总距离为0.
空间中任意一点到超平面的距离为|w*x+b|/(||w||),我们只要使得分子部分变成0就行。
对于误分类点(xi,yi)来说,如果w*xi+b>=0,本应该为+1,但是误分类的话yi=-1,如果w*xi+b<0,本应该为-1,但是误分类的话yi=+1,这样我们就能得到-yi(w*xi+b)>0,即我们可以使对误分类点的-yi(w*xi+b)求和,使之最小化,当然这里是指变成0.
那么具体是如何求w,b的呢?(下面是感知机算法的原始