PLA

PLA:Perceptron Learning Algorithm
PLA的任务就是找到将数据集划分为两个区域的线。
基本模型

也可以叫linear classifiers


注意:上标表示第几个样本,下标表示这个样本的第几个特征

PLA算法流程:
输入:训练数据集{(X1,Y1),(X2,Y2),...,(XN,YN)}
输出:W
(1)选取初值W0
(2)从训练集中选取样本(Xi,Yi)
(3)更新。如果Yi(WtXi)≤0, 则Wt+1=Wt+ηYiXi
(4)转至(2),直至训练集中的所有样本被完全正确分类。

具体更新流程:

用法
假设现在我们通过PLA算法已经求得了一个模型。现在需要去预测一个不知道标签的样本的标签是多少?
我们把这个样本的特征X带入到h(X)中,h(X)就会等于+1或者-1(这个模型判断的这个样本最有可能属于哪个类别),我们就预测出来这个样本的标签了。

当W(T)与W(f)越来越接近时,两个的内项积越来越大,也有可能是长度变大的原因,因此要考虑以下因素:

主要靠红色那一项增长,y(n)为正负1,平方之后为1.
其中yWx<0表示分割的区域内有不符合的点,因此乘积为负。

经过T此矫正,可得到以下结果:

表示两个正规化向量内积大小表示角度大小。

PLA优劣
好处:
简单,快速。100维和二维是一样的,只是时间多五十倍。
坏处:
假设数据是线性可分的,且计算需要用的W(f),这个是未知的。

关于noise
数据集f中有wrong date(noise),且D中也有可能包含noise

因此引入Noise Tolerant,g为犯错最少的线,但这是NP-hard问题。

可以用口袋算法:

跑足够多次返回最佳答案,若线性可分,用口袋算法比PLA更费时,口袋需要把所有数据跑一遍,PLA找到线性可分的线即可。

posted @ 2020-08-14 23:17  吴莫愁258  阅读(458)  评论(0编辑  收藏  举报