Cost-sensitive分类算法

Cost-sensitive

Cost-sensitive分类面向的是类型比例不平衡的数据集上的分类问题, 目的是使分类器的分类结果对应的cost值最低. Cost-sensitive方法通过引入现实世界中实际存在的不同误判结果间代价的不平衡性, 使得原有的机器学习算法能够在一定程度上适应现实世界应用的需要.

Cost-sensitive分类具体的技术手段分为两大类:

  • rescaling

  • reweighted

Cost-matrix

在传统的分类问题中, FP和FN的代价是等同的, 这与现实生活中的很多场景是不相符合的. 例如在银行贷款是否通过的分类问题中, FN的代价是远远高于FP的. 因此, 区别误判代价之间不平衡问题的最简单的手段就是引入误判代价权重, 从而引出cost matrix. 以二分类问题为例, cost matrix为:

-

actual positive

actual negative

predict positive

c00c_{00}

c01c_{01}

predict negative

c10c_{10}

c11c_{11}

还是以银行贷款审批为例, 此时的实际损失就为FPc10+FNc01|\mathrm{FP}| * \mathrm{c}_{10}+|\mathrm{FN}| * \mathrm{c}_{01}. 我们可以令c10=1c_{10}=1, c01=10c_{01}=10, 从而体现出误判的不平衡, 更贴合实际.

因此cost-sensitive分类算法需要考虑两个问题:

  • 分类算法不仅仅能够较为准确地对数据集进行分类

  • 尽可能的控制由分类错误造成的损失

通常情况下, 对于一个NN分类问题, cost matrix是一个N×NN\times{N}的矩阵, 将这个矩阵记为CC, 其中的条目c(i,j)c(i,j)表示分类算法将实际属于jj类的样本分类为ii类所造成的的cost.

显示中cost很难准确获取, cost matrix往往是由数据集提供者通过自己 的经验给出c(i,j)c(i,j)的值.

Cost-sensitive分类的目标

利用cost matrix, 可以将cost-sensitive分类问题转换为一个优化问题. 对于分类算法AA, 为样本实例x\mathbf{x}寻找一个类别ii, 使得下式达到最小值:

L(x,i)=jP(jx)c(i,j)L(\mathbf{x},i)=\sum\limits_{j}P(j|\mathbf{x})c(i,j)

P(jx)P(j|\mathbf{x})即是在算法AA中, 样本x\mathbf{x}属于类别ii的概率. L(x,i)L(\mathbf{x},i)是算法给出的所有可能类别, 以预测概率值为权重的cost值之和.

在没有引入cost时, 我们关注如何最大化真实类别对应的P(jx)P(j|\mathbf{x})概率, 而现在关注最小化总的cost值. 因此Cost-sensitive分类在追寻最优cost的前提下, 可能会放弃可能性最大的分类结果.

简单起见, 考虑二分类的情况. Cost-sensitive分类算法, 将一个样本分为正样本的条件是, 造成的分类成正样本造成的预期cost比分成负样本造成的cost小, 公式表示如下:

P(j=0x)c10+P(j=1x)c11P(j=0x)c00+P(j=1x)c01P(j=0|\mathbf{x})c_{10}+P(j=1|\mathbf{x})c_{11} \le P(j=0|\mathbf{x})c_{00}+P(j=1|\mathbf{x})c_{01}

再令p=P(j=1x)p=P(j=1|\mathbf{x}), 上式可写成:

(1p)c10+pc11(1p)c00+pc01(1-p)c_{10}+pc_{11} \le (1-p)c_{00}+pc_{01}

上式即算法的决策依据, 产生了决策平面.

Cost-sensitive分类算法的现有方法

Cost-sensitive分类算法又分为二分类多分类两大类. 而由于常用的各种分类器都是非Cost-sensitive分类算法, 如何对现有的分类器进行改造, 使其成为Cost-sensitive分类算法?

Cost-sensitive分类算法的目标是为了获得尽可能小的L(x,i)L(\mathbf{x},i)值. 因此为了达到上面的目的, 需要调整原有分类算法的PP值, 也就是调整模型本身. 从而通过增加cost的方法, 直接影响到模型的训练, 使得模型本身发生了变化(如内部的参数).

目前有两种主要的方法:

  • 通过对训练数据集的预处理以提高分类算法对于某些分类结果的敏感性, 这种方法称为rescaling

    • 多是一些Cost-based采样方法

  • 通过以cost为基准, 修改不同分类在算法中的class membership probability, 这种方法称为reweighted

参考资料

最后更新于