↑↑↑关注后"星标"Datawhale
每日干货 & 每月组队学习,不错过
Datawhale干货
译者:追风者,Datawhale成员
如何在投入生产前评估机器学习模型性能?
想象一下,你训练了一个机器学习模型。也许,可以从中选几个候选方案。
你在测试集上运行它,得到了一些质量评估。模型没有过度拟合,特征也有意义。总的来说,在现有的有限数据下,它们的表现尽善尽美。
现在,是时候来决定它们是否好到可以投入生产使用了。如何在标准性的质量评估外,评估和比较你的模型呢?
在本教程中,我们将通过一个案例,详细介绍如何评估你的模型。
案例:预测员工流失情况
我们将使用一个来自Kaggle竞赛的虚构数据集,目标是识别哪些员工可能很快离开公司。(数据集与代码下载,在后台回复日期"210411 "获取)
这个想法听起来很简单:有了预警,你可能会阻止这个人离开。一个有价值的专家会留在公司——无需寻找一个新的员工,再等他们学会工作技巧。
让我们试着提前预测那些有风险的员工吧!
首先,检查训练数据集。它是为方便我们使用而收集的。一个经验丰富的数据科学家会产生怀疑!我们将其视为理所当然,并跳过构建数据集的棘手部分。
我们有1470名员工的数据。
共35个特征,描述的内容包括:
员工背景(教育、婚姻状况等)。
工作细节(部门、工作级别、是否出差等)。
工作历史(在公司工作年限、最后一次晋升日期等)。
薪酬(工资、股票意见等)。
以及其他一些特征。
还有一个二元标签,可以看到谁离开了公司。这正是我们所需要的!我们将问题定义为概率分类任务。模型应该估计每个员工属于目标 "流失 "类的可能性。
在研究模型时,我们通常会将数据集分成训练和测试数据集。我们使用第一个数据集来训练模型,用其余的数据集来检查它在未知数据上的表现。
我们不详细介绍模型训练过程。这就是数据科学的魔力,我们相信你是知道的!
假设我们进行了很多次实验,尝试了不同的模型,调整了相应的超数,在交叉验证中进行了区间评估。
我们最终得到了两个合理的模型,看起来同样不错。
接下来,检查它们在测试集上的性能。这是我们得到的结果。
随机森林模型的ROC AUC值为0. 795分
梯度提升模型的ROC AUC评分为0.803分。
ROC AUC是在概率分类的情况下优化的标准指标。如果你寻找过Kaggle这个用例的众多解决方案,这应该是大多数人的做法。
我们的两个模型看起来都不错。比随机拆分好得多,所以我们肯定可以从数据中得到一些线索。
ROC AUC分数很接近。鉴于这只是一个单点估计(single-point estimate),我们可以认为性能相似。
那么问题来了,两者之间我们应该选哪个呢?
同样的质量,不同的特点
让我们更详细地分析这些模型。