我应该平衡测试集来评估模型吗?
Should I balance the test set for evaluating a model?
我必须评估逻辑回归模型。该模型旨在检测欺诈,因此在现实生活中该算法将面临高度不平衡的数据。
有人说我只需要平衡训练集,而测试集应该与现实生活中的数据保持相似。另一方面,很多人说模型必须在平衡样本上训练和测试。
我尝试针对两个(平衡、不平衡)集合测试我的模型并获得相同的 ROC AUC (0.73),但不同的精确召回曲线 AUC - 0.4(不平衡)和 0.74(平衡)。
我应该选择什么?
我应该使用什么指标来评估我的模型性能?
由于您正在处理一个概念不平衡的问题(非欺诈多于欺诈),我建议您将 F 评分与真实世界的“匹配”不平衡集一起使用。这将允许您比较模型,而不必确保您的测试集是平衡的,因为这可能意味着您在测试集中过度代表了欺诈案例,而没有代表非欺诈案例。
这里有一些参考资料以及如何在 sklearn 上实现:
https://en.wikipedia.org/wiki/F-score
https://deepai.org/machine-learning-glossary-and-terms/f-score
https://towardsdatascience.com/accuracy-precision-recall-or-f1-331fb37c5cb9
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html
我必须评估逻辑回归模型。该模型旨在检测欺诈,因此在现实生活中该算法将面临高度不平衡的数据。
有人说我只需要平衡训练集,而测试集应该与现实生活中的数据保持相似。另一方面,很多人说模型必须在平衡样本上训练和测试。
我尝试针对两个(平衡、不平衡)集合测试我的模型并获得相同的 ROC AUC (0.73),但不同的精确召回曲线 AUC - 0.4(不平衡)和 0.74(平衡)。
我应该选择什么?
我应该使用什么指标来评估我的模型性能?
由于您正在处理一个概念不平衡的问题(非欺诈多于欺诈),我建议您将 F 评分与真实世界的“匹配”不平衡集一起使用。这将允许您比较模型,而不必确保您的测试集是平衡的,因为这可能意味着您在测试集中过度代表了欺诈案例,而没有代表非欺诈案例。
这里有一些参考资料以及如何在 sklearn 上实现:
https://en.wikipedia.org/wiki/F-score
https://deepai.org/machine-learning-glossary-and-terms/f-score
https://towardsdatascience.com/accuracy-precision-recall-or-f1-331fb37c5cb9
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html