二分类模型:best_score_、accuracy_score_与AUROC指标的差异及选型指南
二分类任务中三个指标的通俗解释与选择指南
一、三个指标的核心差异
- best_score_:这是模型在调参过程中,通过交叉验证在验证集上拿到的最优平均分数,相当于模型在「练习模拟考」里的最好成绩,用来判断哪个参数组合的模型在未见过的验证数据上表现最稳定,避免过度拟合训练集。
- accuracy_score(准确率):模型在测试集上「直接猜对错」的比例,公式是「猜对的样本数÷总样本数」,直观反映模型在全新数据上整体的猜对概率。
- AUROC(ROC曲线下面积):不看模型直接输出的分类结果,只看模型对正、负样本的区分能力。比如模型给每个样本打一个「是正类的概率分」,AUROC越高,说明模型越能把正样本和负样本的分数拉开——哪怕你调整判断阈值(比如原本0.5算正类,改成0.6),模型的区分能力依然靠谱。
二、适用场景
- best_score_:仅用于调参阶段,用来筛选最优的模型参数组合,确保模型在验证环节的稳定性。
- accuracy_score:适合样本分布均衡的场景(比如正负样本各占50%),且你只关心整体的预测正确率,比如普通邮件垃圾分类、普通商品类别识别这类任务。
- AUROC:适合样本不平衡的场景(比如癌症检测,患病样本仅占1%),或者你更关注模型的区分能力而非直接对错比例的场景。比如医疗诊断中,哪怕准确率看起来不高,但AUROC高说明模型能有效区分患者和健康人群,调整阈值后可以大幅减少漏诊。
三、实际选择方法
- 调参阶段:重点看
best_score_,选择分数最高的参数组合,保证模型在验证集上的表现稳定。 - 最终模型评估:
- 若样本均衡,优先参考
accuracy_score,它能直观反映模型的整体预测正确率; - 若样本不平衡或属于医疗、风控这类对区分能力要求高的场景,重点看
AUROC; - 也可以两者结合判断:比如你给出的rf模型,准确率和AUROC都很高,说明它不管是直接猜对错还是区分样本的能力都很强,是表现最优的模型。
- 若样本均衡,优先参考
代码与结果展示
1. 查看各模型的best_score_
for name, model in fitted_models.items(): print(name, model.best_score_)
- l1: 0.8493863035326624
- l2: 0.8493863035326624
- rf: 0.9796513913558318
- gb: 0.9752980461811722
2. 计算测试集上的accuracy_score
for name, model in fitted_models.items(): pred = model.predict(X_test) print(name, accuracy_score(y_test, pred))
- l1: 0.8603411513859275
- l2: 0.8603411513859275
- rf: 0.9790334044065387
- gb: 0.9758351101634684
3. 计算测试集上的AUROC
for name, model in fitted_models.items(): pred = model.predict_proba(X_test) pred = [p[1] for p in pred] print(name, roc_auc_score(y_test, pred))
- l1: 0.9015388373737675
- l2: 0.9015381433597084
- rf: 0.9915194952019338
- gb: 0.988678201643009
内容的提问来源于stack exchange,提问作者Ramsey A.
相关产品推荐
相关产品推荐

