哪个指标用于评估具有不平衡数据的分类器?
Posted
技术标签:
【中文标题】哪个指标用于评估具有不平衡数据的分类器?【英文标题】:Which metric to use for evaluation of a classifier with imbalanced data? 【发布时间】:2017-02-25 00:09:28 【问题描述】:我正在研究一个类别非常不平衡的分类问题。为了处理这个问题,我使用了带替换的过采样。 (这里建议:http://machinelearningmastery.com/tactics-to-combat-imbalanced-classes-in-your-machine-learning-dataset/ )。
然后我将数据集(过采样的)划分为训练集和测试集,并训练朴素贝叶斯算法。当我想测试时,可以使用准确度测量。据我了解,对于样本量少的类,我基本上添加了样本的副本。所以我的 test_set 包含训练集的精确副本。那么混淆矩阵呢,在过采样数据集上使用混淆矩阵是什么意思?这是一个好习惯吗?
【问题讨论】:
只是一个一般性的评论——你不能在课堂上用单个示例学到任何东西。收集数量级更多的数据。 【参考方案1】:首先回答一个问题:你想达到什么目标?换句话说 - 你的模型应该“在野外”做什么。评估指标必须简单地回答这个问题,仅此而已。其次 - 总是首先拆分数据,然后预处理。当您尝试按照您的建议复制一些数据时,这一点至关重要 - 如果您先复制然后拆分,您可能最终在训练和测试中都有 相同 点,这对您的估计。
尤其是 - 您正在处理不平衡的数据集。主要问题是为什么不平衡?是因为 真实 数据不平衡(例如,您正在处理具有多种罕见正类的二元分类)还是由于某种奇怪的数据收集方式造成的,而这并不是真正的随机样本从底层过程(例如,通常类是完全平衡的,但您的标记数据集不是,因为人们更喜欢在您的问题中标记正样本)。如果真实数据不平衡,那么您无法更改测试集中的平衡,这将完全破坏您试图从实验中得出的任何结论。测试数据必须是真实数据的代表性样本。你不能“为了你自己的需要”改变它,永远不会。如果后者为真 - 那么您可以尝试更改 test 以使其更类似于真实数据(与之前的参数相同)。
您可以做的是修改指标以匹配您关心的内容(是的,过采样测试数据可以达到相同的效果,但了解您在此处所做的事情至关重要 - 您可以修改指标,但不能触摸测试设置,如果你想获得有效的概率推理)。如果您只关心使用随机数据点进行正确分类的概率很高的模型 - 使用准确度。如果你更关心某个类(在你经常做的不平衡场景中)——你总是可以通过将不同的成本附加到 FP 或 FN 并根据混淆矩阵计算你自己的度量来超重 错误成本。请记住,如果您确实使用自定义指标,则必须“告诉”您的模型您这样做。我们那里 90% 的分类器假设您关心准确性,并且他们将其最大化。如果您更改度量标准 - 分类器的“幼稚”应用可能会导致无效的结论(在模型选择方面)。
总结一下:
不要修改测试数据的分布(不要过采样!) 设置与您想学习的内容相匹配的指标 将此信息添加到您的学习方案中(例如 - 为 svm、逻辑回归等附加类权重)【讨论】:
感谢您的回答。总是首先拆分数据,然后进行预处理是什么意思?我在 eidt 中提供了我的数据示例。 想想如果在拆分数据之前过度采样会发生什么(这就是您提到的预处理)。现在是不是有可能在训练和测试集中得到相同的观察结果,就像提到的 lejlot 一样?您认为这可能会引起人们对模型对未见/新数据的泛化能力的担忧吗? 是的,如果我先过采样然后拆分数据进行训练和测试,我最终会在训练和测试集中得到相同的观察结果,这不是我想要的。所以,我应该首先拆分我的数据,然后对训练集进行过采样,然后使用在过采样之前获得的测试集。我的理解正确吗? 我只有一个样本的课程怎么样。当我拆分时,它们要么在测试集的训练集中。如果他们在测试集中没问题,我猜因为它会测试算法在看到看不见的数据时会做什么。 你不能用这些数据做任何事情。从字面上看 - 什么都没有(我在这里省略了更高级的零镜头学习方法等)。抱歉,您必须收集更多数据。以上是关于哪个指标用于评估具有不平衡数据的分类器?的主要内容,如果未能解决你的问题,请参考以下文章
不平衡多分类问题模型评估指标探讨与sklearn.metrics实践