(注:笔者仍处于学习阶段,博客也是刚开始写,如有任何问题欢迎指正!)

0. 机器学习简述

机器学习的目的是通过假设函数g去近似目标函数f的过程。用一张图表示就是:
林轩田机器学习基石笔记2:PLA算法

  • 目标函数f:从特征向量X映射到标签y的函数。
  • 训练集D:一共有N个样本(我更喜欢用m表示样本数量),每个样本的X特征,y为标签。
  • 学习算法A:机器学习要做的部分,训练假设函数g近似目标函数f。
  • 假设函数g:我们通过机器学习训练出的函数。

1. 线性分类器

简单地说,线性分类器就是我们训练出来的假设函数g是线性的。

g:h(x)=sign(n=1Nwixi)

or 矩阵写法
g:h(x)=sign(WTX)

两个式子表示的意思是一样的,其中X就是样本的特征也是已知的,长度为特征个数+1(x0=1),W就是我们需要去计算的部分,sign表示取其符号。由于WX是线性相加的,所以我们称之为线性分类器。

2. 感知器学习算法:简称PLA (Perception Learning Algorithm)

前提假设:样本是线性可分的,什么是线性可分下面会讲到。
2.1 算法
林轩田机器学习基石笔记2:PLA算法
形象的说这一算法就叫知错能改算法,哪个样本错分类了,就去纠正W让该样本分类正确就是了。
2.2 纠正方法
纠正过程中分两种情况:
(1)y是正的,分类器把它归为负的了。这时WTX=|W||X|cosα<0。说明WX是钝角关系,我们将角度变小。
(2)y是负的,分类器把它归为正的了。这时WTX=|W||X|cosα>0。说明WX是锐角关系,我们将角度变大。
林轩田机器学习基石笔记2:PLA算法
2.3 例子
初始化:W为0向量,所以所有样本都是错分类的。
updata1:找到一个错误向量x1,通过公式Wt+1:=Wt+y1X1更新W,得到的直线为W的垂线(因为直线为WTX=0,当角度α为90度时cosα=0)。
重复上一步骤直到第9步时将样本正确分类。
林轩田机器学习基石笔记2:PLA算法
2.4 线性可分的概念
前面说到PLA算法必须在样本是线性可分的情况下使用,那什么是线性可分呢?
如果数据的特征是二维的情况
林轩田机器学习基石笔记2:PLA算法
图中的点就是所谓的样本,“O”和“X”就是样本的类别,直线就是线性分类器。如果我们能找到一条直线将“O”样本和“X”样本分离开来,那么我们就称这些样本线性可分。
换句话说,就是

ynWTfXnminnynWTfXn0

Wf就是理想中的分类器,上一句公式的意思就是任意一个点的预测结果与标签同号,而样本是线性可分时,由于Wf是理想分类器上述情况肯定成立。
2.5 验证算法T次迭代后的结果WT与理想分类器Wf的相关性
最后我们需要证明得到的结果确实能够逼近理想分类器,不然瞎折腾什么呢。评价两个向量的相关性,我们通常对这两个向量的单位向量做内积,即
WTfWfWTWT

若该值越接近1,那么两个向量越相关。
我们进行一系列的推导证明这一算法在满足样本线性可分时,能达到逼近理想分类器Wf的要求。
林轩田机器学习基石笔记2:PLA算法
林轩田机器学习基石笔记2:PLA算法
2.6 算法评估

  • 优点:算法简单,速度快,任意维度下均可使用。
  • 确定:1. 需要假设样本是线性可分的。2. 我们不知道需要循环多少次。

那么如果样本存在噪声不是线性可分的怎么办呢,没关系,PLA算法存在一种变形形式,我们称之为Pocket Algorhitm。

3. Pocket Algorithm

林轩田机器学习基石笔记2:PLA算法
这一算法用的是贪心算法的思想,每一次随机选择一个错分类样本,并通过PLA的思想进行纠正他,然后判断新的分类器错分类数量是否比原先少,如果是那就说明新的分类器更加棒啦。通常情况下这一算法需要我们制定一个终止条件,比如多少次迭代之后或者说错分类数少于一个阈值等等。由于这一算法需要比较错分类的样本数,这需要一个遍历过程,因此Pocket Algorithm要比PLA慢许多。

相关文章:

  • 2021-07-16
  • 2021-05-18
  • 2022-12-23
  • 2021-11-06
  • 2021-06-11
  • 2021-04-27
  • 2021-10-20
  • 2021-04-13
猜你喜欢
  • 2021-08-05
  • 2021-11-04
  • 2021-04-02
  • 2021-06-15
  • 2021-08-25
  • 2021-04-23
  • 2021-04-02
相关资源
相似解决方案