最后更新于
最后更新于
之前设计的所有Cost-sensitive算法, 无论是rescaling还是reweighted类算法, 或是数据预处理, 或是非cost-sensitive分类器内部更新逻辑改造, 或是模型之间相互配合. 但都是对某个或某类特殊的算法模型进行改造, 并没有一个通用的算法.
而任何分类器的训练都需要一个损失函数来推动学习的进行, 如果能够根据cost matrix, 直接对损失函数进行改变, 使之成为代价敏感损失, 就有着很大的通用性.
这里探索代价敏感损失的设计准则.
在分类问题中, 常用损失函数有平方损失, 指数损失, 对数损失, SVM损失等. 针对Cost-sensitive分类问题, 可构造Cost-sensitive损失函数, 通过优化代价敏感风险达到最小化分类代价的目的.
正式表述如下:
已知样本空间, 类别空间. 给定样本, 代价敏感损失函数为, 是度量分类器对的预测损失. 其中是代价矩阵.
Cost-sensitive学习算法优化整个样本空间的代价敏感损失, 得到代价敏感风险, 这是一个期望值. 再求代价敏感决策函数:
这样得到的就是当前样本集合代价矩阵下, 最优的分类器.
在给定具体样本情况下, 代价敏感风险可以转换为优化条件代价敏感风险, 即采用对的类别进行预测产生的风险, 代价敏感决策函数的求解也变为:
依据Bayes最优分类, 提出代价敏感损失函数的一般设计准则.
以二分类问题为例, 代价矩阵(cost matrix)为:
准则 1
准则 2
Bayes分类器的期望分类代价为:
准则2保证代价敏感损失能更有效地近似分类代价, 在最优决策处的代价敏感损失和分类代价有一样的全局性质.
以几种常用的分类损失函数为例, 分析两类代价敏感损失函数的性能.
具体涉及到平方损失, 指数损失, 对数损失, SVM损失四种.
平方损失在神经网络, 回归中得到广泛应用
指数损失成功应用于boosting算法, 如Adaboost算法
对数损失应用于Logistic回归分析
注意其中的一些转换, 如平方损失如何转到分类问题上, 对数损失与逻辑回归的关系等.
引入分类代价的策略
通常有两种:
两种方法的理论和对比在论文中也有详细说明, 这里就不展开了. 总结如下:
分类代价在损失函数外的方法, 各种形式的损失函数均满足准则1, 但除了SVM损失外, 都不满足准则2
分类代价在损失函数内的方法, 各种形式的损失函数均既满足准则1, 又满足准则2
引入分类代价后, 最直观的改变是分类边界的改变. 从之前的0.5, 变化到一个小于0.5的值
注意这里的损失函数, 与算法模型中直接拿来训练, 计算梯度的损失函数不是一个概念.
论文中给出一种boosting方法, 即采用泛函空间的梯度下降法拟合判决函数F. 构造弱分类器集合, 每次迭代从中选择出与前条件风险负梯度拟合最好的弱分类器, 计算其最优步长, 最终判决函数是所有弱分类器的加权组合:
其中是将类样本预测为类样本的代价, 根据Bayes决策理论, 最优决策应最小化期望分类代价, 因此, 将一个样本分为正样本的条件是, 造成的分类成正样本造成的预期cost比分成负样本造成的cost小, 否则为负, 即需要满足:
其中的为后验概率, 即分类器预测的该样本的为正样本的概率.
记分别表示正负类样本的分类代价, 可以将Bayes分类器记为:
也可以记为.
当正负类别分类代价相等时, 即, Bayes分类器为.
代价敏感损失需满足Bayes一致性.
即根据代价敏感损失求得的最优分类器始终可以使用的形式来进行决策, 即当以某个值为界限进行分类. 符合Bayes分类器的形式.
准则1保证优化代价敏感风险得到的分类器能最小化期望分类代价, 实现最优代价敏感分类.
额外补充一句, 从上面可以看出, 这里的是一个判决函数, 大于零代表一类样本, 小于零代表另一类样本. 注意与模型本身输出的区别, 一般分类模型的输出是属于每个类别的概率, 而判决函数则是的函数, 例如最简单的, 即二分类模型以0.5为界限.
对应的条件代价敏感风险在Bayes分类边界处取得最大值.
在分类边界处, 将样本判为正负类别的分类代价相等并达到最大值, 此时最难预测样本类别. 因此根据Bayes最优分类, 给定, 对其预测产生的风险应同样在Bayes分类边界处取得最大值.
这两条准则都是把通过 (条件)代价敏感风险 得到的与使用 最优决策应最小化期望分类代价 贝叶斯分类的形式联系起来.
关于这些损失函数的样子, 以及在上述算法模型中是如何使用对应函数的, 参考.
这几种损失函数均可表示为间隔的函数, 即, 如下图表示:
关于各个损失函数的条件风险和最优决策函数, 与模型输出概率的关系见参考资料中的第一篇论文: . 有图例说明, 直观清晰.
分类代价在损失函数外:
分类代价在损失函数内:
关键在于第二步, 根据当前判决函数所在的泛函空间中的负梯度, 去拟合一个分类器. 具体的拟合方法没有提及, 但猜测由于判决函数是的函数, 可以由计算出.
另外, 上述四种损失函数对应的最优判决函数与之间是可导的, 是不是可以使用链式法则, 直接求出损失对于模型中参数的负梯度, 直接更新模型内部的参数?