召回率最大的分类器是具有挑战性的。 +
7 . 7
非均衡分类问题129
另一个用于度量分类中的非均衡性的工具是厌0 0 曲 线 (R O C curve ),尺0 0 代表接收者操作特 征 (receiver operating characteristic) , 它最早在二战期间由电气工程师构建雷达系统时使用过。图7-3给出了一条& 0 0 曲线的例子。
图7 - 3利用10个单层决策树的八()380081马疝病检测系统的尺0 0曲线
在图7-3的尺0 0 曲线中,给出了两条线,一条虚线一条实线。图中的横轴是伪正例的比例(假 阳率=FP/(FP+TN)),而 纵 轴 是 真 正 例 的 比 例 (真阳率= 丁? /0^ + ?岣 )。乂0 0 曲线给出的是当阈值 变化时假阳率和真阳率的变化情况。左下角的点所对应的是将所有样例判为反例的情况,而右上 角的点对应的则是将所有样例判为正例的情况。虚线给出的是随机猜测的结果曲线。
尺0 0 曲线不但可以用于比较分类器,还 可 以 基 于 成 本 效 益 (cost-versus-benefit) 分析来做出 决策。由于在不同的阈值下,不同的分类器的表现情况可能各不相同,因此以某种方式将它们组 合起来或许会更有意义。如果只是简单地观察分类器的错误率,那么我们就难以得到这种更深人 的洞察效果了。
在理想的情况下,最佳的分类器应该尽可能地处手左上角,这就意味着分类器在假阳率很低 的同时获得了很高的真阳率。例如在垃圾邮件的过滤中,这就相当于球滤了所有的垃圾邮件,但 没有将任何合法邮件误识为垃圾邮件而放入垃圾邮件的文件夹中。
对木同的厌0 0 曲线进行比较的一个指标是曲线下的面积(AreaUnsertheCurve, A U C )。A U C 给出的是分类器的平均性能值,当然它并不能完全代替对整条曲线的观察。一个完美分类器的 A U C ^ / 1 . 0 , 而随机猜测的八况则为0.5。
为了画出& 0 0 曲 线 ,分类器必须提供每个样例被判为阳性或者阴性的可信程度值。尽管大多 数分类器都能做到这一点,但是通常情况下,这些值会在最后输出离散分类标签之前被清除。朴
130
第7
章 利 用 八438008
丨元算法提高分类性能7 . 7
非均 衡分 类问题131
上进行循环。这些值在一个> ^ 0 ^ ^
数组或者矩阵中进行排序,?卩&<^则需要一个表来进行迭代循 环 ,因此我们需要调用1 ^ 1 1 # ( >
方 法 。当遍历表时,每得到一个标签为1.0
的 类 ,则要沿着少轴 的方向下降一个步长,即不断降低真阳率。类 似 地 ,对于每个其他类别的标签,则 是 在 _ 方 向 上 倒 退 了 一 个 步 长 (假 阴 率 方 向 )。上述代码只关注1
这 个 类 别 标 签 ,因此就无所谓是采用1/0
标 签还是+1/-1
标 签 。为 了 计 算 人 % ,我们需要对多个小矩形的面积进行累加。这些小矩形的宽度是乂
㊀
) ^ & 因 此 可以先对所有矩形的高度进行累加,最后再乘以乂3
七印得到其总面积。所 有 高 度 的 和 (乂3
咖 )随 着义轴的每次移动而渐次增加。一旦决定了是在^
轴还是^
轴方向上进行移动的,我们就可以在当 前点和新点之间画出一条线段。然 后 ,当前点01^
更新了。最 后 ,我们就会得到一个像样的绘图 并将八1 0
打印到终端输出。了解实际运行效果,我 们 需 要 将 ⑶ 处 如 社 竹
& ! ^ ()
的最后一行代码替换成:r e t u r n w e a k C l a s s A r r , a g g C l a s s E s t
以得到
39901833£8
七的值。然 后 ,在?>^«^
提71;
;符下键人如下命令:>>> r e l o a d {adaboost)
< m o d u l e 1a d a b o o s t 1 f r o m 1a d a b o o s t . p y c 1>
>>> d a t A r r , l a b e l A r r = a d a b o o s t .l o a d D a t a S e t ( 1h o r s e C o l i c T r a i n i n g 2 .t x t ')
>>> c l a s s i f i e r A r r a y , a g g C l a s s E s t =
a d a b o o s t .a d a B o o s t T r a i n D S ( d a t A r r , l a b e l A r r , 10)
>>> a d a b o o s t . p l o t R O C ( a g g C l a s s E s t . T , labelArr ) t h e A r e a U n d e r t h e C u r v e is: 0 . 8 5 a 2 9 6 9 6 3 5 0 6
我们也会了解到和图
7-3—
样的尺0 0
曲线。这 是 在10
个弱分类 器下 ,八加8
0灿算法性能的结 果 。我 们 还 记 得 ,当初我们在40
个弱分类器下得到了最优的分类性能,那么这种情况下的尺0 0
曲线会如何呢?这时的八^
是不是更好呢?7 . 7 . 2 基于代价函数的分类器决策控制
除了调节分类器的阈值之外,我们还有一些其他可以用于处理非均匀分类代价问题的方法,
其中的一种 称为 代价敏感 的学习(
cost-sensitiveleaming
)。考虑表7-4
中的代价矩阵,第一张表给 出的是到 目前为止分类器的代价矩阵(代价不是0
就 是1
)。我们可以基于该代价矩阵计算其总代 价 :TP*0+FN*1+FP*1+TN*0
。接下来我们考虑下面的第二张表,基于该代价矩阵的分类代价的 计 算 公 式 为 :TP*(-5)+FN*l+FP*50+TN*0o
采用第二张表作为代价矩阵时,两种分类错误的代 价是不一样的。类 似 地 ,这两种正确分类所得到的收益也不一样。如果在构建分类器时,知道了 这 些 代 价 值 ,那么就可以选择付出最小代价的分类器。在分 类算法中,我们有很多方法可以用来引人代价信息。在八如