假设输入空间(特征空间)是,输出空间是
。输入向量x表示实例的特征向量,对应输入空间(特征空间)的点,输出y表示输入实例所属的类别。由输入到输出的关系映射如下:
上式为感知机模型,其中w表示权值向量,b表示偏置。sign是符号函数,即
![](https://i-blog.csdnimg.cn/blog_migrate/f96bbb399dc76c90735546e982dd3a2f.png)
在几何解释当中,我们可以将感知机看成是定义在内积空间当中的超平面,该平面的表达式如下
(1)感知机学习
由训练数据集(实例的特征及所属类别),求得感知机模型,即求得参数w和b。
(2)数据集的线性可分性
给定一个数据集,如果存在某个超平面S能够将数据集完全正确的分到超平面的两侧,则称该数据集是线性可分的,否则线性不可分。
(3)感知机学习策略
①目标:确定一个可将线性可分数据集完全正确分类的分类超平面S,即确定参数 w和b,使得损失函数最小。
②损失函数:感知机的损失函数定义为训练数据集中所有被错误分类的点到超平面 的总距离,输入空间中任意一个点x0到超平面S的距离为
其中表示w的L2范数。
对于被错误分类的点,下式总是成立
因为对于错误分类点而言,yi表示实例点xi真实类别,而由于被错误分类,的符号总与yi相反,因此对于错误分类点上式总是成立。则x0到超平面S的距离可以表示为
则训练数据集中所有被错误分类的点到分离超平面S的总距离可以表示为
不考虑,则感知机学习策略的损失函数为
(1)目的:感知机的学习算法是对以下最优化问题的算法。给定一个训练数据集
求参数w,b,使其为以下损失函数极小问题的解
(2)算法:采用梯度下降法以串行更新(每个实例更新一次参数)的方式调整参数,根据 梯度下降法,对损失函数求w和b的偏导,可得
其中η为学习率,0<η<1。
(3)步骤:编程实现感知机学习算法
①随机选取初值-1<w0<1和b0=1。
②在训练数据集中选取实例点。
③如果,更新参数
源码在我的GitHub上有,用C语言实现,备注很详细,运行通过。
网址:https://github.com/FAmorris/Perceptron
装载请说明出处,请支持原创,在不收取他人费用下,可以随便传播学习,我们一起进步!
1. 参考李航《统计学习方法》