机器学习笔记(二)感知器perceptron
一、感知器介绍
以银行给用户发信用卡为例:
x为用户的特征向量每一维度代表一个特征,例如年龄、收入、工作年限、负债情况等,y为发给信用卡的情况,+1代表发,-1代表不发
感知器的模型为
以二维特征空间为例:
其中 w0 + w1x1 + w2x2 = 0 为二维平面的分割线
二、算法实现(Perceptron Learning Algorithm,PLA)
对于t轮迭代的过程中,每一轮迭代,都可以找到数据样本(特征向量)在现有的权重wt下的输出结果与原来标签不相同,表示样本数据犯了错误
用犯错的样本更新权重
样本标签为正,wx乘积为负,即w与x两个向量的夹角大于90度(过大,要小于90度),w和x相加的向量小于90度,此时w+yx=w+x(由于y=+1)
样本标签为负,wx乘积为正,即w与x两个向量的夹角小于90度(过小,要大于90度),w和x相减的向量小于90度,此时w+yx=w-x(由于y=-1)
所以无论wx的乘积的正负,只有样本犯错,更新方法均为
将这一轮权重wt与yx的和作为下一轮的权重,知道没有错误的样本出现,迭代结束
三、算法证明
对于线性可分的数据,PLA算法最终才能停止,数据不是线性可分,则PLA算法(不允许有错误样本的情况)不能停止
假设对于线性可分的数据资料存在一个理想的wf,可以把数据完美的分开:
则可得到yn和wf*xn是同号的,可知yn*wf*xn > 0,对于数据中的任何一个点,在迭代过程中:
成立,则在更新的过程中可知:
wf*w(t+1)是越来越大,即w(t+1)与wf越来越接近,要找的函数越来越接近理想函数
在有错误分类样本数据的情况下,yn和wf*xn是异号的,有:
又更新权重的公式可得:
则可知,每次更新的权重不大于,即错误样本的权重更新有限制
可得
由于
的最大值为1,可知迭代次数T的最大为
,即T在有限次的情况下会停止算法。
四、数据非线性可分的情况
在现实中,数据资料往往不是线性可分的,并且事先不知道资料是否线性可分,PLA算法不能用于直接的数据,并且数据在含有噪声的情况下,就算是线性可分的数据往往变得线性不可分
所以,退一步,找到一条数据样本错误分类最小的线,作为最终的函数:
这是一个NP-hard问题
更新权重后,比较wt和w(t+1)两种情况下的错误,如果错误较少则更新权重,跑过足够多的迭代次数后结束算法。