for batch&supervised binary classfication,g≈f <=> Eout(g)≥0 achieved through Eout(g)≈Ein(g) and Ein(g)≈0

其中Ein是某一个备选函数h在数据D上犯错误的比例,在整个数据集上犯错误的比例为Eout

1.Perceptron Hypothesis Set

假设训数据集市线性可分的,感知机学习是目标就是求得一个能够将训练集正实例点和负实例点完全正确分开的分离超平面,

对于一组数据X={x1,x2,x3...,xn},其中每一个xi代表了一个属性值,那么这个属性值所代表的属性的重要程度可能是不同的,我们用一组权重的向量代表每个属性的重要程度W={w1,w2,w3...,wn},wi变化会产生不同的数据,这样对每一组数据我们可以计算出一个得分score,他可能代表了一些具体含义,比如某客户的信用额度。那么当score与某一临界值作比较时,当score大于临界值时,就是正值表示的含义是发信用卡,当score小于该临界值时,就是负值表示不发信用卡,这样分类器就产生了。具体来说:

接着为了之后的简单,我们进行了合并的操作:

相应的,在二维空间中,h(x)变成了如下形式

2.Perceptron Learning Algorithm (PLA)

PLA算法的基本思想是,最开始的时候随便取一条曲线wn,这条曲线应用到已知的训练数据集中,那么会有错误的划分(xn,yn),这时候我们去纠正我们的曲线wn+1=wn+ynxn

  

根据上图,由于权向量w是分割线的法向量,无论发生错误的点是正值还是负值,经过修正后的分割线调整了方向从而向错误点靠拢,就是说他更接近那条完美的分割线。算法的具体描述是:

3.PLA算法的可行性

想让PLA算法可停止,必须能够找到至少一条直线将训练数据集D划分成正值和负值两个部分,即必须有无错的权向量存在。这样的D我们称它为“线性可分”的。D线性可分是PLA停止的必要条件,那么他是充分条件吗?即如果D线性可分,PLA一定会停止吗?证明如下:

通俗的说就是,如果D里面的数据能划分,就一定能找到那条(其实有无数条)划分线;此时,在D里面随便选一个点,它一定处在划分线的某一侧(不是直线上),并且这一侧所有其他点的计算符号都与它相同,所以这些点到直线的距离大于零(不等式(1)的意义);根据这些条件得到不等式(2),它告诉我们权向量就像11点50的分针,近似目标向量就像同一时刻的时针,每一次修正,分针都离时针更近了!

但是上边的证明还不够完美,向量内积不仅反映了向量的角度还反映了其长度,两个向量就算夹角不变,只要长度变化,内积也可以增大!

不错,权向量的长度会怎么变化,推导如下

可以看到,修正之后权向量的长度,相较于修正之前的增加有一个上限,或者说它的长度增长是较慢的。这个上限由D中距离坐标原点最远的那个点决定。

4.Learning with Noisy Data

对于那些有杂质的数据来说,要做到线性可分是非常困难的,因此我们采用的方法是找到一条直线,它是所有可能直线当中犯错误最少的?这是一个很难的问题,因为所含的直线太多了,你必须完整遍历一遍之后才能找到最优解,这是数学上的NP-hard问题。因此又提出了妥协的结果:口袋算法(Pocket Algorithm)

