机器学习和数据挖掘(4):噪声与误差

噪声与误差

噪音(Noise)

实际应用中的数据基本都是有干扰的,还是用信用卡发放问题举例子:

机器学习和数据挖掘(4):噪声与误差

噪声产生原因:

  1. 标记错误:应该发卡的客户标记成不发卡,或者两个数据相同的客户一个发卡一个不发卡;
  2. 输入错误:用户的数据本身就有错误,例如年收入少写一个0、性别写反了什么的。

目标分布(Target Distribution)

上述两个原因导致数据信息不精准,产生噪声数据。那机器学习算法应该如何处理噪声的数据呢?

以那个从罐子里拿球的实验为例:

机器学习和数据挖掘(4):噪声与误差

之前我们规定凡是 h(x)f(x)的数据(小球),就把他漆成橘色,否则绿色。橘色小球在所有小球中占据的比重就是错误率。

但是现在有干扰了,一条数据可能有h(x)f(x),但我们错误的把它漆成了绿色,或者反之。这影响了对错误率的判断。如果我们知道在单条数据上犯错的概率,对于每个x,其输出y服从如下分布:

XP(X)yP(y|X)

也可以将之合起来表示为:

机器学习和数据挖掘(4):噪声与误差

把 P(y|X) 叫做目标分布(Target Distribution)。在这里,我们可以把学习的目标总结为,在常见的输入(符合P(x))中可以预测出理想的目标(P(y|x))。

通过目标分布可以得到 mini target function f(x)。

举例说明,如果有目标分布:

机器学习和数据挖掘(4):噪声与误差

得到圈圈的概率比较大,所以他的 mini target function f(x)= “圈圈”。

在确定性的情况下,实际上就是犯错的概率为0:

机器学习和数据挖掘(4):噪声与误差

误差衡量

介绍两种错误计算方法:

机器学习和数据挖掘(4):噪声与误差

第一种叫0/1错误,只要【预测≠目标】则认为犯错,通常用于分类;

第二种叫平方错误,它衡量【预测与目标之间的距离】,通常用于回归。

举例说明:

机器学习和数据挖掘(4):噪声与误差

有三种可能的输出:1、2、3,对应的概率分别为 0.2, 0.7, 0.1。

如果用0/1错误衡量,对于任一输入,输出2犯错概率最低,所以 mini target f(x) = 2;

如果用平方错误衡量, 对于任一输入,输出1.9犯错概率最低,所以 mini target f(x) = 1.9。

误差加权

不同的错误类型可能导致不同的惩罚策略,从而形成了一种逆向反馈的机制。

以指纹识别为例:

机器学习和数据挖掘(4):噪声与误差

目标函数识别指纹以区分合法身份与非法身份,这里的错误是0/1错误。一种是false reject叫错误拒绝,即本来合法的识别成了非法;另一种叫false accept叫错误接受,即本来非法的识别成了合法。

想象一个应用场景,一家超市通过指纹鉴别会员,如果是会员就给一定折扣。如果某个会员被错误拒绝了,他很可能因为没有享受到本该拥有的权益而愤怒并拒绝再来这家超市,而超市将失去一个稳定的客源;如果某个普通顾客被错误接受了,超市给了他一些折扣,并无太大损失,这名顾客可能因为占了小便宜而经常光顾这家超市。

所以,false reject与false accept在这里有不同的cost,它们对超市造成的损失不同,所以我们需要给他们加上不同的权重,以便学习算法在选择近似函数时对错误地衡量有所偏重:


机器学习和数据挖掘(4):噪声与误差

同理,CIA的绝密资料库只能向有权限的人敞开,如果通过指纹核实人员身份,false accept的代价就变得非常大,这意味着一个没有权限的人接触到了国家机密!不能忍啊,于是工程师给false accept加了一个巨大的权重,训练时如果出现false accept,这个备选函数基本是要被毙掉了。而如果是false reject,无所谓啦,最多被上司骂一顿而已。

机器学习和数据挖掘(4):噪声与误差

新的算法流程:

机器学习和数据挖掘(4):噪声与误差