感知机是二类分类的线性分类模型,其输入为实实例的特征向量,输出是实例的类别,两类分别取+1和-1。
输入空间到输出空间的函数为:f(x) = sign(w*x+b)
其中w,b感知机模型参数,w是权值(权向量),b是偏置,w*x是w和x的内积。sign是函数符号,输入为正时输出+1,输入为负时,输出为-1.
感知机是一种线性分类模型,属于判别模型。感知机模型的假设空间是定义在特征空间中的所有线性分类模型或线性分类器。
感知机的分类面: w*x+b = 0 是对应于特征空间的一个超平面S,其中W是超平面法向量,b是超平面截距,这个超平面将特征空间化为两半,每一边代表一类。
在训练感知机的时候首先初始化w,b,然后使用误分点来驱动超平面的更新
当一个x(i)被误分时,通过 w = w+L*y(i)*x(i) , b = b+L*y(i) 来更新w,b. 其中L是学习的步长(0<L<=1)'
这里在matlab中产生两类(X和Y,各60个点)高斯分布的点,通过感知机算法来寻找一个分类面。
load gaoData2;
x1 = x; %第一类点
x2 = y; %第一类点
plot(x1(1,:),x1(2,:),'ro',x2(1,:),x2(2,:),'b*');hold on
y1 = ones(1,