感知机是一个二类分类的线性分类模型。所谓二类分类就是它只能将实例分为正类和负类两个类别。那么为什么是线性分类模型呢,我的理解是感知机学习旨在求出可以将数据进行划分的分离超平面,而分离超平面的方程:
为线性方程,所以感知机为线性分类模型。
模型如下图所示:
sign(x)={+1,x≥0
由此我们可以得到由输入空间到输出空间的函数
感知机学习的目的就在于确定参数w和b的值。
给定一个线性可分的数据集:
为了确定感知机模型的参数w和b,需要确定一个学习策略,即定义一个损失函数并将损失函数极小化。感知机采用的损失函数为误分类点到超平面的总距离。首先写出输入空间Rn中任一点到分离超平面的距离:
这里是 的范数。
其次对于误分类的数据来说,
因为当,而当 ,
因此误分类点x_i到超平面的距离是:
这样假设误分类点的集合为M,那么所有误分类点到超平面的总距离为:
不考虑,就得到感知机学习的损失函数
显然,损失函数是非负的。如果没有误分类点,损失函数值为0,而且,误分类点越少,误分类点离超平面越近,损失函数的值越小。 感知机学习的策略是在假设空间中选取使损失函数最小的模型参数。
感知机学习算法是误分类驱动的,具体采用随机梯度下降法。首先,任意选取一个超平面w0,b0,然后用梯度下降法不断地极小化损失函数。极小化过程中不是一次使M中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。损失函数的梯度为:
随机选取一个误分类点,对进行更新:
综上所述,得到如下算法(感知机学习算法的原始形式)
输入:训练集,其中,;学习率;
输出:w,b;感知机模型