机器学习:平衡的训练集但高度不平衡的预测集?如何调整?

数据挖掘 机器学习 Python scikit-学习 阶级失衡
2022-02-08 12:38:37

我正在尝试训练一个模型来检测 CEO 演讲数据集中的性别。这是我拥有的数据集:

  1. 最终数据集:分析了 20K CEO 的声音(约 95% 为男性)
  2. 测试数据集(?):从最终数据集中分析出的 1K CEO 声音,由于我故意添加了更多女性(80% 男性),因此不平衡较少
  3. 训练数据集:从有声读物和 TED 演讲中分析的 6K 声音(55% 男性)。

目前,我一直在通过训练和拆分数据集#3(70%、30%)来尝试不同的模型。使用这种方法我得到了很好的准确率(95%)。然而,当我将训练好的模型应用到数据集 #2 时,我得到了 85% 的准确率。

我不知道该怎么办。我是否应该在训练数据集中对女性进行欠采样,以使其分布与最终数据集更相似?

1个回答

过采样或欠采样应该是您的第二选择。目前,处理类不平衡的最佳方法是使用weightssklearn- 和 keras-classifiers 支持的参数(例如,参见DecisionTreeClassifier)。

在一般的旁注中,我建议关注 f1-score、AUC 和混淆矩阵来评估模型的性能,因为在这种情况下准确性可能没有那么丰富。