感知机是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1,-1两个值。感知机通过训练数据得出一个分离超平面,根据这个分离超平面对新的输入实例进行分类,取+1,-1。感知机的学习算法分为原始形式和对偶形式,使神经网络与支持向量机的基础。
感知机模型
假设输入空间(特征空间)是X∈R^n,输出空间是Y∈{+1,-1},输入x∈X表示实例的特征向量,对应于输入空间的点,输出y∈Y表示实例的类别。由输入空间到输出空间的感知机数学模型是:
f(x)=sign(w·x+b)
其中,w和b为感知机的模型参数,w∈R^n叫做权值或权值向量,b∈R叫偏置,w·x表示w和x的内积。sign是符号函数,即
sign(x)= +1, x>=0
-1, x<0
我们所求的超几何平面的公式为
w·x+b=0
通过此超平面分类,输入特征若在超平面的一侧输出为+1,在另一侧输出为-1 。
感知机学习策略
若存在某个超平面S
w·x+b=0
能够将数据的正实例点和负实例点完全正确的划分到超平面的两侧,即对所有的yi=+1的实例i,有w·xi+b>0,对所有的yi=-1的实例i,有w·xi+b<0(即所有实例满足yi*(w·xi+b)>0),则称数据集为线性可分数据集;否则,称数据集线性不可分。
感知机采用的损失函数是误分类点到超平面S的总距离,其中一点到超平面的距离为
1/||w||*|w·x+b|
这里||w||是w的L2范数。
对于误分类点来说,满足下列关系
yi*(w·xi+b)<0
因此误分类点xi到超平面S的距离是
- (1/||w||*|w·x+b|)
不考虑1/||w||,就得到损失函数。
假定给定训练数据集
T={(x1,y1),(x2,y2),......,(xn,yn)}
我们定义的损失函数为L(w,b)=-∑yi(w·xi+b)
感知机学习算法
原始形式:
(1)选取初值w0,b0
(2)在训练集中选取数据(xi,yi)
(3)如果yi(w·xi+b)<=0
w<<w+η*yi*xi
b<<b+η*yi
η为学习率,0<η<=1
(4)转至(2),只知训练中没有误分类点。
对偶形式:
在对w,b迭代的过程中,逐步修改w,b,设修改了n次,则w,b关于(xi,yi)的增量分别是ai*yi*xi和ai*yi,这里ai=ni*η。这样,学习到最后的w,b分别可以表示为
w=∑(ai*yi*xi)
b=∑(ai*yi)
(1)给定初始值a=0,b=0
(2)在训练数据中选取数据(xi,yi)
(3)如果yi(∑aj*yj*xj·xi+b)<=0
ai<<ai+η
b<<b+η*yi
(4)转至(2)知道没有误分类数据。
算法的收敛性:
当训练数据集线性可分时,感知机的学习算法是收敛的,感知机算法在训练数据集上的误分类次数k满足不等式
k<=(R/γ)^2
本文为自己在学习算法的过程中为了记录而写的,若形成侵权请联系我,我会第一时间改正