原文地址:https://www.jianshu.com/p/ed0aee74523f

一、Perceptron Learning Algorithm

(一)算法原理

PLA本质是二元线性分类算法,即用一条线/一个面/一个超平面将1、2维/3维/4维及以上数据集根据标签的不同一分为二。算法确定后,根据\(W\)取值的不同形成不同的\(h\),构成假设集合\(H\)。如2维感知器算法,根据\(w_0\),\(w_1\),\(w_2\)的不同取值,构成了不同的\(h\),这些\(h\)最终构成\(H\)。为了方便表示,将阈值的相反数记为\(w_0\),对应的数据点增加一维\(x_0\),恒为1。算法就是根据给定数据集\(D\)从\(H\)中选出与目标模式\(f\)最为相似的\(g\)。


(二)更新规则/学习过程

遍历数据集合,若遇到异常点,即由当前\(W\)更新为新的\(W\)。
若异常点的\(y\)值为+1,表明\(X\)与当前\(W\)的内积值为负,角度过大,更新后角度将会变小;若异常点的\(y\)值为-1,表明\(X\)与当前\(W\)的内积值为正,角度过小,更新后角度将会变大。
更新\(W\)的本质其实是从\(H\)中选出与\(f\)更为相似的\(h\)的过程。

更新后不能保证异常点变为正常点,只是异常的程度小了点。

(三)停止更新

在当前\(W\)的情况下,遍历\(D\)中所有数据点,无异常点时停止更新。
然而一定能够保证能停止更新吗?即在当前W下无法找到一个新的W使得对应的h与f更为接近?
答案是只要数据线性可分就能!

\(W_f\)与\(W_t\)的内积值随着更新次数的上升而增大,同时,\(W_t\)的模也在增大。不过,内积增大的程度往往大于模增大的程度,保证了随着更新次数的上升,\(W_t\)与\(W_f\)趋于越来越接近。



(四)PLA的优缺点

优点:简单、快速、任意维度;
缺点:假设数据线性可分,然而我们并不知道\(f\),也就不知道是否可分。再来,要是知道线性可分,\(W\)也已经知道了,没有必要再用PLA了;经过多少次更新才能收敛也不知道,如上证明,\(T\)与\(W_f\)有关,然而我们不知道\(W_f\)。

二、Pocket Algorithm

若数据线性不可分,使用PA,即既然异常点无法避免,PA在\(H\)中找到一个使得异常点数目最小的\(h\)作为\(g\)。
NP问题:\(O(n^k)\)为多项式型时间复杂度,\(O(k^n)/O(n!)/O(>\!n!)/...\)为指数型时间复杂度。问题分为可解问题和不可解问题,多项式型时间复杂度的可解问题为P问题,验证时为多项式型时间复杂度的问题为NP问题,能否可解未知。P问题肯定是NP问题,NP问题不一定是P问题。

PA,初始化\(W\),放到口袋里,若遇到异常点,使用PLA的更新规则得到新的\(W\),遍历数据集,若是新的\(W\)下异常点的数目更少,则用新的\(W\)替换旧的\(W\)放到口袋中,否则不替换。继续遍历数据集,得到下一个异常点,重复上述过程至足够迭代次数。口袋里放的永远是目前使得异常点最少的\(W\)。
PA不影响PLA的正常运行,只是从历史\(W\)中挑出使得样本内分类错误最少的\(W\)作为最终返回值。

如果数据集是线性可分的,PLA和PA都能够实现\(D\)内无异常点的分类,但是PA的时间会长于PLA,因为多了比较两个不同的\(W\)下遍历一轮数据所得异常点数目多少的过程。

