You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在测试集使用sample_weight是否合理?XGBoost不平衡数据集疑问

测试集评估别使用权重,权重只用于训练和超参数调优

核心结论

绝对不要在测试集上用样本权重计算precision、recall这类评估指标。测试集的意义就是模拟真实业务的数据分布,加权后的指标会严重失真,根本反映不了模型的实际表现。

为啥你的结果会虚高

你用测试集权重算precision时,相当于给正样本(少数类)的预测结果加了权重,直接弱化了“把负样本误判成正样本(FP)”对precision的拉低作用——真实场景里,每一个误判的代价都是实打实的,不会因为是负样本就忽略它的影响,所以这个虚高的precision完全没用。

权重该用在啥地方

权重只有两个正确使用场景:

  • 模型训练阶段:用sklearn.utils.class_weight.compute_sample_weight(class_weight='balanced', y=train_y)生成训练集的样本权重,传给XGBoost的sample_weight参数,让模型在训练时更重视少数类,修正不平衡数据集带来的天然偏差。
  • 超参数调优阶段:做交叉验证时,只有训练fold能使用权重,验证fold的评估必须用原始的、不加权的指标(比如precision、recall)——毕竟验证集是用来模拟测试集的,得看模型在真实分布下的表现,才能选出靠谱的参数。

不平衡数据集的评估小技巧

如果想重点关注少数类的表现,不用给测试集加权,换这些指标就行:

  • AUC-PR:比AUC-ROC更能体现少数类的分类效果,对不平衡数据更敏感。
  • F1-score:平衡了precision和recall的综合指标,能直观反映模型对少数类的整体表现。
  • 单独统计少数类的precision和recall:直接看正样本里被正确预测的比例,以及所有正样本被抓到的比例,比加权指标更真实。

内容的提问来源于stack exchange,提问作者SaD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 01:50:15