Perception Learning Algorithm, PLA

1.感知机

感知机是一种线性分类模型,属于判别模型。

感知机模型给出了由输入空间到输出空间的映射:

  f(X) = sign(WTX + b)

简单来说,就是找到一个分类超平面 WTX + b =0,将数据集中的正例和反例完全分开。

2.感知机学习算法(PLA)

感知机学习算法是为了找到 Wb  以确定分类超平面。为了减少符号,令 W = [b, W1, W2, ..., Wn]X = [1, X1, X2, ..., Xn],则 f(X) = sign(WTX )

感知机学习算法是由误分类驱动的:

  • 对于实际为正例(y=1)的误分类点,则对 W 进行如下修正:

    W = W + X

    从而使得 WTX 变大更接近大于 0, 即更接近正确分类;  (W+X)TX = WTX + ||X||2

  • 对于实际为正例(y=1)的误分类点,则对 W 进行如下修正:    

    W = W - X    

    从而使得 WT变小,更接近小于 0, 即更接近正确分类;  (W-X)TX = WTX - ||X||2

综上,令 初值 W0=0,然后每次选取一个误分类点,更新 W = W + y X ,直到所有点都被正确分类。

PS:不同的初值或者选取不同的误分类点,解可以不同。

具体算法如下:

3. PLA算法的收敛性

首先,确定数据集是 线性可分 的,否则,PLA永远不收敛。

假设数据集线性可分,则一定存在一个分类超平面可以将正例负例完全区分。

设最优的参数为 Wf,则:

  yWfTX≥ minn(ynWfTXn) > 0

