林轩田之机器学习课程笔记(when can machines learn之learning to answer yes or no)(32之2)

来源:互联网 发布:学生借款软件 编辑:程序博客网 时间:2024/04/27 21:23

  • 概要
  • 感知机模型的假设空间
  • 感知机模型的演算法
  • 感知机的理论保证
  • 感知机如何处理不可分数据

欢迎转载,可以关注博客:http://blog.csdn.net/cqy_chen

概要

本节课程主要是学习是非题目,在机器学习领域中,很多情况就是进行一个二分类,比如是否发信用卡,银行是否贷款,用户会不会点击广告等。这里从一个简单的机器学习模型——感知机模型出发,以是否授予信用卡为例。

感知机模型的假设空间

根据上节的课程,我们知道机器学习的流程:
这里写图片描述
我们需要在假设空间H中通过演算法A找到我们的函数g使得gf尽可能的接近。
那么如何来找H呢?
这里写图片描述
我们知道在得到一笔资料后,比如(身高,年龄,薪水,房产)等等。这些可以看做用户的特征。在机器学习中我们称之为特征。采用一组权重和每个特征进行乘积,得到一个分数,为了判断是否发信用卡,我们可以根据这个分数设定一个阈值,就像考试是否及格一样,设定为60分。
那么根据每个特征的权重不同,而有不同的h,这里就代表高维空间中的一个超平面。而空间中的所有的线就是代表H.
将上面的公式简化下:
这里写图片描述
这里假设的是用户的资料的第0维为一个常数。
在一个二维空间中,可以表示成如下所示:
这里写图片描述
H:二维空间中的所有线表示假设空间。
h:一条线表示一个假设h.
x:平面中的点。
y:平面中点是圈圈还是叉叉。
因为是线性的,所以也称为线性模型。

感知机模型的演算法

演算法是从假设空间中找到一个h。如何去找呢?
f是一个未知的东东,我们要找到一个g去逼近f。这样的话,假设g在提供的资料里面能够分类正确,
那是不是g接近了f呢?所以是要在提供的数据中,使得g尽可能分类正确。
比如我们可以随机的去搜索整个平面上的线,直到这条线的一边是正样本,另一边是负样本。这样岂不是要到天荒地老。。。。

可不可以随机的找一条线,然后根据所看的数据,不断的修正这条线,使得这条线趋近完美?这就是感知机的演算法。其实现在的大多数机器学习都是建立在这样的思想中,采用随机梯度下降。如下图所示:
这里写图片描述
找到一个使得该线犯错误的点,进行修正,直到该线条不再犯错误。
那么如何修正呢?假设该线的法向量是W,如果样本是正的,预测成了负的,那么法向量和该点这个向量之间的夹角过大,超过90度。当法向量和该点夹角垂直表示该线经过了该点。需要调整,那么进行调整。如果样本是负的,预测是正的。那就是代表夹角过小,小于90度,那么进行相减。最后调整的式子如下:

wt+1=wt+yn(t)xn(t)

这里很明显,每次调整幅度很大,会导致调整一次,可能开始只错一个点,调整后,错的更多。
这里写图片描述
如图出现了错误,x9,如何修正呢?
如下图:
这里写图片描述

那么我们也知道, 这个演算法,在更新的过程中,不断的出现新的错误点,这样会不会进入死循环呢?下面进行讲解。

感知机的理论保证

pla的终止条件是资料可以线性可分,如果不可分,那就会进入死循环了。那么这里假设所有的点都是线性可分的,那么这个演算法到底会不会停下来呢?

假设存在一条直线 ,其法向量为wf能够将所有的数据进行分离,那么有:
这里写图片描述
那么这个时候假设我们有一条直线,其法向量为wT,存在如下结论:
这里写图片描述
每次错误点更新,会导致直线wT和完美的直线wf之积越来越大。这个表示两条直线角度越来越接近?(如果法向量的数值没有变化的话)
同时也可以证明,法向量的长度增长,不会超过x中的最大值。
这里写图片描述
如果我们可以证明如下等式成立,是不是就说明了WTWf的夹角在不断变小。也就是我们的直线不断的趋向完美的分割线。
这里写图片描述
这个如何证明呢?这样去想,我们的直线和完美直线顶多是重复,这样的话就会导致

Wf||wf||WT||WT||1

下面进行详细证明:
1)假设经过T轮更新,由上面得证:

wTfwt=wTf(wt1+yn(t1)xn(t1))=wTfwt1+wTfyn(t1)xn(t1)w0+TwTfyntxntTwTfyntxnt

因为经过T轮更新,我们得到wTfwtTwTfyntxnt
2)再来看每次wt长度增长情况, 这里稍微省略下,上面其实有推导的。
||wt||2=||wt1+yn(t1)xn(t1)||2||wt1||2+maxn||xn||2||w0||2+Tmaxn||xn||2Tmaxn||xn||2

这里我们得到:||wt||2Tmaxn||xn||2
Wf||wf||WT||WT||TwTfyntxntTmaxn||xn||||wf||TwTfyntxntmaxn||xn||||wf||

又因为Wf||wf||WT||WT||1
所以:
T(maxn||xn||||wf||wTfyntxnt)2

令:R2=maxn||xn||2 and ρ=minnynwTf||wf||xn
那么我们可以得到:
TR2ρ2

证明得到,在线性可分的情况下,感知机迭代是收敛的。

感知机如何处理不可分数据

如果感知机在线性可分的情况先,是可以在有限次的情况下,算法收敛,但是我们其实是不知道给你一堆数据,到底是否线性可分的。及时线性可分,但是到底多好次呢?虽然上面已经证明但是这个依赖不可知的一个完美分割线的。成了一个先有蛋还是先有鸡的问题。

如果数据线性不可分,如何选择一条好的直线呢?我们可以找到一条线使得这条线犯的错误最少。麻烦的是这是个NP难问题。。。。。。没办法迅速找到答案。
NP难问题参考:https://baike.baidu.com/item/NP-hard/10680083?fr=aladdin

这里写图片描述

既然这是个NP难问题,该如何解决呢?这里就用到贪心算法喽,随时保持存放着比较好的直线, 不断更新。
这里写图片描述
这个东东我们成为pocket PLA算法。所以在机器学习中,我们基本上不可能得到我们完美的分割线,只是不断的去接近这个分割线。

关于pla的代码可以参考:http://blog.csdn.net/cqy_chen/article/details/76783261

欢迎转载,可以关注博客:http://blog.csdn.net/cqy_chen

阅读全文
0 0
原创粉丝点击