随机森林建模?

数据挖掘 机器学习 Python r 数据挖掘 随机森林
2022-02-22 06:39:33

我使用随机森林来训练我的数据(我的数据在目标类中存在不平衡,即稀有 1 和丰富的 0)。我面临 3 个关于估计器稳定性及其预测能力的问题。我认为这些问题在许多机器学习算法中可能很常见。

  1. ROC_AUC_Score当我重新采样训练集(其余的是测试集)时,我发现变化很大。在更改训练集时,它可以在0.850.45
  2. 参数调整也会导致估计器的移动,ROC_AUC_Score但效果比上面的第一种情况要弱。
  3. 在运行模型拟合的一些迭代时,结果也各不相同,但效果最弱。

对于2、3,我认为通过记录每次迭代和参数调优,可以得到最好的参数设置和拟合结果。(也许可以更有效地做到这一点,请指教)

还请指教如何处理第一个问题以使配件令人信服和可靠?交叉验证?

非常感谢

3个回答

您绝对应该使用嵌套交叉验证来进行模型选择和性能估计。我还发现,当我有一个高度不平衡的数据集;有关于这个主题的研究表明,PR 曲线的 AUC 比 ROC 曲线的信息量更大。您可以average_precision_score()在 scikit-learn 中使用 PR AUC 分数。沿着重新采样数据的思路,你可以尝试像 EasyEnsenble 和 BalanceCascade 这样的方法;搜索标题为“Exploratory Undersampling for Class-Imbalance Learning”和“Learning from Imbalanced Data”的论文以获取更多信息。

我认为,这是一个经典的类不平衡问题。如果可能,收集更多数据量稀疏的类的数据,或者如果数据量足够,则省略一些数据量大的类的数据。

我不知道不平衡的比例是多少,用哪个包的RF或者你自己写的那个你体验过,但我觉得你可以通过两种方式再试一下,解决稳定性的问题:

  1. 很明显你的不平衡问题很严重,你应该尽量保持平衡。
  2. 如果你还没有在 RF 中对不同树的特征进行采样,即不同树的不同特征,你可以试试。

希望这对你有帮助,祝你好运!