专栏首页null的专栏简单易学的机器学习算法——Rosenblatt感知机

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

一、感知机的概念

    感知机是一种二类分类的线性模型,输入实例的特征向量,输出为实例的类别,即+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);

分类结果

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 简单易学的机器学习算法——K-近邻算法

    一、近邻算法(Nearest Neighbors) 1、近邻算法的概念 近邻算法(Nearest Neighbors)是一种典型的非参模型,与生成方法(gen...

    zhaozhiyong
  • 简单易学的机器学习算法——极限学习机(ELM)

           极限学习机(Extreme Learning Machine) ELM,是由黄广斌提出来的求解单隐层神经网络的算法。

    zhaozhiyong
  • 简单易学的机器学习算法——协同过滤推荐算法(2)

        协同过滤(Collaborative Filtering)的推荐系统的原理是通过将用户和其他用户的数据进行比对来实现推荐的。比对的具体方法就是通过计算两...

    zhaozhiyong
  • XGBoost(二):R语言实现

    之前在XGBoost(一):与同类算法的差异对比一文中介绍了Bagging与Boost、AdaBoost与Gradient Boost、GBDT与XGBoost...

    三猫
  • java的poi技术写Excel的Sheet

    那么在Excel里面什么叫做Sheet呢?如下图红色框里面的内容就是Excel的Sheet了。

    Hongten
  • 【小家Spring】Spring容器(含父子容器)的启动过程源码级别分析(含web.xml启动以及全注解驱动,和ContextLoader源码分析)

    最近在编写Spring相关博文的时候,发现有不少小伙伴对口头上经常说到的Spring容器、父子容器等等概念,既熟悉,又默认。大体知道它是干啥的,但是却有不太能知...

    YourBatman
  • Java内部类的异常处理

    最近遇到一个问题,使用Java写某个DSL标记语言X的parser(解析器)Maven插件的时候,对外暴露一个名为Callback的接口和一个待实现的方法get...

    lambeta
  • 【计算机本科补全计划】CCF计算机职业资格认证 2016-12 试题详解

    正文之前 最近练算法,不过最可气的,我写出来的程序一直算法越界!!题目要求到1000个输入都能正常工作,但是我的一般500个就直接越界了!!!咋办!!!咋办!!...

    用户1687088
  • SCI论文校审神器:免费英文写作和校对助手

    前两天,教育部的一则消息轰炸了朋友圈和各大公众号。说不把SCI论文作为职称评聘直接依据,相信很多人都看过了。天下苦SCI久矣!

    百味科研芝士
  • nginx之rewrite详解2-企业级应用场景

    (2)为了让搜索引擎搜录网站内容及用户体验更好,企业会将动态URL地址伪装成静态地址提供服务。

    随心助手

扫码关注云+社区

领取腾讯云代金券