PLA算法总结及其证明

http://m.blog.csdn.net/article/details?id=45232891

分类: 机器学习

PLA(Perception Learning Algorithm)适用于二维及高维的线性可划分问题。问题的答案只有同意或者不同意。例如银行可以根据顾客的个人信息来判断是否给顾客发放信用卡。将顾客抽象为一个向量X,包括姓名、年龄、年收入、负债数等。同时设定各个属性所占的比例向量w,对于正相关的属性设置相对较高的比例如年收入,对于负相关的属性设置较低的比例如负债数。y表示是否想该用户发放了信用卡。通过求x和w的内积减去一个阀值threshold,若为正则同意发放信用卡,否则不发放信用卡。我们假设存在着一个从X到Y的映射f,PLA算法就是用来模拟这个映射,使得求出的函数与f尽可能的相似,起码在已知的数据集(即样本上)上一致。
PLA算法即用来求向量W,使得在已知的数据中机器做出的判断与现实完全相同。当X为二维向量时,相当于在平面上画出一条直线将所有的点分成两部分,一部分同意发送,另一部分的不同意。内积可以表示成:
其中x0=1,w0=-threshold。
ys的值域:{+1,-1 }(ys 表示样本中y的值,用于输入到算法进行调整)
结合文中例子:ys=1 表示在给定的样本数据中,给该用户发放了信用卡,ys= -1表示未发放。
PLA先假定W0为向量0,然后找到一个不满足条件的点,调整W的值,依次进行迭代使得最终可以将两部分完全分开。

W的调整方案

注:错误驱动调整

第一种,在给定的已知数据中向该用户发放了数据,即ys(i)样本中第i个数据为+1,但算法给出的结果是不发放(即:h(xi) 小于0),说明两个向量的内积为负,需要调整w向量使得两条向量更接近,此时令调整系数为样本的ys(i)。示意图为
则调整后的wt+1= wt + ys(i)xi
第二种,在给定的已知数据中向该用户发放了数据,即ys(i)样本中第i个数据为-1,但算法给出的结果是不发放(即:h(xi) 大于0),说明两个向量的内积为正,需要调整w向量使得两条向量更远离,此时令调整系数为样本的ys(i)。示意图为
则调整后的wt+1= wt + ys(i)xi

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

 
两个向量的内积增大说明两个向量越来越相似或者向量的长度增大
 
 
 
图片上 ||wt+1||2  <=  ||wt||2 +
max{1 <=i<=  n | ||yixi||2} 其中,yi的值域为正负1
因此     ||wt+1||2  <=  ||wt||2 +
max{1 <=i<= n | ||xi||2}
这说明每次调整后,向量的长度增加有限。不妨设
带入上一公式得到
 
因此,W(t)最终是收敛的。到此已经证明了PLA算法最终可以停止。

下面求该算法需要调整多少步才能停止

由上述过程可以得到以下两个不等式:
 
根据余弦值最大为1,可以得到
 等于     
因此  
 即纠正次数
该文主要是学习了台湾大学机器学习课程之后自己的一些总结,第一次写博客,有问题还请大家多多指正。算法的实现在接下来继续总结出来。
 
以上改自:http://blog.csdn.net/dreamermonkey/article/details/44065255

另一份证明同样很清楚:

以上证明来自:http://www.cnblogs.com/HappyAngel/p/3456762.html

