机器学习基石感知机模型+PLA

Posted 桃陉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习基石感知机模型+PLA相关的知识,希望对你有一定的参考价值。


写在前面

本节内容主要介绍了感知机模型,还提出了机器学习中的第一个算法PLA,最后对PLA进行了优化得出Packet Algorithm。公式性的推导比较多。

本文整理自台湾大学林轩田的《机器学习基石》


1.感知机模型

∙ \\bullet 引例:银行需要对客户进行判断是否可以给他们发放信用卡。现在收集客户资料,分别收集每个客户的年龄、年薪、工作年龄以及现在的负债。然后就这些因素下面我们使用感知机(Preceptron)模型进行进行分析。

∙ \\bullet 建立模型

▹ \\triangleright 个体 x = ( x 1 , x 2 , x 3 , . . . x d ) x=(x_{1},x_{2},x_{3},...x_{d}) x=(x1,x2,x3,...xd) x i x_{i} xi 表示客户 x x x的属性,我们根据每个属性的重要程度分别为其设置一个权重 w i w_{i} wi (weight),那么对应属性与对应权重的乘积就可以表示我们对该客户的打分情况。

▹ \\triangleright 同时设置一个阈值 t h r e s h o l d threshold threshold,如果打分大于阈值的话就发放信用卡,反之,则不发放信用卡。

{   ∑ i = 1 d w i x i > t h r e s h o l d  放发信用卡    ∑ i = 1 d w i x i < t h r e s h o l d  不放发信用卡  \\begin{cases} & \\text{ } {\\textstyle \\sum_{i=1}^{d}}w_{i}x_{i}>threshold & \\text{ 放发信用卡 } \\\\ & \\text{ } {\\textstyle \\sum_{i=1}^{d}}w_{i}x_{i}<threshold & \\text{ 不放发信用卡 } \\end{cases} { i=1dwixi>threshold i=1dwixi<threshold 放发信用卡  不放发信用卡 

▹ \\triangleright 返回值 y : { + 1 ( g o o d ) , − 1 ( b a d ) } y:\\left \\{ +1(good),-1(bad) \\right \\} y:{+1(good),1(bad)},我们可以设置+1(正数)发放,-1(负数)不发放。0的话情况比较少见,则忽略,随便进行选择 。

可以建立一个函数来进行表示,标红的变量为函数影响因素:
h ( x ) = s i g n ( ( ∑ i = 1 d w i x i ) − t h r e s h o l d ) {\\color{red}h}(x)=sign((\\sum_{i=1}^{d} {\\color{red}w_{i}}x_{i})-{\\color{red}threshold}) h(x)=sign((i=1dwixi)threshold)

▹ \\triangleright 函数优化:因为现在 h ( x ) h(x) h(x) 的表达式还比较凌乱,我们进行设置使其变得更整齐一点。我们设置:
w 0 = − t h r e s h o l d ,   x 0 = + 1 w_{0} = -threshold,\\ x_{0}=+1 w0=threshold, x0=+1

那么就可以将该项合并到求和中,也就是( w 、 x w、x wx 为两个向量):
h ( x ) = s i g n ( ∑ i = 0 d w i x i ) = s i g n ( w T x ) {\\color{red}h}(x) = sign(\\sum_{i=0}^{d}w_{i}x_{i})=sign({\\color{red}w^{T}}x) h(x)=sign(i=0dwixi)=sign(wTx) ( w 、 x w、x wx 为两个向量)

∙ \\bullet 分析:

我们以两个维度为例进行分析,也就是 x = ( x 1 , x 2 ) x = (x_{1},x_{2}) x=(x1,x2)

那么函数为:
h ( x ) = s i g n ( w 0 + w 1 x 1 + w 2 x 2 ) h(x) = sign(w_{0}+w_{1}x_{1}+w_{2}x_{2}) h(x)=sign(w0+w1x1+w2x2)

其中 x x x 就可以表示为二维平面内的点; y y y 的话可以用点的形状来反映,我们设置 o 表示+1,× 表示-1;而假设 h h h 就为二维平面内的直线(我们把它叫做 l i n e a r   c l a s s i f i e r s linear \\ classifiers linear classifiers),直线一边表示发信用卡,一边表示不发信用卡;权重 w w w不同,对应的直线就不同,表示不同的假设情况。如下图所示:


当图形中 o 在直线一边,× 在直线一边时,此时模型最优,准确率最高。


2.PLA算法

我们希望最终从假设集中寻找到的函数 g g g 最接近理想函数 f f f,所以就需要介绍一下寻找最优函数的过程。

∙ \\bullet PLA过程

▹ \\triangleright 首先随机选择一条直线 g 0 g_{0} g0,下面我们用 w 0 w_{0} w0(权重向量) 来辅助进行观察, w 0 w_{0} w0 相当与直线的法线(垂直于该直线)。当点判断出错时,就进行纠正,直到所有点都准确无误即可(这也被叫做循环PLA)。

▹ \\triangleright 我们开始找犯错的点,一共有两种情况。第一种是点本来是正,结果判断为负。即现在 w t T x n ( t ) < 0 w_{t}^{T}x_{n(t)}<0 wtTxn(t)<0(t表示第t次纠正),那就表示 w w w x x x的夹角大于90°,也就是 x x x 被误分在直线下侧,法向量方向为正方向,那么为了纠正的话就需要将角度缩小,也就是让 w = w + y x , y = 1 w=w+yx,y=1 w=w+yx,y=1另一种是点本来为负,结果误分为正。即现在 w t T x n ( t ) > 0 w_{t}^{T}x_{n(t)}>0 以上是关于机器学习基石感知机模型+PLA的主要内容,如果未能解决你的问题,请参考以下文章

PLA-机器学习基石2

感知机学习算法(PLA)

机器学习基石VC dimension

机器学习---用python实现感知机算法和口袋算法(Machine Learning PLA Pocket Algorithm Application)

PLA(感知机)

台大林轩田·机器学习基石记要