感知器算法PLA的更多相关文章

  1. Stanford大学机器学习公开课(三):局部加权回归、最小二乘的概率解释、逻辑回归、感知器算法

    (一)局部加权回归 通常情况下的线性拟合不能很好地预测所有的值,因为它容易导致欠拟合(under fitting).如下图的左图.而多项式拟合能拟合所有数据,但是在预测新样本的时候又会变得很糟糕,因为 ...

  2. 第三集 欠拟合与过拟合的概念、局部加权回归、logistic回归、感知器算法

    课程大纲 欠拟合的概念(非正式):数据中某些非常明显的模式没有成功的被拟合出来.如图所示,更适合这组数据的应该是而不是一条直线. 过拟合的概念(非正式):算法拟合出的结果仅仅反映了所给的特定数据的特质 ...

  3. [置顶] 局部加权回归、最小二乘的概率解释、逻辑斯蒂回归、感知器算法——斯坦福ML公开课笔记3

    转载请注明:http://blog.csdn.net/xinzhangyanxiang/article/details/9113681 最近在看Ng的机器学习公开课,Ng的讲法循循善诱,感觉提高了不少 ...

  4. 感知器算法--python实现

    写在前面: 参考: 1  <统计学习方法>第二章感知机[感知机的概念.误分类的判断]   http://pan.baidu.com/s/1hrTscza 2   点到面的距离 3   梯度 ...

  5. Perceptron Algorithm 感知器算法及其实现

    Rosenblatt于1958年发布的感知器算法,算是机器学习鼻祖级别的算法.其算法着眼于最简单的情况,即使用单个神经元.单层网络进行监督学习(目标结果已知),并且输入数据线性可分.我们可以用该算法来 ...

  6. 机器学习之感知器算法原理和Python实现

    (1)感知器模型 感知器模型包含多个输入节点:X0-Xn,权重矩阵W0-Wn(其中X0和W0代表的偏置因子,一般X0=1,图中X0处应该是Xn)一个输出节点O,激活函数是sign函数. (2)感知器学 ...

  7. 【2008nmj】Logistic回归二元分类感知器算法.docx

    给你一堆样本数据(xi,yi),并标上标签[0,1],让你建立模型(分类感知器二元),对于新给的测试数据进行分类. 要将两种数据分开,这是一个分类问题,建立数学模型,(x,y,z),z指示[0,1], ...

  8. 感知器算法 C++

    We can estimate the weight values for our training data using stochastic gradient descent. Stochasti ...

  9. 机器学习 —— 基础整理(六)线性判别函数:感知器、松弛算法、Ho-Kashyap算法

    这篇总结继续复习分类问题.本文简单整理了以下内容: (一)线性判别函数与广义线性判别函数 (二)感知器 (三)松弛算法 (四)Ho-Kashyap算法 闲话:本篇是本系列[机器学习基础整理]在time ...

随机推荐

  1. asp.net小结

    ASP.net是是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术,主要用于WEB开发,与我们以前接触CS开发相比,虽然相似点不少,但不同点也是有很多的,我来简单的总结一下. 一.控件 A ...

  2. javaweb学习总结二十四(servlet经常用到的对象)

    一:ServletConfig对象 1:用来封装数据初始化参数,在服务器web.xml配置文件中可以使用<init-param>标签配置初始化参数. 2:实例演示 web.xml文件中配置 ...

  3. VMware 命令行下的网络配置

    一般我们会在windows操作系统上安装VMware虚拟机,然后在虚拟机中安装Linux或Unix系统,但是我们很多人习惯了Windows系统的图形界面,换到Linux或Unix系统下不知道怎么配置网 ...

  4. rfc 标准文档目录

    1.  xmpp的文档 (3920版本) https://tools.ietf.org/html/rfc3920 2. MQTT 3. SIP

  5. Could not load the "btn_020.disable.png" image referenced from a nib in the bundle with identifier "com.xxx.---0710"

    照此方法打开引用你这个图片的sb或者xib: 然后搜索你的这个图片名称: 删除这个图片名称的引用.如果还是不行的话,就删除此sb或xib文件然后重新创建.

  6. LINQ to SQL 语句(2)之 Select/Distinct

    LINQ to SQL 语句(2)之 Select/Distinct [1] Select 介绍 1 [2] Select 介绍 2 [3] Select 介绍 3 和  Distinct 介绍 Se ...

  7. 解决 arcGis android TextSymbol乱码的问题

    不论是Arcgis for Android的哪个版本,都没无法解决中文乱码的问题,这个与Android中自带的字体库有关,可以参考这篇文章. 所以,要在Arcgis for Android中显示中文, ...

  8. 十五、Android学习笔记_授权过程

    1.需要申请App Key和App Secret.不同的开发平台有不同的接入方式,可以参考文档,然后将这两个值放进去. 2.通过OAuth类实现认证,它会自动跳转到认证界面,进行授权,成功之后需要处理 ...

  9. MySQL之建设工程监管信息系统

    --创建SelfStudy数据库 CREATE DATABASE ConstructionDB ON PRIMARY --创建主数据库文件 ( NAME=' ConstructionDB', --数据 ...

  10. php验证码无法显示的原因

    前段时间在调试程序的时候出现验证码无法打开的情况, 首先就要确定你已经开启了GD库!只要你不是低版本的PHP基本上这个是默认的!直接加上下面的代码先测试就可以! 如果不通过再查别的原因! 测试最后发现 ...