PLA算法总结及其证明
此博客停止更新迁移至SnailDove's Blog,查看本文点击此处
PLA(Perception Learning Algorithm) 适用于二维及高维的线性可划分问题。问题的答案只有同意或者不同意。
例子
银行可以根据顾客的个人信息来判断是否给顾客发放信用卡。将顾客抽象为一个向量,包括姓名、年龄、年收入、负债数等。同时设定各个属性所占的权重向量为,对于正相关的属性设置相对较高的权重,如年收入,对于负相关的属性设置较低的权重,如负债数。表示是否想该用户发放了信用卡。通过求和的内积减去一个阀值threshold,若为正则同意发放信用卡,否则不发放信用卡。我们假设存在着一个从到的映射,PLA算法就是用来模拟这个映射,使得求出的函数与尽可能的相似,起码在已知的数据集(即样本上)上一致。
PLA算法即用来求向量,使得在已知的数据中机器做出的判断与现实数据相同。当为二维向量时,相当于在平面上画出一条直线将所有的点分成两部分,一部分同意发送,另一部分的不同意。内积可以表示成:
其中,
的值域:,,( 表示样本中的值,用于输入到算法进行调整)
结合文中例子: 表示在给定的样本数据中,给该用户发放了信用卡,表示未发放。
PLA先假定为向量,然后找到一个不满足条件的点,调整的值,依次进行迭代所有样本数据使得最终可以将两部分完全分开。
W的调整方案
错误驱动调整
解释一下ppt的内容,出现错误分2种情况:
- 在给定的已知数据中向该用户发放了数据,即样本中第个数据为,但算法给出的结果是不发放(),说明两个向量的内积为负,需要调整向量使得两条向量更接近,此时令调整系数为样本的,则调整后的,的下标表示调整的次数,示意图:
- 在给定的已知数据中向该用户发放了数据,即样本中第个数据为,但算法给出的结果是不发放(),说明两个向量的内积为正,需要调整向量使得两条向量更远离,此时令调整系数为样本的,则调整后的,示意图:
注意:2种不同情况的调整的表达式都一样
对于线性可分的数据集,PLA算法是可收敛的
两个向量的内积增大说明:
- 两个向量夹角越小
- 或者向量的长度增大
老师的ppt上 其中,的值域
因此
这说明每次调整后,向量的长度增加有限。不妨
带入上一公式得到:
因此最终是收敛的,到此已经证明了PLA算法最终可以停止。
算法需要调整的次数
由上述过程可以得到以下两个不等式:
那么来看这个式子:
再根据余弦值最大为1,可以得到,于是我们得到调整次数:.
PLA的优缺点
一方面,我事先肯定不知道,另一方面为了应对可能出现的噪声。那么怎么衡量当前得到的直线能够满足要求呢?我们只能在每一步的时候都判断一下,调整后的是否比上一次的能够线性可分更多的数据,于是有了下面的改进算法Pocket PLA,PocketPLA比PLA在调整的时候多做一步:判断当前改正犯的错是否比之前更小,也就是贪心选择。
Pocket PLA
参考
- HappyAngel
- DreamerMonkey
- ppt全部来自台大《机器学习基石》课堂
PLA算法总结及其证明相关推荐
- [机器学习][1]--PLA算法
[机器学习][1]--PLA算法 PLA全称为,Perception Learning Algorithm,中文叫感知学习算法.今天我会简单介绍一下这个算法,并用mathematica来实现一 ...
- PLA算法(机器学习基石)
PLA算法的机制 故事起源于一个二元分类问题(比如说银行要不要给客户发信用卡的问题) 我们的先决条件 1.我们有资料在手上(用户信息) 2.我们的资料有标签(有没有发信用卡) 3.假设我们的资料是线性 ...
- pla算法 matlab,PAL算法原理及代码实现
博主发现之前写的博客都是偏程序方面,而较少涉及数学或算法方面的东西,其实无论什么软件工具,最终都是为了更好地给理论铺路搭桥,所以我觉得不应该就某个程序贴个博客,而是在实际算法研究中,将理论描述清晰,再 ...
- PLA算法实现与展示
1.PLA算法 作为机器学习的入门基础算法,主要是要理解其产生由来.感知机模型为了应对线性可分二分类问题而设计的算法,求得一个超平面S使得所有数据能正确分类. 即使得每个数据都 f ( x ) = s ...
- 算法导论——A*算法易懂的证明
算法导论--A*算法易懂的证明 前言 A* 证明 证明采用反证法,课上老师讲解不够清晰,课后自己下了点功夫,明白了A * 算法的原理. 前言 A*算法,其核心思想在于f(n)和Best-First.其 ...
- 共识算法-PoS(股权证明)算法
title: 共识算法-PoS(股权证明)算法 tags: 区块链,共识算法 为什么会出现PoS? 在比特币系统中采用了PoW(工作量证明)算法,PoW其实就是由所有的节点相互竞争,提交一个难于计算但 ...
- Dijkstra贪心算法的准确性证明
简述一下Dijkstra算法 先举个例子来简述一下Dijkstra算法吧.如下图,从节点1出发,求到每个节点的最短路径 首先获取节点1到各个节点的距离,需要注意的是,我们给算法的输入数据是一个邻接矩阵 ...
- A*算法求解迷宫问题(算法讲解与证明、python实现与可视化)
目录 一.引入 二.具体细节 1.BFS(Breadth First Search) 2.Dijkstra(Uniform Cost Search) 3.启发式(Heuristic search) 4 ...
- 【Bandit Algorithms学习笔记】UCB算法的理论证明
文章目录 前言 算法优势 算法原理 UCB公式 UCB算法流程 相关定理及证明 定理7.1 证明 定理7.2 证明 总结 参考资料 前言 笔者毕设研究的是Bandit问题,因此最近在学习相关的内容,想 ...
- Floyd算法【图解证明】
目录 算法介绍 排序法证明 图解证明 1. 最优解集合的初始化 2. 最优解集合的扩大 3. 最优解集合的合并 4. 全集最优解 算法介绍 Floyd参考:这位作者的代码和公式已经非常棒了,所以对于过 ...
最新文章
- 主攻ASP.NET.4.5 MVC4.0之重生:Entity Framework生成实体类步骤(十三)
- 断点续传---多线程下载进阶(一)
- JavaScript函数与Window对象
- ssh 三者集合的思想
- Git push “fatal: Authentication failed ”
- python决策树的应用_机器学习-决策树实战应用
- HDOJ 1021-1025
- 计算机管理文件的教学设计,《管理计算机中的文件》教学设计文件.doc
- 数据结构与算法分析:第1、2章:引论和算法分析
- Git 问题:SSL certificate problem: self signed certificate
- php框架tp3.2.3和js写的微信分享功能心得,分享的标题内容图片自定义
- java自动行走_java数据结构实现机器人行走
- centos7内网穿透(frp、zerotier)
- 怎样卸载deepin系统_win10系统双系统下卸载deepin的详细技巧
- 什么是消防产品3C认证?
- 海洋cms标签-海洋cms模板标签手册-海洋cms模板标签全套
- 《炬丰科技-半导体工艺》集成微加工平台各向异性腐蚀
- python协程处理海量文件_Python使用asyncio和run-In-Executor线程池处理多个文件的同时下载,python,协程,加,runinexecutor...
- Paddle入门实战系列(一):车牌检测与识别
- 外网映射nginx端口丢失问题解决
热门文章
- 【061】百度迁徙-用地图大数据演绎国人的迁徙史诗
- linux 文件名 序列号,在Linux中应如何查看系统硬件制造商、型号和序列号
- 工具分享:易读文档下载器(同时支持百度/豆丁)
- 绝了!深入分布式缓存从原理到实践技术分享,超详细
- 深入浅出mysql第二,mysql-深入浅出MySQL(第2版)-ITBook分享(pdf mongodb java javascript node )...
- 哈理工OJ 1926 函数式计算
- python识别图片文字、并返回文字坐标_简易OCR图片文字识别工具的进一步改进(增加显示图片的功能)...
- 带你学习《深入理解计算机系统》程序性能优化探讨(5)——高速缓存、存储器山与矩阵乘法优化
- 还有在用迅雷7的朋友吗?
- 压力测试工具Siege详解