机器学习:软件工程方法与实现
上QQ阅读APP看书,第一时间看更新

4.1.8 模型评估与报告

模型评估与模型训练两个节点交织在一起,模型性能指标告诉我们如何选择模型以及模型是否需要调整。模型评估方法是使用一部分数据训练模型,另一部分数据测试模型,从而得到比较客观的估计过程。

从评估流程上说,评估前需先确定评估的内容、定义或选取评价指标,然后遵循一定的方法和策略,使用具体的技术手段完成评估。模型评估的内容主要分为模型效果评估、模型稳定性评估、特征评估、业务评估。具体的评估指标如下所示。

1)模型效果:模型性能评估有较多的评价指标,如AUC、KS,以及评分可视化等,在1.2.2节有过介绍。另外,预测错误样本的分析,有利于分析错误原因也能对改进模型带来启发。

2)模型稳定性:在各数据集上对模型表现的差异和得分分布差异进行评估。主要查看训练集、验证集、测试集或OOT集上模型效果指标是否出现较大的偏差,初步判断是否有过拟合的风险,比如训练集上效果好,但测试或OOT集效果很差。然而,实践中也可能出现测试集或OOT集的指标比训练时还好,此时建议查看模型是否训练充分或从结构偏差考虑,审视测试集或OOT数据集是否具有足够的代表性,比如样本是否太小,并进行不同样本量的实验。另外,也需查看在上述各数据集上,模型得分分布是否有所偏移。

3)特征评估:例如特征可解释性、特征可用性和特征稳定性评估。

4)业务评估:假设该模型上线后,预估业务指标的变化是否符合预期,提前准备相应策略。

常用的技术手段有:

1)使用标准的评价接口,例如sklearn.metrics包。

2)查看分布时可使用可视化方法,例如Matplotlib工具包。

3)使用统计指标查看稳定性,例如PSI(Population Stability Index,群体稳定性指数)等。

模型性能评价的方法与策略中,最被广泛使用的是K折交叉验证。K不能太小,一般取K=10。通过多次随机运行的方式尽量得到模型性能的无偏估计,而不是随机估计,重复实验是对抗模型方差的良好实践经验。如此,详版的报告将包含指标的方差、估计的置信区间甚至假设检验(如线性模型系数显著性检验),Statsmodels包在评估方面做得很详细。

注意:

1)每进行一次较为正式的评估报告,都需要按照软件工程的思想做版本控制,记录该版本。

2)建议使用相同的算法参数,拟合(Fit)所有数据(训练和测试集)得到终版模型作为正式模型,此时也需要检查相关模型指标。

上述的评估最终以文档等形式对外输出,不同的企业有不同的报告呈现方式,一般是传统的Word或Excel。

模型之间进行比较时,可以考虑如下两个方面。

1)模型性能的比较:在统计学上一般使用T-test检验,其零假设一般为μδ=0(μδ=μA-μB)。

2)模型稳定性的比较:当模型性能无显著差异时,选择更稳定的模型。一般使用F-test检验模型方差的稳定性,其零假设为两者方差没有显著的差异性。

最后,模型评分在不同的场景用法不同,例如在信贷行业,线上决策并不直接使用模型评分,而是将评分离散化成几个区间以方便实施。这个过程涉及阈值或称决策点(Cut-off)的定义,并与业务紧密联系,也需业务部门详细评估,此处不再详述。

模型评估通过后,模型将部署上线投入运营,接受线上的考验,任何的错误将直接造成经济损失。所以,在评估、验证模型的过程中,除了常规的模型性能统计指标外,还要重视可视化方法、多维度分析、线上比对分析、灰度上线、小流量测试等。有能力的团队和企业一定要形成一套规范,作为团队管理者更要足够重视质量,严控最后一关,毕竟错误无处不在,防不胜防,需要通过规范来弥补机器学习在软件工程领域测试环节的缺失。

注意:上线指的是互联网行业将模型作为一个模块或产品对外提供服务,这是企业数据产品关键的一环。后文中上线也是这个意思。当模型是线下的或手动批次运行的时,则稍有差异,但只要保证模型能够正常运行,其结果就是一致的。

第13章将详细讲述模型评估的技术手段。