我的问题是关于交叉验证(CV)之后的数据集,帮助我识别导致最大错误量的类。例如,请考虑以下CV数据:
TP Rate FP Rate Precision Recall F-Measure ROC Area Class
0.194 0.015 0.315 0.194 0.24 0.786 A
0.369 0.024 0.571 0.369 0.449 0.844 B
0.096 0.015 0.167 0.096 0.122 0.688 C
0.478 0.015 0.558 0.478 0.515 0.858 D
0.648 0.01 0.768 0.648 0.703 0.904 E
0.481 0.019 0.82 0.481 0.606 0.928 F
0.358 0.012 0.646 0.358 0.461 0.862 G
1 0.001 0.973 1 0.986 1 H
0.635 0.005 0.825 0.635 0.717 0.959 I
0.176 0.003 0.667 0.176 0.278 0.923 J
0.999 0.346 0.717 0.999 0.835 0.984 K
Weighted Avg. 0.704 0.169 0.692 0.704 0.671 0.931
从示例中可以看出,K类降低了组合精度(请注意FP率,这在我的上下文中很重要)。现在我的问题是,从训练集中完全忽略K级是否明智?或者最好只考虑更准确的类(例如,在这个例子中,除了K之外的任何类)的测试实例分类。
我反对忽略像K这样的整个类的论点是,可能会强制一个实际属于K类的测试实例,以适应其他类,这似乎是不合逻辑的。
任何输入?
由于
答案 0 :(得分:2)
这实际上取决于你所处理的实际问题,例如:这些课程是否反映了一个客观的基本事实(例如,试图将文本分类给编写它的作者)或者这些类是任意的(例如,分类“圆形”vs 。“非圆形”物品)? I型与II型错误的相对权重是多少,召回(覆盖)有多重要?
然而,我可以建议的一种实用方法是分层分类。
具体来说:使用CV混淆矩阵,找到未完全分开的类的对(或组);将它们组合成一个单独的类;然后训练辅助分类器以仅分离属于该组的类。这可能会导致更准确的分类,特别是如果您发现为了对特定组进行分类,另一组特征/分类算法会更好。
例如,假设您的混淆矩阵是:
class/classified as
|A |B |C |D
A|10|2 |1 |3
B|0 |15|0 |1
C|0 |0 |21|16
D|0 |0 |9 |11
很明显,在C和D之间存在大量的混淆。你可以用3个类,A,B和E(C和D组合)重新训练相同的分类器,然后尝试仅用新的C和D分离找到E时的分类器。
答案 1 :(得分:0)
我的第一个想法是尝试找到一种方法来为假阳性分配成本,从而降低K类的风险。