此博客停止更新迁移至SnailDove's Blog,查看本文点击此处

PLA(Perception Learning Algorithm) 适用于二维及高维的线性可划分问题。问题的答案只有同意或者不同意。

例子

银行可以根据顾客的个人信息来判断是否给顾客发放信用卡。将顾客抽象为一个向量,包括姓名、年龄、年收入、负债数等。同时设定各个属性所占的权重向量为,对于正相关的属性设置相对较高的权重,如年收入,对于负相关的属性设置较低的权重,如负债数。表示是否想该用户发放了信用卡。通过求和的内积减去一个阀值threshold,若为正则同意发放信用卡,否则不发放信用卡。我们假设存在着一个从到的映射,PLA算法就是用来模拟这个映射,使得求出的函数与尽可能的相似,起码在已知的数据集(即样本上)上一致。

PLA算法即用来求向量,使得在已知的数据中机器做出的判断与现实数据相同。当为二维向量时,相当于在平面上画出一条直线将所有的点分成两部分,一部分同意发送,另一部分的不同意。内积可以表示成:

其中,

的值域:,,( 表示样本中的值,用于输入到算法进行调整)

结合文中例子: 表示在给定的样本数据中,给该用户发放了信用卡,表示未发放。

PLA先假定为向量,然后找到一个不满足条件的点,调整的值,依次进行迭代所有样本数据使得最终可以将两部分完全分开。

W的调整方案

错误驱动调整

解释一下ppt的内容,出现错误分2种情况:

  1. 在给定的已知数据中向该用户发放了数据,即样本中第个数据为,但算法给出的结果是不发放(),说明两个向量的内积为负,需要调整向量使得两条向量更接近,此时令调整系数为样本的,则调整后的,的下标表示调整的次数,示意图:

  1. 在给定的已知数据中向该用户发放了数据,即样本中第个数据为,但算法给出的结果是不发放(),说明两个向量的内积为正,需要调整向量使得两条向量更远离,此时令调整系数为样本的,则调整后的,示意图:

注意:2种不同情况的调整的表达式都一样

对于线性可分的数据集,PLA算法是可收敛的

两个向量的内积增大说明:

  1. 两个向量夹角越小
  2. 或者向量的长度增大

老师的ppt上  其中,的值域

因此

这说明每次调整后,向量的长度增加有限。不妨

带入上一公式得到:

因此最终是收敛的,到此已经证明了PLA算法最终可以停止。

算法需要调整的次数

由上述过程可以得到以下两个不等式:

那么来看这个式子:

再根据余弦值最大为1,可以得到,于是我们得到调整次数:.

PLA的优缺点

一方面,我事先肯定不知道,另一方面为了应对可能出现的噪声。那么怎么衡量当前得到的直线能够满足要求呢?我们只能在每一步的时候都判断一下,调整后的是否比上一次的能够线性可分更多的数据,于是有了下面的改进算法Pocket PLA,PocketPLA比PLA在调整的时候多做一步:判断当前改正犯的错是否比之前更小,也就是贪心选择。

Pocket PLA

参考

  1. HappyAngel
  2. DreamerMonkey
  3. ppt全部来自台大《机器学习基石》课堂

