2016-10-15 22 views
1

我正在处理类非常不平衡的分类问题。为了解决这个问题,我使用了替换过度采样。 (如这里所建议的:http://machinelearningmastery.com/tactics-to-combat-imbalanced-classes-in-your-machine-learning-dataset/ )。使用哪个度量标准评估具有不平衡数据的分类器?

然后我将数据集(过采样的一个)分成训练和测试集,并训练朴素贝叶斯算法。当我想测试时,可以使用精度测量。据我了解,对于样本数量较少的班级,我已经添加了样本副本。所以我的test_set包含火车集合的确切副本。混淆矩阵怎么样,在过采样数据集上使用混淆矩阵意味着什么?这是一个好习惯吗?

+0

只是一般性发言类的权重 - 你在班级中不能学**任何**单个例子**。收集**数量级**更多数据。 – lejlot

回答

2

首先回答一个问题:你想达到什么目的?换句话说,你的模型应该在“野外”做什么。评估指标必须简单地回答这个问题,没有别的。其次 - 总是第一个分割数据,然后预处理。当你尝试按照你的建议复制一些数据时,这是至关重要的 - 如果你先复制然后再拆分,你可能会在训练和测试中得到相同的点,这对你的估计来说会很糟糕。

特别是 - 您正在处理不平衡的数据集。主要问题是为什么是不平衡的?是因为real数据不平衡(例如,您正在处理具有各种罕见积极类的二进制分类),或者这是收集数据的一些奇怪方式的后果,这不是真正的基础过程的随机样本(例如通常类是完全平衡的,但是你的标记数据集不是,因为人们喜欢在你的问题中标记正样本)。如果实际数据不平衡,那么您在测试集中不能改变平衡,这将完全破坏您将试图从实验中得出的任何结论。测试数据必须真实数据的代表性样本。从不改变它“为了你自己的需要”。如果后者是真的 - 那么你可以尝试改变测试,使其与真实数据更相似(与之前相同的论点)。

你可以做的是修改度量以匹配你关心的事情(是的,过采样测试数据可以达到同样的效果,但是理解你在这里做什么是至关重要的 - 你可以修改度量,但你不能触摸测试集,如果你想得到一般有效的概率推理)。如果你只关心一个模型,它具有很高的随机数据点分类正确分类的可能性 - 使用的准确性。如果你关心某些课程(在你经常做的不平衡场景中) - 通过附加不同的成本到FP或FN并基于混淆矩阵计算你自己的度量,你总是可以增加错误代价的成本。请记住,如果您使用自定义指标,则必须“告诉”您的模型。我们那里的90%的分类器假定您关心准确性,并且他们最大化它。如果您改变度量标准 - 再次使用分类器的“天真”应用可能会导致无效的结论(就模型选择而言)。

综上所述:

  • 不修改测试数据的分布(没有过采样!)
  • 设定的指标,用于匹配您想了解
  • 这个信息添加到你的学习计划是什么(如 - 附加支持向量机,逻辑回归等)
+0

感谢您的回答。总是先分割数据,然后再进行pr-eprocess,你的意思是什么?我在eidt中提供了一个我的数据的例子。 – user128751

+0

想想如果在分割数据之前过度抽样(这是您提到的预处理)会发生什么情况。现在不可能在训练和测试集中得到相同的观察结果,如提到的lejlot?您是否认为这可能会引起人们担心该模型将推广到看不见的/新数据的程度如何? –

+0

是的,如果我第一次过采样,然后分割数据来训练和测试,我最终会在训练和测试集中得到相同的结果,这不是我想要的结果。所以,我应该首先分割我的数据,然后过度采样火车集,然后使用过采样之前获得的测试集。我的理解是否正确? – user128751