感知机是一种二分类算法,其输入的实例为一特征向量,输出的实例的实例类别只有+1,-1两个值。 感知机属于线性分类模型,是判别模型的一种。其原理是,通过训练集求出一个分离超平面,将正负样本进行分离。 谈到超平面,我们自然地就想到了到这个平面的距离,嘿嘿,没错,感知机的损失函数就是基于样本到超平面的距离来度量的。
先来看看,感知机函数:
f(x)表示最终预测的分类,w*x+b被称为感知机模型参数。W被称作权值或权值向量,b叫做偏置,x表示输入的特征变量。 好啦,根据这个函数,我们要做的事情很简单,即确定函数参数来达到一个效果 —– 使正负样本在超平面两侧。白话的来说,让这个函数预测精确,即要达到下图效果。
那么,我们还得确定一个经验损失函数,来使经验损失最小化。因为有“距离”度量,损失函数定义为误分点到超平面S的总距离。经验损失函数定义如下:
这里||w||表示的是 w的 L2范数,作用的防止过拟合。
有了损失函数,那么如何判别样本是否为误分点呢?我们知道输出的结果只有{+1,-1},如果样本被误分,必然有:
因此,我们可定义误分点到超平面S的距离为:
那么,所有误分点到超平面S的距离公式如下,其中M为误分点的集合:
所以,损失函数L(w,b)最终可定义为:
自然,我们要求出损失函数的最小值minL(w,b)
这里,我们用到随机梯度下降法,即不断的对w和b求导,使函数沿着w和b最快的方向减小,直到损失函数L(w,b)不断减小直至为0。具体步骤如下: 随机选取一个误分类点(xi,yi),定义学习速率η,对w,b进行更新 综上所述,感知机算法如下(李航老师版《统计学习方法》定义):
到这里,感知机算法算是讲完啦,那么感知机算法使用前提是什么呢?对了,那就是数据集必须线性可分,否则无法使用,线性可分定义如下:
感知机和支持向量机都是通过“距离”来对样本进行区分。它们的区别在于: 1. 感知机只支持线性可分数据集;而支持向量机有核函数,支持线性不可分的数据集, 2. 感知机通过梯度下降法,求误分类样本到超平面的距离来确定参数的取值;支持向量机都过求超平面到样本的最大距离来确定参数的取值
李航版 《统计学习方法》