我有大约180 K的观测数据,13个变量(混合的数值和分类特征)。这是二进制分类问题,但类是不平衡的(25:1对于负分类)。我想部署XGBoost (在R中),并达到最好的精确度和召回。为了处理不平衡问题,我尝试了正面类的重采样,以及正类的XGB高权重。然而,尽管召回率很高,但精确度很低(约0.10)。
参数间隔: max_depth = 3-10λ=0- 50γ=0 -10 min_child_weight =1 -10 eta =0.0 1-0.2 0
然后,我尝试了随机森林与上采样数据集,它表现惊人的召回0.88和精度0.73 (在测试数据集)。
有谁能告诉我,如果RF的性能超过了XGB,或者这是我做错了什么的迹象?非常感谢。
发布于 2022-01-07 09:20:30
在随机林中有两件重要的事情:“套袋”和“随机”。广义地说:套袋意味着一次只使用一部分“行”(详见此处),而“随机”意味着只有一小部分“列”(特性,通常是默认的\sqrt{m} )被用来分割。这也有助于让看似“弱”的特征在预测中有发言权,或者避免模型中少数特征的优势(从而避免过度拟合)。
查看您的XGB参数,我注意到您没有对行和列进行子示例,这通过使用参数 colsample_bytree
和subsample
是可能的。您还可以使用scale_pos_weight
来处理不平衡的类。如果数据中有一些占优势的特性或观察,那么设置列和行可能是有用的。我怀疑使用次抽样(这将是“随机梯度增强”),XGB的结果将会改进,并且“更接近”使用随机森林所获得的结果。
此外,确保你有足够的助推轮(有良好的学习进展)。您可以添加一个watchlist
和一个early_stopping_rounds
准则,以停止提高,以防取得更多的进展。在这种情况下,您将nrounds
设置为“高”数字,并停止提高,以防在early_stopping_rounds
步骤完成后不再有学习进展,就像在这个通用代码中那样。
https://datascience.stackexchange.com/questions/106766
复制相似问题