机器学习--------PLA解析

摘要:在学习机器学习时,涉及线性分类问题时,对于如何找到最佳的线性分类器,我们会使用到Perceptron Learning Algorithm(PLA),即是感知机学习算法,来在平面(这里以二维平面为例)的众多直线中找到一条理想的直线,该直线可以达到很好的分类效果。本文将对PLA算法的原理和过程进行解释。

1.算法基本思想

如何找到一条能将平面上所有的正类和负类完全分开的最好的直线呢?

我们可以使用逐点修正的思想,首先在平面上随意取一条直线,看看哪些点分类错误。然后开始对第一个错误点就行修正,即变换直线的位置,使这个错误点变成分类正确的点。接着,再对第二个、第三个等所有的错误分类点就行直线纠正,直到所有的点都完全分类正确了,就得到了最好的直线。这种“逐步修正”,就是PLA思想所在。
在这里插入图片描述
t表示修正时所在的轮数。

2.PLA算法具体过程描述

首先随机选择一条直线进行分类。然后找到第一个分类错误的点,如果这个点表示正类,被误分为负类,即 ,那表示w和x夹角大于90度,其中w是直线的法向量。所以,x被误分在直线的下侧(相对于法向量,法向量的方向即为正类所在的一侧),修正的方法就是使w和x夹角小于90度。通常做法是 ,如图右上角所示,一次或多次更新后的 与x夹角小于90度,能保证x位于直线的上侧,则对误分为负类的错误点完成了直线修正。

同理,如果是误分为正类的点,即 ,那表示w和x夹角小于90度,其中w是直线的法向量。所以,x被误分在直线的上侧,修正的方法就是使w和x夹角大于90度。通常做法是 ,如图右下角所示,一次或多次更新后的与x夹角大于90度,能保证x位于直线的下侧,则对误分为正类的错误点也完成了直线修正。

按照这种思想,遇到个错误点就进行修正,不断迭代。要注意一点:每次修正直线,可能使之前分类正确的点变成错误点,这是可能发生的。但是没关系,不断迭代,不断修正,最终会将所有点完全正确分类(PLA前提是线性可分的)。这种做法的思想是“知错能改”,有句话形容它:“A fault confessed is half redressed.”

实际操作中,可以一个点一个点地遍历,发现分类错误的点就进行修正,直到所有点全部分类正确。这种被称为Cyclic PLA。

3.PLA算法过程的图解形式
把误分为正类(或负类)的点x和当前的w(t)用于计算下一个W(t+1)),W(t+1)又可作为确定直线的法向量
在这里插入图片描述
下面用图解的形式来介绍PLA的修正过程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述4.对PLA,我们需要考虑以下两个问题:

PLA迭代一定会停下来吗?如果线性不可分怎么办?

PLA什么时候会停下来呢?根据PLA的定义,当找到一条直线,能将所有平面上的点都分类正确,那么PLA就停止了。要达到这个终止条件,就必须保证D是线性可分(linear separable)。如果是非线性可分的,那么,PLA就不会停止。

PLA停下来的时候,是否能保证 ?如果没有停下来,是否有 ?
这个证明比较复杂,略。
补一下思想:
在这里插入图片描述

在这里插入图片描述
即若线性可分,PLA算法最终一定会停止。

5.PAL算法升级——PA算法

在线性可分的情况下,PLA是可以停下来并正确分类的,但对于
非线性可分的情况, 实际上并不存在,那么之前的推导并不成立,PLA不一定会停下来。所以,PLA虽然实现简单,但也有缺点。

对于非线性可分的情况,我们可以把它当成是数据集D中掺杂了一下noise,事实上,大多数情况下我们遇到的D,都或多或少地掺杂了noise。这时,机器学习流程是这样的:
在这里插入图片描述
在非线性情况下,我们可以把条件放松,即不苛求每个点都分类正确,而是容忍有错误点,取错误点的个数最少时的权重w:
在这里插入图片描述
事实证明,上面的解是NP­hard问题,难以求解。然而,我们可以对在线性可分类型中表现很好的PLA做个修改,把它应用到非线性可分类型中,获得近似最好的g。

修改后的PLA称为Packet Algorithm。它的算法流程与PLA基本类似:
首先初始化权重,计算出在这条初始化的直线中,分类错误点的个数。

然后对错误点进行修正,更新w,得到一条新的直线,在计算其对应的分类错误的点的个数,并与之前错误点个数比较,取个数较小的直线作为我们当前选择的分类直线。

之后,再经过n次迭代,不断比较当前分类错误点个数与之前最少的错误点个数比较,选择最小的值保存。

直到迭代次数完成后,选取个数最少的直线对应的w,即为我们最终想要得到的权重值。
在这里插入图片描述
在这里插入图片描述

参考资料:
台大林轩田机器学习基石

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yue200403

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值