博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
感知器算法PLA
阅读量:5371 次
发布时间:2019-06-15

本文共 1452 字,大约阅读时间需要 4 分钟。

for batch&supervised binary classfication,g≈f <=> Eout(g)≥0 achieved through Eout(g)≈Ein(g) and Ein(g)≈0

其中Ein是某一个备选函数h在数据D上犯错误的比例,在整个数据集上犯错误的比例为Eout

1.Perceptron Hypothesis Set

假设训数据集市线性可分的,感知机学习是目标就是求得一个能够将训练集正实例点和负实例点完全正确分开的分离超平面,

对于一组数据X={x1,x2,x3...,xn},其中每一个xi代表了一个属性值,那么这个属性值所代表的属性的重要程度可能是不同的,我们用一组权重的向量代表每个属性的重要程度W={w1,w2,w3...,wn},wi变化会产生不同的数据,这样对每一组数据我们可以计算出一个得分score,他可能代表了一些具体含义,比如某客户的信用额度。那么当score与某一临界值作比较时,当score大于临界值时,就是正值表示的含义是发信用卡,当score小于该临界值时,就是负值表示不发信用卡,这样分类器就产生了。具体来说:

接着为了之后的简单,我们进行了合并的操作:

相应的,在二维空间中,h(x)变成了如下形式

2.Perceptron Learning Algorithm (PLA)

 PLA算法的基本思想是,最开始的时候随便取一条曲线wn,这条曲线应用到已知的训练数据集中,那么会有错误的划分(xn,yn),这时候我们去纠正我们的曲线wn+1=wn+ynxn

  

 

根据上图,由于权向量w是分割线的法向量,无论发生错误的点是正值还是负值,经过修正后的分割线调整了方向从而向错误点靠拢,就是说他更接近那条完美的分割线。算法的具体描述是:

3.PLA算法的可行性

想让PLA算法可停止,必须能够找到至少一条直线将训练数据集D划分成正值和负值两个部分,即必须有无错的权向量存在。这样的D我们称它为“线性可分”的。D线性可分是PLA停止的必要条件,那么他是充分条件吗?即如果D线性可分,PLA一定会停止吗?证明如下:

通俗的说就是,如果D里面的数据能划分,就一定能找到那条(其实有无数条)划分线;此时,在D里面随便选一个点,它一定处在划分线的某一侧(不是直线上),并且这一侧所有其他点的计算符号都与它相同,所以这些点到直线的距离大于零(不等式(1)的意义);根据这些条件得到不等式(2),它告诉我们权向量就像11点50的分针,近似目标向量就像同一时刻的时针,每一次修正,分针都离时针更近了!

但是上边的证明还不够完美,向量内积不仅反映了向量的角度还反映了其长度,两个向量就算夹角不变,只要长度变化,内积也可以增大!

不错,权向量的长度会怎么变化,推导如下

可以看到,修正之后权向量的长度,相较于修正之前的增加有一个上限,或者说它的长度增长是较慢的。这个上限由D中距离坐标原点最远的那个点决定。

4.Learning with Noisy Data

对于那些有杂质的数据来说,要做到线性可分是非常困难的,因此我们采用的方法是找到一条直线,它是所有可能直线当中犯错误最少的?这是一个很难的问题,因为所含的直线太多了,你必须完整遍历一遍之后才能找到最优解,这是数学上的NP-hard问题。因此又提出了妥协的结果:口袋算法(Pocket Algorithm)

 

 

 

 

转载于:https://www.cnblogs.com/nolonely/p/6155060.html

你可能感兴趣的文章
uva 12097 - Pie(二分,4级)
查看>>
mongodb索引
查看>>
nginx源码学习资源(不断更新)
查看>>
【bzoj2882】工艺 后缀自动机+STL-map
查看>>
[redis] redis
查看>>
Linux的加密认证功能以及openssl详解
查看>>
[Tools] 使用XP远程登录Win8系统
查看>>
【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识
查看>>
HDU- 2265 Encoding The Diary
查看>>
socket基本概念
查看>>
[第三方]SCNetworkReachability 获取网络状态控件使用方法
查看>>
在Windows上使用putty连接一台Linux主机
查看>>
Socket常见错误
查看>>
百度地图2.0API和3.0API。你想要的百度地图的这都有
查看>>
专业词汇
查看>>
星期五的收获
查看>>
proxmox 去除订阅提示
查看>>
使用Html.EditorFor()为文本框加上maxlength,placeholder等属性
查看>>
[转]后缀数组求最长重复子串
查看>>
设计模式——外观模式详解
查看>>