登录
首页精彩阅读简单易学的机器学习算法—Rosenblatt感知机
简单易学的机器学习算法—Rosenblatt感知机
2017-04-03
收藏

简单易学的机器学习算法—Rosenblatt感知机

一、感知机的概念
    感知机是一种二类分类的线性模型,输入实例的特征向量,输出为实例的类别,即+1或者-1。感知机模型是神经网络支持向量机的基础。
    假设特征,类标签为,由特征到类标签的映射可以表示为

这样的函数称为感知机。其中w和b为感知机的参数,w为权重,b为偏置。为向量w与向量x之间的内积。为符号函数:

为分隔超平面。
二、感知机模型的训练
    1、目标函数
        为了能够正确的对实例分类,我们的目标是能够求出分隔超平面,即求出参数w和b。在这里,分隔超平面存在的前提是数据集是线性可分的。
        在训练参数和时,我们可以采用损失函数,并且使得损失函数最小化。感知机的训练中损失函数可以采用误分类点到分隔超平面的距离的总和。一个点被正确分类是指当时,而原始标签;类似的,当时,而原始标签。一个点到平面之间的距离公式为

对于误分类点,有,因此误分类点到分隔超平面之间的距离为
 
可以不考虑,则对于误分类点集合m,感知机损失函数

我们的目标使得损失函数最小化,即。我们可以使用梯度下降法求解这样的最小化问题。(梯度下降法),在这里我们采用梯度下降法的改进算法:随机梯度下降法。
    2、感知机的训练过程
随机选取权重和偏置的初值
随机选取初始实例
如果
转至2,直到训练集中没有误分类点。
三、实例
    选自《统计学习方法》,训练集为:正实例点是,负实例点是

原始点集
MATLAB代码
[plain] view plain copy 在CODE上查看代码片派生到我的代码片
%读入数据  
x=[3,3;4,3;1,1];  
y=[1;1;-1];  
 
%--初始化w和b  
w = [0,0];  
b = 0;  
a = 1;%步长  
 
%--选择未能初始化的点  
flag = 0;  
 
i = 1;  
while flag~=1  
    while i <= 3  
        t = y(i)*(w*x(i,:)'+b);  
        if t <= 0  
            w = w + a*y(i,:)*x(i,:);  
            b = b + a*y(i,:);  
            i = 1;%重置i  
            break;  
        else  
            i = i+1;  
        end  
        if i == 4  
            flag = 1;  
        end  
    end  
end  
%画出分隔线  
hold on  
axis([0 5 0 5]);%axis一般用来设置axes的样式,包括坐标轴范围,可读比例等  
for j = 1:3  
    plot(x(j,1),x(j,2),'.');  
    m(1,j) = (-b-w(1)*j)./(w(2));  
end  
j = 1:3;  
plot(j,m); 
分类结果

数据分析咨询请扫描二维码

客服在线
立即咨询