机器学习----感知机,Perceptron Learning Algorithm (PLA)

机器学习----感知机,Perceptron Learning Algorithm (PLA)

感知机是一种简单、靠谱的分类算法,首先我们看一张示意图:

目标函数:
h ( x ) = sign ( ( ∑ i = 1 d w i x i ) + b ) h(x)=\text {sign}((\sum_{i=1}^{d}w_ix_i)+b) h(x)=sign((i=1dwixi)+b)

在这里插入图片描述

对于 ( + 1 , − 1 ) (+1,-1) +11的分类,如果是 ( + 1 , 0 ) (+1,0) +10,只需要适当调整 s i g n sign sign函数表达式就行了。实际上分错分对都是按上述进行更新的,直到没有错误。由向量关系可知, w w w为分类直线的法向量,上图右边表示当 y = + 1 y=+1 y=+1时和 y = − 1 y=-1 y=1时,分类直线法向量的更新步骤可以看出:

  • y = + 1 y=+1 y=+1分类错误时, w t T x < 0 , s i g n ( w t + 1 T x ) = − 1 w_t^Tx<0,sign(w_{t+1}^Tx)=-1 wtTx<0sign(wt+1Tx)=1,两个向量夹角大于90°,更新后向量夹角小于90°, w t + 1 T x > 0 , s i g n ( w t + 1 T x ) = + 1 w_{t+1}^Tx>0,sign(w_{t+1}^Tx)=+1 wt+1Tx>0sign(wt+1Tx)=+1,此点更新后分类正确
  • y = − 1 y=-1 y=1分类错误时, w t T x > 0 , s i g n ( w t + 1 T x ) = + 1 w_t^Tx>0,sign(w_{t+1}^Tx)=+1 wtTx>0sign(wt+1Tx)=+1,两个向量夹角小于90°,更新后向量夹角大于90°, w t + 1 T x < 0 , s i g n ( w t + 1 T x ) = − 1 w_{t+1}^Tx<0,sign(w_{t+1}^Tx)=-1 wt+1Tx<0sign(wt+1Tx)=1,此点更新后分类正确
理论证明:

这里感知机模型为:
h ( x ) = sign ( ( ∑ i = 1 d w i x i ) + b ) h(x)=\text {sign}((\sum_{i=1}^{d}w_ix_i)+b) h(x)=sign((i=1dwixi)+b)
变形为:
h ( x ) = sign ( ( ∑ i = 0 d w i x i ) ) = sign ( w T ( t ) x ( t ) ) h(x)=\text {sign}((\sum_{i=0}^{d}w_ix_i))=\text {sign}(w^T(t)x(t)) h(x)=sign((i=0dwixi))=sign(wT(t)x(t))
接着给出式
对 于 y ( t ) s i g n ( w T ( t ) x ( t ) ) 的 数 据 , 更 新 规 则 是 w ( t + 1 ) = w ( t ) + y ( t ) x ( t ) 对于y(t) {sign}(w^T(t)x(t))的数据, 更新规则是 w(t + 1) = w(t) + y(t)x(t) y(t)sign(wT(t)x(t)),w(t+1)=w(t)+y(t)x(t)

  • 因为 y ( t ) ≠ sign ( w T ( t ) x ( t ) ) y(t)\ne \text {sign}(w^T(t)x(t)) y(t)=sign(wT(t)x(t)),所以当 sign ( w T ( t ) x ( t ) ) > 0 \text {sign}(w^T(t)x(t))>0 sign(wT(t)x(t))>0时, y ( t ) = − 1 y(t)=-1 y(t)=1
    sign ( w T ( t ) x ( t ) ) < 0 \text {sign}(w^T(t)x(t))<0 sign(wT(t)x(t))<0时, y ( t ) = 1 y(t)=1 y(t)=1,所以 y ( t ) w T ( t ) x ( t ) < 0 y(t)w^T(t)x(t) < 0 y(t)wT(t)x(t)<0

  • 如果分类正确则, y ( t ) w T ( t ) x ( t ) > 0 y(t)w^T(t)x(t) > 0 y(t)wT(t)x(t)>0

y ( t ) w T ( t + 1 ) x ( t ) = y ( t ) ( w ( t ) + y ( t ) x ( t ) ) x ( t ) = y ( t ) w T ( t ) x ( t ) + y 2 ( t ) x T ( t ) x ( t ) y(t)w^T(t+1)x(t)=y(t)(w(t) + y(t)x(t))x(t)=y(t)w^T(t)x(t)+y^2(t)x^T(t)x(t) y(t)wT(t+1)x(t)=y(t)(w(t)+y(t)x(t))x(t)=y(t)wT(t)x(t)+y2(t)xT(t)x(t)
注意 x ( t ) x(t) x(t)的第一个分量为 1 1 1, w ( t ) w(t) w(t)第一个分量为截距 b b b,因为 y 2 ( t ) x T ( t ) x ( t ) > 0 y^2(t)x^T(t)x(t)>0 y2(t)xT(t)x(t)>0,因此
y ( t ) w T ( t + 1 ) x ( t ) > y ( t ) w T ( t ) x ( t ) y(t)w^T(t+1)x(t)>y(t)w^T(t)x(t) y(t)wT(t+1)x(t)>y(t)wT(t)x(t)

  • 由上我们知道,即使分类错误, y ( t ) w T ( t ) x ( t ) < 0 y(t)w^T(t)x(t) < 0 y(t)wT(t)x(t)<0,但利用更新规则后, y ( t ) w T ( t + 1 ) x ( t ) > y ( t ) w T ( t ) x ( t ) y(t)w^T(t+1)x(t)>y(t)w^T(t)x(t) y(t)wT(t+1)x(t)>y(t)wT(t)x(t),也就是向着正方向前进了,即判断的正确率越来越高,所以如果资料是可分的,那么经过有限步之后可以得到 w w w,使得对所有的 x x x y w T x > 0 yw^Tx>0 ywTx>0
编程示意图:

在这里插入图片描述

更新规则进行更新,还有一点值得注意就是终止规则:

  • 如果已知线性可分,全部判断对终止。
  • 若是线性不可分,一般设定循环多少次后终止,不同循环次数每次终止的结果不一样, w w w调整有可能过度,结果不稳定。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值