已知 WfT越大,则 WWf 越接近。(联想协方差)

  WfTWWfT (WT-1+ yT-1 XT-1 

                    = WfT WT-1 yT-1WfTXT-1

                    ≥  WfT WT-1 minn(ynWfTXn)                                                                         (1)

                    > WfT WT-1 + 0

然而,WfTW 越大,也有可能只是 W  的元素值放大,但是W 与 Wf 的角度却没有接近。

所以,我们要讨论 $\frac{W_{f}^{T}W_{T}}{\left \| W_{f} \right \|\left \| W_{T} \right \|}$ 是否越来越大,若是,则 W 越来越接近最优值 Wf 。(联想 SVM 中 函数间隔 和 集合间隔 的概念)

我们知道,PLA 是误分类点驱动,所以有:

  yWTXi  ≤ 0

又有:

  W= WT-1 yT-1 XT-1

则:

  || WT ||2|| WT-1 ||2 + yT-12 || XT-1 ||2 + 2 yT-1 WT-1T XT-1

                    ≤ || WT-1 ||2 + yT-12 || XT-1 ||2  = || WT-1 ||2 + || XT-1 ||2 

                     ≤ || WT-1 ||2 + minn|| X||2                                                                             (2)

W0 = 0

令 ρ = minn(ynWfTXn) ,代入式 (1):

  WfTWT   ≥  WfT WT-1 ρ  ≥  WfT WT-2 + 2ρ  ≥  ...    WfT W0 + Tρ = Tρ                     (3)       

R = minn|| X||2 ,代入式 (2):

  || W||2  ≤  || WT-1 ||2 + R2  ≤  || WT-2 ||2 + 2R2  ≤  ...  ≤  || W||2 + TR2  = TR2            (4)

由 (4), 则:

  $\left \| W_{f} \right \|\left \| W_{T} \right \|\leq \left \| W_{f} \right \|\sqrt{T}R$                                                                                   (5)

由 (3) (5):

  $\frac{W_{f}^{T}W_{T}}{\left \| W_{f} \right \|\left \| W_{T} \right \|}\geq \frac{T\rho }{\left \| w_{f} \right \|\sqrt{T}R}=\frac{\sqrt{T}\rho }{\left \| W_{f} \right \|R}$                                                                              (6)

可以看到,$\frac{W_{f}^{T}W_{T}}{\left \| W_{f} \right \|\left \| W_{T} \right \|}$ 随着迭代次数 T 的增加而增加, 说明 W 在向着最优值 Wf 逐渐靠近。

由 (6) :

  $\frac{\sqrt{T}\rho}{\left \| W_{f} \right \|R}\leq 1$     向量点积,当 WT = Wf 时 cosθ = cos0 = 1

  => $T\leq \frac{\left \| W_{f} \right \|^{2}R^{2}}{\rho ^{2}}$

令 $\gamma =\frac{\rho }{\left \| W_{f} \right \|}$:

  => $T\leq \frac{R^{2}}{\gamma ^{2}} $                                                                                                                   (7)

式 (7) 表明,迭代次数(误分类的次数) 有上界,经过有限次迭代可以找到将训练数据完全正确分开的分类超平面。

这就说明,当训练数据集线性可分时,PLA 迭代是收敛的。

PS:PLA 可以有许多解,当选择不同的初值或者选择的误分类点的顺序不同时,解可以不同。

4.线性不可分时的PLA(Pocket 算法)

5.PLA的对偶形式

2018-09-03

感知机学习算法(PLA)的更多相关文章

  1. 【机器学习】感知机学习算法(PLA)

    感知机问题学习算法引入:信用卡问题 根据已知数据(不同标准的人的信用评级)训练后得出一个能不能给新客户发放信用卡的评定结果 解决该问题的核心思想扔为之前所讲到的梯度下降算法,对于更多条件的类似问题,首 ...

  2. 感知机学习算法 python实现

    参考李航<统计学习方法> 一开始的感知机章节,看着不太复杂就实现一下... """ 感知机学习算法的原始形式 例2.1 """ ...

  3. 感知机学习算法Java实现

    感知机学习算法Java实现. Perceptron类用于实现感知机, 其中的perceptronOriginal()方法用于实现感知机学习算法的原始形式: perceptronAnother()方法用 ...

  4. 利用Python实现一个感知机学习算法

    本文主要参考英文教材Python Machine Learning第二章.pdf文档下载链接: https://pan.baidu.com/s/1nuS07Qp 密码: gcb9. 本文主要内容包括利 ...

  5. 吴裕雄 python 机器学习——人工神经网络感知机学习算法的应用

    import numpy as np from matplotlib import pyplot as plt from sklearn import neighbors, datasets from ...

  6. 感知器算法PLA

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

  7. CS229 Lesson 5 生成学习算法

    课程视频地址:http://open.163.com/special/opencourse/machinelearning.html 课程主页:http://cs229.stanford.edu/ 更 ...

  8. [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序

    用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html  目录 马桶排序(令人 ...

  9. Stanford大学机器学习公开课(五):生成学习算法、高斯判别、朴素贝叶斯

    (一)生成学习算法 在线性回归和Logistic回归这种类型的学习算法中我们探讨的模型都是p(y|x;θ),即给定x的情况探讨y的条件概率分布.如二分类问题,不管是感知器算法还是逻辑回归算法,都是在解 ...

随机推荐

  1. Openresty最佳案例 | 第4篇:OpenResty常见的api

    转载请标明出处: http://blog.csdn.net/forezp/article/details/78616660 本文出自方志朋的博客 获取请求参数 vim /usr/example/exa ...

  2. Python 学习笔记(七)Python字符串(二)

    索引和切片 索引  是从0开始计数:当索引值为负数时,表示从最后一个元素(从右到左)开始计数 切片 用于截取某个范围内的元素,通过:来指定起始区间(左闭右开区间,包含左侧索引值对应的元素,但不包含右测 ...

  3. 跨Vlan通信:单臂路由,三层交换机

    实验涉及命令以及知识补充(涉及Vlan通过的以太网口需要设置为Trunk口) 单臂路由 父接口 no ip address :删除实现单臂路由接口的IP no shutdown 虚拟子接口 R2(co ...

  4. 核心动画(UIView封装动画)-转

    一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持. 执行动画所需要的工作由UIView类自动完成 ...

  5. 极光推送小结 - iOS

    此次即友盟分享小结(友盟分享小结 - iOS)之后对推送也进行了一版优化.此次分享内容依然基于已经成功集成 SDK 后 code 层级部分. 注:此次分享基于 SDK 3.1.0,若版本相差较大,仅供 ...

  6. c#分析SQL语句

    最近总结了c#一般的功能,然后自己在博文中写了很多东西.主要是在用途上面.能够解决一些问题.现在分各个组件和方向写完了.主要的内容写了demo,也写了自己的项目组件和模型. 最后一个SQL分析.其实在 ...

  7. 姆洋自主研发堆(heap)头文件

    这是姆洋自主研发的heap头文件 将其录入IDE,并保存为heap.h,保存在存放C++头文件的文件夹里(我只知道Dev-C++是Dev-cpp/MinGW64/lib/gcc/x86_64-w64- ...

  8. leetcode笔记(五)809. Expressive Words

    题目描述 Sometimes people repeat letters to represent extra feeling, such as "hello" -> &qu ...

  9. ABAP术语-Implementation

    Implementation 原文:http://www.cnblogs.com/qiangsheng/archive/2008/02/22/1077076.html The concrete cod ...

  10. Mac系统配置php环境

    [写在前面——叨叨叨] -_-#急着配环境的同志们可以绕道.最近学校的实验室里接了一个小项目——考勤刷卡系统,利用RFID在硬件层获取学生卡的ID,通过wifi传输至服务器,进行考勤信息存储,手机端获 ...