没有合适的资源?快使用搜索试试~ 我知道了~
首页机器学习PLA、pocket
资源详情
资源评论
资源推荐

PLA and POCKET
问题描述--------算法思想设计描述------伪代码-----复杂度分析---------编程-----上机调
试--------实验分析------结论,本文是采用这样的顺序描述算法的。
本文所写算法对应于一个 NP-Hard 问题,主要采用近似求解算法和贪心算法的思想。
这对应于机器学习中 Binary Classification,PLA ,Pocket Algorithm
问题描述:
银行发信用卡问题。现有一群人,数量为 N,( N 很大),假设他们在一个银行中的
登记记录数据我们已经得到。对于每个人记录的数据有 (对应第 i 个
人的信息,相应的 我们可以认为是这个人的一些个人数据的量化值,比如年龄、
学历、收入、工作年限等等,他们会对应于一组数值如 0.94544 0.42842 0.79833 0.16244 -1
对应于 )。如果 y 是-1,则对应于银行没有给他发信用卡。如果是 y=1,
则是发给了它信用卡。现在由这样的一推数据如何得到一个函数,有这些训练集得到这个
目标函数。并用这个目标函数作用于对于一群待发信用卡的人作出判断,一边给银行提供
发卡的依据。
具体数据见附录 Q18Train.m 为训练数据集, Q18TestData.m 为待判断数据集,这里我
们可以叫他测试数据集。对于银行,他之前会设置一个发信用卡的门限值 threshold.
算法描述和伪代码表述:
之前我们都是用 PLA(perception learning algorithm):它是针对于线性可分的训练集
的。也就是这样的所有的数据,比如说是二维数据点,可以用一条直线将他们分成两派,
一片是可发卡的数据,直线另一侧则是不可发卡数据。将用户数据加权求和与门限值相比
较,作差为正则发卡,为负则不发卡。
这里假设一个 Hypothesis datasets ,每计算一次都是一个 H,如果有错则修正,一直到
所有的数据都没有错误,这样的 H 就是我们的未知的目标函数 f。

对于 h,
这里 h 可以化简一下,
PLA 的算法描述是:wt 是类似于那条直线的法向量,( )是一个人的数据
记录
for t=0,1,2,3....
find a mistake of wt called (
)
try to correct the mistake by
对于线性可分数据集 PLA 算法是收敛的证明:
,t 是代表第 t 次得到的结果或者第 t 次所用的
数值。
(1) 这里是单增的,如果从向量角度看,两个

向量内积越大,如果排除其模值得快速增大,可以看做是其角度在不断的调整,逐渐变得
同向。(2)就是证明其模值变化有限。
(2)
这里可以认为每次增加的步长有限,同时也说明 两个向量的内积越
来越大,不是因为其模值快速变化所致。因此可以看出最终得到的 Wt 是收敛的(对于线
性可分数据集)。
而且可以算出 t 的取值:
而且:

则
这是线性可分数据集的 PLA 终止时的 T 的次数表达式。
PLA 算法对于线性可分的数据源是可以最后能得到目标函数的。但是对于线性不可分
的数据集,它不会自动的停止。对于非线性不可分的数据集,如果对其分类,它将是一个
NP-Hard 问题。这里的 Pocket 算法,则是一种近似算法,他是用贪心算法,每次将 PLA 修
正的 wt 与 pocket 记录的 pwt 比较,对于所有数据集犯错最少的那个作为新的 pwt,这样
PLA 一直进行,得到修正的值 wt 与 pwt 比较,如果 wt 的犯错少,则将 pwt 更新为 wt。如
果进行的 Pocket 算法运行时间足够长,因此我们就可以找到一个算错尽可能少的 pwt。并
以此来进行对于测试数据集的分类。
Pocket 算法如果对于线性可分数据集,它会自动停止,并且得到一个 wt,线性可分数
据集,然后用于测试。
本文主要是采用 pocket 算法():
//%funpocket2.m
initialize pocket weights pwt
for t=0,1,2,....
//%find a (random) mistake of wt called (xn(t),yn(t))
while !flag
剩余16页未读,继续阅读















rungedu
- 粉丝: 44
- 资源: 11
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

评论3