机器学习基石 Lecture8: Noise and Error

机器学习基石 Lecture8: Noise and Error

    • Noise and Error
    • Error Measure
    • Algorithmic Error Measure
    • Weighted Classification

Noise and Error

前面讲的机器学习的学习流程如下图所示:
机器学习基石 Lecture8: Noise and Error_第1张图片
但是这个流程里假设的都是有一个真实的函数 f f f来生成样本,但是现实中很有可能样本里带有一些噪音,也就是无法单纯用一个函数 f f f来刻画 y y y x x x的关系。比如在信用卡问题里有以下几种噪音:

  1. y的噪音:对表现良好的用户标记为-1(不发信用卡)
  2. y的噪音:同样的用户不同的标签
  3. x的噪音:不准确的用户信息

在有噪音的情况下,VC bound的不等式是否依然成立呢?我们可以从头开始推导,但是要包含有噪音的情况。建模成每个样本 x x x服从一个概率分布 P ( x ) P(x) P(x),而对于一个给定的 x x x,对应的 y y y也服从一个条件分布 P ( y ∣ x ) P(y|x) P(yx)。这样就包含了噪音的存在。最终的结果是VC bound的结果依然类似的成立:
机器学习基石 Lecture8: Noise and Error_第2张图片
这时候我们机器学习的目标就从学习一个目标函数 f f f变成了学习一个概率分布 P ( y ∣ x ) P(y|x) P(yx)。而对一个给定 x x x有确定性结果 y y y的目标函数 f f f是这样一个概率分布的特殊情况。因此我们得到了一个新的机器学习的流程:
机器学习基石 Lecture8: Noise and Error_第3张图片

Error Measure

当我们得到一个最终的学习结果 g g g的时候需要将其与真实函数 f f f作对比,这样才能够知道最终学习到的效果如何。比如之前在PLA里考虑的在采样集合之外函数 g g g的错误率 E o u t ( g ) = ϵ [ g ( x ) ≠ f ( x ) ] E_{out}(g) = \epsilon [g(x)\neq f(x)] Eout(g)=ϵ[g(x)̸=f(x)]就是一种比较方式。更一般的说,这种方式叫做error measure E(g,f)。一般评估错误有几个自然的想法:

  1. 在数据集外未知的x上测试错误率(out-of-sample)机器学习基石 Lecture8: Noise and Error_第4张图片
  2. 在每个单独的x之上评估再进行平均(pointwise)机器学习基石 Lecture8: Noise and Error_第5张图片
  3. 使用简单的是否预测正确来判断(classification,0/1 error)
    机器学习基石 Lecture8: Noise and Error_第6张图片
    0/1 error一般使用在分类中,还有一种重要的error叫做平方误差,一般用在回归中:
    机器学习基石 Lecture8: Noise and Error_第7张图片
    比如对于一个简单的问题而言,使用不同的error就可以针对不同的“最优”的目标函数 f f f
    机器学习基石 Lecture8: Noise and Error_第8张图片
    这样error measure在机器学习的过程中就能对算法起到一个引导的作用,引导算法得到不同的最终结果:
    机器学习基石 Lecture8: Noise and Error_第9张图片

Algorithmic Error Measure

上面的0/1 error中对于不同类型的判断错误同等对待,但是实际应用中不同的错误类型可能导致的严重后果完全不同。比如如下一个指纹识别的例子。当用在超市会员打折时,false reject可能会导致用户非常生气,而false accept导致的结果也没有很坏。因此可能对不同的错误类型赋予不同的权重:
机器学习基石 Lecture8: Noise and Error_第10张图片
但如果是CIA的指纹识别机,不同的错误导致的后果又是与超市完全相反:
机器学习基石 Lecture8: Noise and Error_第11张图片
因此对于不同的应用场景而言我们会为算法定义一个新的err来表达对不同错误的容忍程度,用 e r r ^ \widehat{err} err 表示(因为和问题里实际的err有可能还是不一样)。当定义 e r r ^ \widehat{err} err 时我们需要考虑两方面,一个是合理性,一个是是否易于实现:
机器学习基石 Lecture8: Noise and Error_第12张图片
于是对于算法而言就有了新的 e r r ^ \widehat{err} err 来指导其选择假设函数,新的机器学习流程如下:
机器学习基石 Lecture8: Noise and Error_第13张图片

Weighted Classification

对于不同的错误分类需要有一个权重来表示它的重要程度,因此新的计算错误率的时候需要将系数也加入其中:
机器学习基石 Lecture8: Noise and Error_第14张图片
于是我们新定义了一个带权重的集合内错误率:
在这里插入图片描述
这对于PLA算法而言没有影响,因为对于线性可分的数据集,最终得到的结果集合内错误率应该是0。但是对于非线性可分的数据集的pocket PLA算法而言就需要进行对应的修改。修改出现在使用刚更新的 w t + 1 w_{t+1} wt+1判断是否需要替代当前最好的系数 w ^ \widehat{w} w 的时候。初始的判断方式是使用集合内的错误率 E i n E_{in} Ein,现在替换为 E i n w E_{in}^{w} Einw即可。

但是对于pocket PLA算法而言,我们能够保证使用 E i n E_{in} Ein能得到较好的结果,但是使用 E i n w E_{in}^{w} Einw呢?

这个时候只需要将对应错误类型的样例进行正比于系数的虚拟赋值,这样就将这个使用了 E i n w E_{in}^{w} Einw的问题转化为了一个使用了 E i n 0 / 1 E_{in}^{0/1} Ein0/1错误的问题:
机器学习基石 Lecture8: Noise and Error_第15张图片
转化之后的问题是当前已经解决的问题,因此对于这个形式的err,pocket PLA算法的结果也能得到保证。转化后的问题为:
机器学习基石 Lecture8: Noise and Error_第16张图片

最后注意一个习题,习题表明了对于正负例比例严重失调的时候,使用带权重的错误能够用来避免算法只返回一个不变的结果:
机器学习基石 Lecture8: Noise and Error_第17张图片

你可能感兴趣的:(机器学习,机器学习基石)