MachineLearning(Hsuan-Tien Lin)第八讲

Noise 

这讲主要说资料有noise的状况。

噪声数据是指数据中存在着错误或异常(偏离期望值)的数据

针对银行给顾客信用卡,举几种noise:

(1)noise 在y:

一个顾客本来应该给信用卡,但是没给;

两个相同资料的顾客,一个给了,一个没给;

(2)noise在x:

输入顾客资料时,输错了。

所以,现在的问题就是,在有noise的状况下,VC bound还能不能用?

试想一下,noise到底会影响些什么?

我们前面讲过,f是映射x—>y的关系。如果有noise的话,会怎么样?会影响正确的映射关系。数据是按照f产生的,如(x1,y1),(x2,y2)……没有noise时,按照f,给的x是正确的概率为p(x)=1,产生的y是正确的概率是p(y|x)=1。如果有noise,按照f产生x与y的关系,但是有可能是(x1,y1’)或者是(x1’,y1),当然也有可能是(x1,y1)。总之,给的x是正确的概率会下降p(x)≠1,产生y也正确的概率就会下降,p(y|x)≠1。所以,可以看出,噪声增加了不确定性。有noise让我们感觉像是说“x与y有p的概率是f的关系”。

如:

 

给顾客资料x之后,输出是+1(o)有0.7的概率,输出-1(x)是0.3的概率。虽然最后还是认为,应该输出+1。但是在没有noise之前,给了顾客资料x之后确定是输出+1,不可能输出-1。所以现在输出-1的0.3机会是因为noise干扰了。

但是noise的干扰是全程的,如果整个机器学习的过程都考虑噪声,产生训练数据的时候,按照p(x)产生x,按照p(y|x)产生y,测试的时候也是这样的方式。f受到干扰,g也受到相同的干扰。在Ein里常使用的点,p(x)很大,那么它在Eout里也肯定有很大的p(x)。所以,VC bound还可以继续使用。这个就好像考试完了以后,全部的同学都减10分一样,不影响排名。因为受干扰,g没有那么对了,但是发现f受到了一样的干扰,也没那么对了,但是它们还是接近的。在有noise的情况下,求的也不是f了,而是p(y|x)目标分布。因为数据是按照f+noise产生的,即按照p(y|x)分布产生的。

Error Measure

接下去,我们要说说,求了g之后,如何评估它。

最先想到的就是,用Eout。

 

但是Eout我们不知道,所以可以用下面方式给g打分数:

(1)在还没看过的或者未来的资料上面测试

(2)每一个x都看一下g的表现,最后做个平均

(3)对于分类的话,我们可以看结果对不对

现在就用pointwise error measure即每个点上的错误衡量,最后求平均。用err表示每一个点上的错误。一般,只要抽一些点看看平均错误就可以了。

 

有哪些pointwise 的方式呢?

 


这和Machine Learning(Andrew)Week3(上)成本函数(Cost function) 那里一样。

0/1error是说对不对。squared是预测接近程度。对错误的衡量会影响到目标分布。

看一题例子:

 

如果h说是ý=1,分别求0/1error和squared error

ý=1则y=2 和y=3是错的

0/1error =0.7+0.1 =0.8

squared error = (2-1)^2*0.7+(3-1)^2*0.1=1.1


error是放在求出了g之后的

Choice of Error Measure

有两类错误:

False reject本来你是对的,结果说你错了

False accept本来你是错的,结果说你对了

 

0/1error对两类错误的惩罚是一样的,但是在实际应用中两类错误产生的后果不一样

例1:超市系统:会员到超市购物刷指纹可以打折。但是


所以,成本表可能是:对于超市而言,很明显第一种错误要严重,所有系统出现那类的错误,应该受到更严重的惩罚。

 

例2:CIA(美国中情局)安全系统:员工进行身份识别后可以看到机密资料


所以,成本表可能是:
对于CIA而言,很明显第二种错误更严重

 

所以,对于不同的application,应该用不同的错误衡量的方式。但是,就像超市系统一样,我们对第一种错误要惩罚,惩罚10倍还是20倍或者1000倍,使用者也没法说出标准或者代价。或者他们心里有想法,但是我们也不知道该如何数字化呈现。

所以,我们只能用替代的错误衡量方式:

0/1error( minimum ‘flipping noise’)和squared error( minimum Gaussian noise)

但是更友善的是我们希望设计算法大概可以说清楚使用者心中所想:一个易求解的方式或者在凸最小化的函数(这里是说,如果用户不知道用什么,我们总是要以这种优化为目标,找到错误衡量的替代方式)

 

err是application的目标,但算法实际实现的是

Weighted Classification

还是CIA的例子,第二类错误更严重,我们就让犯第二种错误收到更严重的惩罚。

这时,我们给了一个成本矩阵是:

 

那么对于Ein和Eout来说

在Eout时,y=1时错了,罚1;y=-1时,错了罚1000 

这种就叫做weighted Classification,就是说对于不同的类别错误,惩罚是不一样的。

可是,当这样改了之后,Ein就变了。

对于PLA算法没差,因为只要线性可分,它总是会找到那个g

而对于pocket算法就不一样了。我们之前讲过,pocket算法只在计算前后两条线的犯错的情况后,才决定换不换。对错误的权重不一样,一定影响到了“换不换”这个决定。

所以,要修改pocket算法,使它在weighted Classification时做的和之前一样好。

我们把weighted Classification的Ein称为,之前的称为。我们要修改pocket算法,使这两个Ein有关系。

如:

 

就是说,当我们一拿到训练数据,不管三七二十一,先把y=-1的(x,y)复制1000倍。所以,如果g在一个y=-1的点x2上犯错误了,它说这个点是+1,那么g在复制的其他999个x2上也都会犯错误。所以,在新的资料上,犯错的点也还是收1的惩罚,但是点的累积就相当于收了1000倍的惩罚。那么,在新的资料上做的0/1error,就和前面的惩罚的是一样的了。同时,pocket算法在右边那个问题上,是可以用的,和之前的完全一样。也就相当于这个算法在weighted Classification中可以用。

实际上,上面的复制,也并不是真的做了。因为真的复制还是要花存储空间、计算时间的。用的是“virtual copying”,即:

对那些y=-1的点要比之前高1000倍的概率访问。(就是对y=-1的点要常看有没有错)

换h的时候用

综上,要选择合适的err,且选择err小的h。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值