机器学习,删除嘈杂的类(不是个别实例)

时间:2013-06-18 21:22:42

标签: machine-learning

我的问题是关于交叉验证(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类的测试实例,以适应其他类,这似乎是不合逻辑的。

任何输入?

由于

2 个答案:

答案 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类的风险。