前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单易学的机器学习算法——Rosenblatt感知机

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

作者头像
felixzhao
发布2019-02-27 16:42:11
4990
发布2019-02-27 16:42:11
举报
文章被收录于专栏:null的专栏null的专栏null的专栏

一、感知机的概念

    感知机是一种二类分类的线性模型,输入实例的特征向量,输出为实例的类别,即+1或者-1。感知机模型是神经网络和支持向量机的基础。

    假设特征为

,类标签为

,由特征到类标签的映射可以表示为

这样的函数称为感知机。其中

为感知机的参数,

为权重,

为偏置。

为向量

与向量

之间的内积。

为符号函数:

为分隔超平面。

二、感知机模型的训练

    1、目标函数

        为了能够正确的对实例分类,我们的目标是能够求出分隔超平面,即求出参数

。在这里,分隔超平面存在的前提是数据集是线性可分的。

        在训练参数

时,我们可以采用损失函数,并且使得损失函数最小化。感知机的训练中损失函数可以采用误分类点到分隔超平面的距离的总和。一个点被正确分类是指当

时,而原始标签

;类似的,当

时,而原始标签

。一个点到平面之间的距离公式为

对于误分类点

,有

,因此误分类点到分隔超平面之间的距离为

可以不考虑

,则对于误分类点集合

,感知机的损失函数为

我们的目标使得损失函数最小化,即

。我们可以使用梯度下降法求解这样的最小化问题。(梯度下降法),在这里我们采用梯度下降法的改进算法:随机梯度下降法。

    2、感知机的训练过程

  • 随机选取权重和偏置的初值

  • 随机选取初始实例
  • 如果

  • 转至2,直到训练集中没有误分类点。

三、实例

    选自《统计学习方法》,训练集为:正实例点是

,负实例点是

原始点集

MATLAB代码

%读入数据
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);

分类结果

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年05月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、感知机的概念
  • 二、感知机模型的训练
    •     1、目标函数
      •     2、感知机的训练过程
      • 三、实例
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档