非均等代价是什么?不同错误的后果轻重不一样
非均等代价(Unequal Cost)是指在分类问题中,不同类型的错误所造成的损失或后果不相同。在很多实际的应用中,把一类样本错判成另一类,与反过来错判,代价可能相差很大。如果忽视这种差异,只追求总的错误率最低,可能会得到一个在实际中后果很糟的模型。
一些例子
医疗诊断:把一个癌症病人误诊为健康,他可能会错过最佳的治疗时机,后果可能是致命的;而把一个健康的人误诊为可能患癌,代价是需要做一些进一步的检查,带来一些焦虑和费用。显然,前一种错误的代价要大得多。门禁系统:把一个陌生人错误地识别为员工放进门,可能造成安全隐患;而把一个员工误认为陌生人拒之门外,代价只是他需要再刷一次卡或者找人帮忙开门。信用卡反欺诈:漏掉一笔欺诈交易,银行要承受直接的经济损失;而把一笔正常交易误判为可疑交易,代价是给客户带来一些不便。垃圾邮件过滤:把一封重要的工作邮件误判为垃圾邮件,可能导致严重的后果;而让一封垃圾邮件进入收件箱,只是让用户多花几秒钟去删除它。
代价矩阵
为了描述不同错误的代价,可以构建一个代价矩阵:矩阵中的每一个元素,表示把第 i 类样本预测为第 j 类时所造成的代价。对角线上的元素表示预测正确的情况,代价通常为零。对于二分类问题,只需要关心两种错误的代价之比:比如在癌症诊断中,可以设定漏诊的代价是误诊的二十倍。代价的具体数值往往需要根据领域知识和实际的损失来确定。
代价敏感学习
在非均等代价的情况下,学习的目标不再是让错误率最低,而是让总体的代价最小,这叫作代价敏感学习。常用的方法有几种。调整判定阈值:大多数分类模型会给出样本属于某一类的概率,默认的做法是概率大于 0.5 就判为这一类。在非均等代价的情况下,可以根据代价调整这个阈值。比如漏诊的代价远远大于误诊,就应该降低判为“患病”的阈值,宁可多一些误报,也要尽量少漏诊。理论上,最优的阈值可以根据两种错误的代价之比计算出来。这种做法也被称为“再缩放”。调整样本的权重:在训练时,给代价高的那一类样本更大的权重,让模型更加重视它们,在损失函数中,对它们犯错会受到更重的惩罚。重采样:通过过采样或欠采样改变训练数据中各类样本的比例,间接地起到调整代价的作用。此外,也可以直接修改学习算法,让它在构建模型时就考虑代价,比如代价敏感的决策树和支持向量机。
如何评价
在非均等代价的情况下,错误率和准确率不再是合适的评价指标,应该关注总体的代价,或者分别关注各类错误的比例,比如召回率和精确率。ROC 曲线不能直接反映代价的影响,周志华《机器学习》中介绍的“代价曲线”可以在不同的代价比例下,直观地比较不同模型的期望总体代价。非均等代价的问题常常与类别不平衡的问题同时出现:比如欺诈交易本身很少,而漏掉它的代价又很高,两者都需要在建模时认真考虑。