[转]PLA算法总结及其证明的更多相关文章

  1. 机器学习真的可以起作用吗?(2)(以二维PLA算法为例)

    一个问题:大多数情况下,M(hypothesis set的大小)是无穷大的,例如PLA算法.那么是不是我们的原则1就不能使用了? 我们试着做一些努力: Step1:寻找hypothesis set的e ...

  2. Lengauer-Tarjan算法的相关证明

    Lengauer-Tarjan算法的相关证明 0. 约定 为简单起见,下文中的路径均指简单路径(事实上非简单路径不会对结论造成影响). \(V\)代表图的点集,\(E\)代表图的边集,\(T\)代表图 ...

  3. 任何国家都无法限制数字货币。为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用  c.分布式算法的实现 d.数据存储技术 e.拜占庭算法 f.权益证明POW,POS,DPOS 原因一: 点对点网络设计 其中点对点的P2P网络是bittorent ,由于是点对点的网络,没有中心化,因此在全球分布式的网

    任何国家都无法限制数字货币.为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用  c.分布式算法的实现 d.数据存储技 ...

  4. Coursera台大机器学习基础课程学习笔记1 -- 机器学习定义及PLA算法

    最近在跟台大的这个课程,觉得不错,想把学习笔记发出来跟大家分享下,有错误希望大家指正. 一机器学习是什么? 感觉和 Tom M. Mitchell的定义几乎一致, A computer program ...

  5. 一个关于AdaBoost算法的简单证明

    下载本文PDF格式(Academia.edu) 本文给出了机器学习中AdaBoost算法的一个简单初等证明,需要使用的数学工具为微积分-1. Adaboost is a powerful algori ...

  6. 最短路径——Floyd算法(含证明)

    通过dij,ford,spfa等算法可以快速的得到单源点的最短路径,如果想要得到图中任意两点之间的最短路径,当然可以选择做n遍的dij或是ford,但还有一个思维量较小的选择,就是floyd算法. 多 ...

  7. Dijkstra算法原理及证明(转)

    Dijkstra算法及其证明 算法: 设G是带权图,图中的顶点多于一个,且所有的权都为正数.本算法确定从顶点S到G中其他各个顶点的距离和最短通路.在本算法中P表示带永久标记的顶点的集合.顶点A的前驱是 ...

  8. 机器学习-EM算法的收敛证明

    上一篇开头说过1983年,美国数学家吴建福(C.F. Jeff Wu)给出了EM算法在指数族分布以外的收敛性证明. EM算法的收敛性只要我们能够证明对数似然函数的值在迭代的过程中是增加的 即可: 证明 ...

  9. KMP算法复杂度证明

    引言 KMP算法应该是看了一次又一次,比赛的时候字符串不是我负责,所以学到的东西又还给网上的博客了-- 退役后再翻开看,看到模板,心想这不是\(O(n^2)\)的复杂度吗? 有两个循环也不能看做是\( ...

随机推荐

  1. 【转】JS常用函数整合库 lutils

    lutils 此工具包是在 outils 的基础上,加上个人平时收集的代码片段进行的二次整合 outils的GitHub:https://github.com/proYang/outils/blob/ ...

  2. vue 父组件通过props向子组件传递数据/方法的方式

    参考网址:https://segmentfault.com/a/1190000010507616 下面栗子中, callback是传递父组件的方法, mutationName是传递父组件的数据, Ap ...

  3. Sql server中如何将表A和表B的数据合并(乘积方式)

    sql server中如何将表A 和表B的数据合并成乘积方式,也就是说表A有2条数据,表B有3条数据,乘积后有6条数据, 这就要用到sql中的笛卡尔积方式了 1.什么是笛卡尔积 笛卡尔积在SQL中的实 ...

  4. react router @4 和 vue路由 详解(全)

    react router @4 和 vue路由 本文大纲: 1.vue路由基础和使用 2.react-router @4用法 3.什么是包容性路由?什么是排他性路由? 4.react路由有两个重要的属 ...

  5. LY.JAVA面向对象编程.形式参数和返回值

    2018-07-09 13:29:16 运动员和教练案例 /* 教练和运动员案例(学生分析然后讲解) 乒乓球运动员和篮球运动员. 乒乓球教练和篮球教练. 为了出国交流,跟乒乓球相关的人员都需要学习英语 ...

  6. linux系统用户和组管理

    用户和组管理 Linux是多用户多任务的网络操作系统,作为网络管理员,掌握用户的组的创建与管理至关重要. 学习要点: 了解用户和组的群的配置文件. 熟悉掌握Linux下用户的创建和维护管理. 熟悉掌握 ...

  7. shell shell基本概述

    SHELL的概念 SHELL是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序, 用户可以用shell来启动,挂起,停止甚至是编写一些程序. ​ Shell还是 ...

  8. windows bat发布成服务

    删除服务 删除名为"WINDOWS MANAGEMONT INSTALLER"的系统服务 sc delete "windows managemont Installer& ...

  9. C++解析二

    C++ 类访问修饰符 数据封装是面向对象编程的一个重要特点,它防止函数直接访问类类型的内部成员.类成员的访问限制是通过在类主体内部对各个区域标记 public.private.protected 来指 ...

  10. EF-关于类库中EntityFramework之CodeFirst(代码优先)的操作浅析

    前有ADO.NET,后有ORM模式的EntityFramework.这两种技术都实现了对数据库的访问操作.如果要说哪种技术好,就看项目架构的大小,使用者的熟练程度等等,毕竟萝卜白菜,各有所爱. 今天要 ...