机器学习基石笔记:02 Learning to Answer Yes/No、PLA、PA的更多相关文章

  1. 林轩田机器学习基石笔记2—Learning to Answer Yes/No

    机器学习的整个过程:根据模型H,使用演算法A,在训练样本D上进行训练,得到最好的h,其对应的g就是我们最后需要的机器学习的模型函数,一般g接近于目标函数f.本节课将继续深入探讨机器学习问题,介绍感知机 ...

  2. 机器学习基石:02 Learning to Answer Yes/No

    Perceptron Learning Algorithm 感知器算法, 本质是二元线性分类算法,即用一条线/一个面/一个超平面将1,2维/3维/4维及以上数据集根据标签的不同一分为二. 算法确定后, ...

  3. 机器学习基石 1 The Learning Problem

    机器学习基石 1 The Learning Problem Introduction 什么是机器学习 机器学习是计算机通过数据和计算获得一定技巧的过程. 为什么需要机器学习 1 人无法获取数据或者数据 ...

  4. 林轩田机器学习基石笔记3—Types of Learning

    上节课我们主要介绍了解决线性分类问题的一个简单的方法:PLA.PLA能够在平面中选择一条直线将样本数据完全正确分类.而对于线性不可分的情况,可以使用Pocket Algorithm来处理.本节课将主要 ...

  5. 机器学习基石笔记:01 The Learning Problem

    原文地址:https://www.jianshu.com/p/bd7cb6c78e5e 什么时候适合用机器学习算法? 存在某种规则/模式,能够使性能提升,比如准确率: 这种规则难以程序化定义,人难以给 ...

  6. 林轩田机器学习基石笔记4—Feasibility of Learning

    上节课介绍了机器学习可以分为不同的类型.其中,监督式学习中的二元分类和回归分析是最常见的也是最重要的机器学习问题.本节课,我们将介绍机器学习的可行性,讨论问题是否可以使用机器学习来解决. 一.Lear ...

  7. 林轩田机器学习基石笔记1—The Learning Problem

    机器学习分为四步: When Can Machine Learn? Why Can Machine Learn? How Can Machine Learn? How Can Machine Lear ...

  8. 机器学习基石笔记:04 Feasibility of Learning

    原文地址:https://www.jianshu.com/p/f2f4d509060e 机器学习是设计算法\(A\),在假设集合\(H\)里,根据给定数据集\(D\),选出与实际模式\(f\)最为相近 ...

  9. 机器学习基石笔记:03 Types of Learning

    原文地址:https://www.jianshu.com/p/86b2a9cef742 一.学习的分类 根据输出空间\(Y\):分类(二分类.多分类).回归.结构化(监督学习+输出空间有结构): 根据 ...

随机推荐

  1. python 数据可视化 -- 生成可控的随机数据集合

    生成可控的随机数据集合 使用 numpy.random 模块 numpy.random.random(size=None)  返回 [0.0, 1.0) 区间的随机 floats, 默认返回一个 fl ...

  2. 第一二次java实训作业

    1. 声明一个整型变量a,并赋初值5,在程序中判断a是奇数还是偶数,然后输出判断的结果. package java1; public class java1 { static int a=5; pub ...

  3. OO第一单元三次作业总结

    写在前面 第一单元作业是针对输入的多项式进行格式合法判断,然后进行求导,结果长度优化,最后输出.三次难度递增,不断添加新的需求,总体感觉在实现方面没有多大困难(?),个人主要困扰环节是寻找自己未知bu ...

  4. Jmeter监控服务器-CPU,Memory,Disk,Network性能指标

    本文主要说一下如何通过JMeter插件来监控服务器CPU.内存.磁盘.网络等相关资源. 一.下载 首先进入网址https://jmeter-plugins.org/downloads/old/  下载 ...

  5. C/C++中volatile关键字详解

    1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier.这是 BS 在 "The ...

  6. Parsing error was found in mapping #{}. Check syntax #{property|(expression), var1=value1, var2=val错误

    xml中有一个语法错误,整个都错了, 虽然只调用了select查询的方法,但是update中也有语法错误

  7. Win7 VS2017 Boost Python入门

    闲来无事想练习下用Python作为游戏脚本绑定到C++,网上搜了下,Python文档有些例子,但是太过复杂,gayhub无意中看到有人用Boost Python绑定,简单粗暴,省时省力,记录备忘. 写 ...

  8. Java性能优化的50个细节(珍藏版)

    原文地址:https://www.toutiao.com/i6595499804082569742/ 在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重 ...

  9. Python开发——13.操作系统、进程和线程

    一.操作系统 1.定义 操作系统是用来协调.管理和控制计算机硬件和软件资源的系统程序,它位于硬件和应用程序之间.操作系统运行在内核态,拥有对所有硬件的完全访问权,可以执行机器能够运行的任何指令.软件的 ...

  10. pointer-events: none 的两个应用场景

    简介 pointer-events: none 真是个神奇的属性. 该属性有什么用?借用 CSS3 pointer-events:none 应用举例及扩展 的总结来说: pointer-events: ...