误分类代价与类不均衡数据

1. 例子

先找一个百度百科的例子并进行适当修改.
例 1 假如某个班级有男生 80 人, 女生 20 人, 共计 100 人. 目标是找出所有女生. 如何构建分类器?

2. 二分类问题与准确率

例 1 可以看作是一个二分类问题, 假设学习器 L 1 L_1 L1 挑选出 30 个人, 其中 18 人是女生, 另外还错误的把 12 个男生也当作女生挑选出来了.
其混淆矩阵为:

Predicted \ actualYesNo
Yes T P = 18 TP = 18 TP=18 F P = 12 FP = 12 FP=12
No F N = 2 FN = 2 FN=2 T N = 68 TN = 68 TN=68

其中:

  • T P TP TP 表示正确挑出来的女生数;
  • F P FP FP 表示错误挑出的男生 (以为是女生) 数;
  • F N FN FN 表示未挑出的女生 (以为是男生) 数;
  • T N TN TN 表示正确挑出的男生数 (在本例中, 没挑选就默认分类为男生).
    准确率定义为:
    A c c = T P + T N T P + F P + F N + T N = 86 100 . (1) Acc = \frac{TP + TN}{TP + FP + FN + TN} = \frac{86}{100}. \tag{1} Acc=TP+FP+FN+TNTP+TN=10086.(1)

3. 误分类代价敏感学习

假设将男生识别为女生的误分类代价是 c F P = 1 c_{FP} = 1 cFP=1 元/人; 将女生识别为男生的误分类代价是 c F N = 3 c_{FN} = 3 cFN=3 元/人. 则学习器 L 1 L_1 L1 的总误分类代价为
C o s t = F P × c F P + F N × c F N = 12 × 1 + 2 × 3 = 18. (2) Cost = FP \times c_{FP} + FN \times c_{FN} = 12 \times 1 + 2 \times 3 = 18. \tag{2} Cost=FP×cFP+FN×cFN=12×1+2×3=18.(2)
显然, 当 c F P = c F N = 1 c_{FP} = c_{FN} = 1 cFP=cFN=1 的时候, C o s t Cost Cost 退化为 A c c Acc Acc.
误分类代价敏感学习有两种方案:

  • 改变学习器的惩罚函数 (损失函数). 在这里 F N FN FN 的惩罚为 F P FP FP 的 3 倍.
  • 改变数据的比例. 在这里将训练集中 (注意: 训练集是其它数据, 本班的是测试数据) 女生复制 2 份 (即 over sampling), 这样, 每将 1 个女生误分类为男生, 相应的误分类代价就等同于将 3 个男生误分类为女生. 用这种方式, 训练的目标还是最大化 A c c Acc Acc, 但本质上已经为最大化 C o s t Cost Cost.

4. 常见误区

分析这两个误区, 才是本贴的重点.

4.1 类别均衡

假设在训练集、测试集中, 男生人数都远远多于女生人数 (本例中为 4 倍), 则我们面临类别不均衡问题. 有人为了强行均衡, 将女生进行 over sampling, 使得女生人数与男生人数大致持平.
这种做法是错误的, 因为目标不明, 既不是 A c c Acc Acc, 又不是 C o s t Cost Cost.
Over sampling 的真正动机在于: 在很多应用中, 少数类别样本 (女生) 更为珍贵, 将它误分类为多数类别样本 (男生) 所导致的代价更高. 我们的例子中, 是 3 倍代价. Over sampling 必须根据该代价来确定复制多少.
作为一种有趣的扩展, 如果本例中改为 c F P = 2 c F N c_{FP} = 2 c_{FN} cFP=2cFN, 则应该将训练集中的男生均复制 1 份, 女生不变.

4.2 将代价当成参数

有些审稿人会问: 你的代价是怎么获得的?
这是一个令人崩溃的问题. 它说明审稿人不懂代价.
代价必须是现实应用提供的输入, 是数据的一部分, 而不是学习器获得的参数 (输出). 如果现实应用不能提供该设置 (准确的数或一个区间), 就不要做代价敏感学习.
对于有误分类代价的应用, 均应使用总误分类代价作为学习器的性能评价指标. 用 A c c Acc Acc, R e c a l l Recall Recall, F 1 F1 F1 都没什么道理.


欢迎拍砖!

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值