机器学习基石笔记01

是非题,如何用电脑来解?

给定使用者,银行判断是否要给他信用卡。

使用者有很多个维度,年龄,薪水,工作年限,债务等,把维度综合起来给他一个分数,超过门限就给信用卡,否则不给信用卡,

x=(x1,x2,x3,...,xd)

w=(w1,w2,w3,...,wd)

h(x)=sign(wixi-门限)=sign(wixi+(-门限)*(+1))=sign(wixi+w0*x0),(令x0为1,门槛值作为一个特殊的w)

总之h(x)=sing((W^T)X)

具体来说,h长什么样子?

二维距离: 

标签用圈圈叉叉表示,sign里面的东西其实就是一条线,每个h对应到一条线,线的一边是正的一边是负的。

所以所谓感知器,回答是非,就是分两类,更高维也是具有类似意义。

现在知道了,假设集H就是平面里所有的线。

现在的问题:如何设计一个演算法,选一条最好的线?(理想上的那个f)

唯一知道的是资料是从f产生的,那可以要求g在手头的资料上跟f最接近,(最好是一模一样?)(过拟合?)

出发点对不对?再谈。在已经看过的资料里面找一条线,满足资料。不是很容易:有无限多条线,用笨方法会搜索无限多条线。

一种方法:一条线在手上,不断去修正它。从一条线g0出发,用w0替代一开始的线(简化符号)(一组W跟假设g是一一对应的关系)

假设wt(第t个版本),W^T*X做内积预测,得到的符号y跟想要的不一样,那就去修正:

我要+,给我-,代表W跟X角度太大,W=W+YX(y=+1,W与X角度太大,通过这个操作减小角度)(要正的就转近一点)

否则(我要-,给我+),W跟X角度太小,W=W+YX(y=-1,W与X角度太小,通过这个操作增大角度)(要负的就转远离一点)

更新到不再犯错的时候。(所有点遍历完都正确)

perceptron learning algorithm(PLA)感知器学习算法

cyclic PLA 绕一圈看看有没有人犯错

演算法图示:

从原点出发(W0开始为0),那看见谁都是错的,都要W(t+1)=W(t)+YX,红线蓝圈为+1,则W(t+1)为红线,红线就是

h的法向量;

下一时刻:发现黑圈有错,那W(t+1)=W(t)+YX,Y是正数,依然是减小角度(当前W与这个应该是+1的点角度分的太开了)。更新后h的法向量变成紫色线

想象:W是“向着”+1的点的,总是想让W更偏向+1,让W更偏离-1;

继续分析一帧,如上图,当前红色W(t)下为法线的h中,把x14这个-1划分到+1了,说明W对他的加成太多,角度太小,那就W(t+1)=W(t)+YX,y=-1,相当于减x,下一个w(t+1)就在紫色,削减了对x14的加成作用。如此循环往复直到没有人偏离。 

第3证明:左右分别乘以yn、xn即可。最右是正数,得证;

意义:更新后的W(t+1)与W(t)相比,它乘以x后与yn的距离靠得更近了!

这个演算法一定会停下来吗?停下来后g跟f一样吗?资料以外的区域?

资料满足线性可分,pla算法才可能停下来。

假设这个线就是wf,那么有:

第一式的蓝色大于红色说明:如果wf就是梦想中的那个线,那么对任何点,wf^T*(xn)再乘以yn都是大于零的;

紫色部分说明:对于现在手上的这个错误点,也满足代入wf后表达式大于0;

有这个基础后,看wfwt接不接近。可以看到,数值上好像会越来越大,某种角度代表两个向量越来越接近。

但,内积越来越大,也可能是长度问题。

PLA:有错误才更新。

第二行蓝色部分是负数(有错误才更新);第四行代表增益的话,最多也就增加最远的点这么远的长度以内(灰色代表±1可以忽略)

最多更新多少次会停止。

所以,如果data线性可分,那么可以肯定wt和wf会越来越接近,且wt长度缓慢增长。

优缺点:

不知道多久停。因为wf是不知道的。

假设找不到完美的线,那就找一条犯错误最小的线;

 计算机无法解决

贪心的算法:不断寻找觉得最好的线,看谁错误少

 如果真的是线性可分,而用了pocket,会有什么坏处?

首先要放进口袋里最好的算法;

其次每次要检查到底谁好,要看所有的资料,PLA只要找出一个错误就去更正就行了

猜你喜欢

转载自blog.csdn.net/jr1261181988/article/details/86484224