PLA算法总结及其证明相关推荐

  1. [机器学习][1]--PLA算法

    [机器学习][1]--PLA算法     PLA全称为,Perception Learning Algorithm,中文叫感知学习算法.今天我会简单介绍一下这个算法,并用mathematica来实现一 ...

  2. PLA算法(机器学习基石)

    PLA算法的机制 故事起源于一个二元分类问题(比如说银行要不要给客户发信用卡的问题) 我们的先决条件 1.我们有资料在手上(用户信息) 2.我们的资料有标签(有没有发信用卡) 3.假设我们的资料是线性 ...

  3. pla算法 matlab,PAL算法原理及代码实现

    博主发现之前写的博客都是偏程序方面,而较少涉及数学或算法方面的东西,其实无论什么软件工具,最终都是为了更好地给理论铺路搭桥,所以我觉得不应该就某个程序贴个博客,而是在实际算法研究中,将理论描述清晰,再 ...

  4. PLA算法实现与展示

    1.PLA算法 作为机器学习的入门基础算法,主要是要理解其产生由来.感知机模型为了应对线性可分二分类问题而设计的算法,求得一个超平面S使得所有数据能正确分类. 即使得每个数据都 f ( x ) = s ...

  5. 算法导论——A*算法易懂的证明

    算法导论--A*算法易懂的证明 前言 A* 证明 证明采用反证法,课上老师讲解不够清晰,课后自己下了点功夫,明白了A * 算法的原理. 前言 A*算法,其核心思想在于f(n)和Best-First.其 ...

  6. 共识算法-PoS(股权证明)算法

    title: 共识算法-PoS(股权证明)算法 tags: 区块链,共识算法 为什么会出现PoS? 在比特币系统中采用了PoW(工作量证明)算法,PoW其实就是由所有的节点相互竞争,提交一个难于计算但 ...

  7. Dijkstra贪心算法的准确性证明

    简述一下Dijkstra算法 先举个例子来简述一下Dijkstra算法吧.如下图,从节点1出发,求到每个节点的最短路径 首先获取节点1到各个节点的距离,需要注意的是,我们给算法的输入数据是一个邻接矩阵 ...

  8. A*算法求解迷宫问题(算法讲解与证明、python实现与可视化)

    目录 一.引入 二.具体细节 1.BFS(Breadth First Search) 2.Dijkstra(Uniform Cost Search) 3.启发式(Heuristic search) 4 ...

  9. 【Bandit Algorithms学习笔记】UCB算法的理论证明

    文章目录 前言 算法优势 算法原理 UCB公式 UCB算法流程 相关定理及证明 定理7.1 证明 定理7.2 证明 总结 参考资料 前言 笔者毕设研究的是Bandit问题,因此最近在学习相关的内容,想 ...

  10. Floyd算法【图解证明】

    目录 算法介绍 排序法证明 图解证明 1. 最优解集合的初始化 2. 最优解集合的扩大 3. 最优解集合的合并 4. 全集最优解 算法介绍 Floyd参考:这位作者的代码和公式已经非常棒了,所以对于过 ...

最新文章

  1. 主攻ASP.NET.4.5 MVC4.0之重生:Entity Framework生成实体类步骤(十三)
  2. 断点续传---多线程下载进阶(一)
  3. JavaScript函数与Window对象
  4. ssh 三者集合的思想
  5. Git push “fatal: Authentication failed ”
  6. python决策树的应用_机器学习-决策树实战应用
  7. HDOJ 1021-1025
  8. 计算机管理文件的教学设计,《管理计算机中的文件》教学设计文件.doc
  9. 数据结构与算法分析:第1、2章:引论和算法分析
  10. Git 问题:SSL certificate problem: self signed certificate
  11. php框架tp3.2.3和js写的微信分享功能心得,分享的标题内容图片自定义
  12. java自动行走_java数据结构实现机器人行走
  13. centos7内网穿透(frp、zerotier)
  14. 怎样卸载deepin系统_win10系统双系统下卸载deepin的详细技巧
  15. 什么是消防产品3C认证?
  16. 海洋cms标签-海洋cms模板标签手册-海洋cms模板标签全套
  17. 《炬丰科技-半导体工艺》集成微加工平台各向异性腐蚀
  18. python协程处理海量文件_Python使用asyncio和run-In-Executor线程池处理多个文件的同时下载,python,协程,加,runinexecutor...
  19. Paddle入门实战系列(一):车牌检测与识别
  20. 外网映射nginx端口丢失问题解决

热门文章

  1. 【061】百度迁徙-用地图大数据演绎国人的迁徙史诗
  2. linux 文件名 序列号,在Linux中应如何查看系统硬件制造商、型号和序列号
  3. 工具分享:易读文档下载器(同时支持百度/豆丁)
  4. 绝了!深入分布式缓存从原理到实践技术分享,超详细
  5. 深入浅出mysql第二,mysql-深入浅出MySQL(第2版)-ITBook分享(pdf mongodb java javascript node )...
  6. 哈理工OJ 1926 函数式计算
  7. python识别图片文字、并返回文字坐标_简易OCR图片文字识别工具的进一步改进(增加显示图片的功能)...
  8. 带你学习《深入理解计算机系统》程序性能优化探讨(5)——高速缓存、存储器山与矩阵乘法优化
  9. 还有在用迅雷7的朋友吗?
  10. 压力测试工具Siege详解