在系列文章的上一篇中,我们介绍了人工智能模型的公平性和可解释性。在本篇中我们将对人工智能模型的质量(Quality)保证进行介绍。
人工智能模型的质量用于衡量模型的预测是否有效。针对模型质量的度量已经有很完整的评价体系并已被数据科学家广泛采用。但是这些方法通常只被用于在模型的开发过程中。很多企业往往忽视了模型在被部署到生产系统后对质量的持续监控,从而造成了模型质量在生产系统中发生了漂移(Drift)现象。在本文中我们将介绍人工智能模型质量的度量方法和如何避免模型质量在生产系统上的漂移。
模型的质量用于衡量模型的预测是否有效。模型的质量可以通过多种指标来度量。根据模型所解决的问题不同,常见的指标如下:
最直观的分类模型质量指标是准确性(Accuracy)
模型的准确性 = 预测正确的样本数 / 总的样本数
但是模型的准确性在很多情况下不能全面反映模型预测的有效性。例如,假定一个模型对北京发生暴雨的情况永远预测为负(即不会发生暴雨)。基于北京的天气,这个模型的准确性是很高的。但是这样的模型对暴雨预警是毫无意义的。
很多重要的分类模型的质量指标是基于混淆矩阵(Confusion Matrix)的。对于二分类问题,期望输出只有两种可能,通常可以表示成1和0,真(True)和假(False) 或者正(P-Positive)和负(N-Negative)。当将模型应用于一个数据集时,预测结果和实际结果可以用下面的矩阵表示出来。
第一行表示实际类别(Actual Class)为正的样本;
第二行表示实际类别(Actual Class)为负的样本;
第一列表示预测类别(Predicted Class) 为正的样本;
第二列表示预测类别(Predicted Class) 为负的样本。
矩阵中的元素可以据此分为:
第一行第一列表示真正(TP- True Positive)样本,即预测为正实际也为正的样本;
第一行第二列表示假负(FN - False Negative)样本,即预测为负实际却为正的样本;
第二行第一列表示假正(FP - False Positive)样本,即预测为正实际却为负的样本;
第二行第二列表示真负(TN - True Negative)样本,即预测为负实际也为负的样本。
在衡量模型质量的时候,精度(Precision),召回率(Recall)和假阳率(FPR - False Positive Rate)是常见的度量指标。
精度(Precision)是真正样本(TP)的数量和总的预测为正的样本的数量的比例:
精度(Precision) = 真正样本的数量(Number of TP Samples) / 总的预测为正的样本的数量(Number of TP Samples + Number of FP Samples)
召回率(Recall) 或称真正率/真阳率(TPR – True Positive Rate)是真正样本(TP)的数量和总的实际正样本(第一行的样本)的数量的比例:
召回率(Recall) / 真阳率(TPR) = 真正样本的数量(Number of TP Samples) / 总的实际正样本的数量(Number of TP Samples + Number of FN Samples)
假阳率(False Positive Rate)是假正样本(FP)的数量和总的实际负样本(第二行的样本)的数量的比例:
假阳率(FPR) = 假正样本的数量(Number of FP Samples) / 总的实际负样本的数量(Number of FP Samples + Number of TN Samples)
根据业务场景的不同,数据科学家可能会倾向于选择精度高或者选择召回率的模型。例如,一个反欺诈的模型。假定欺诈交易为正样本,正常(非欺诈)交易为负样本。那么这个模型的精度就是被预测正确的欺诈交易的数量在所有被预测为欺诈交易的交易数量的占比。这个模型的召回率就是被预测正确的欺诈交易的数量在所有实际是欺诈交易的交易数量的占比。一个高精度的反欺诈模型会尽量避免将正常的交易判断为欺诈交易从而影响正常交易客户的体验;而一个高召回率的反欺诈模型会尽量将欺诈交易都找出来以避免欺诈交易造成的损失。
实际上,很多二分类模型是根据结果为正(或者负)的概率来输出预测结果的。例如,默认情况下,很多二分类模型在结果为正的概率高于0.5的情况下输出预测结果为正,反之则输出预测结果为负。那么,提升这个判定阈值0.5为更高的值(例如0.9)就意味着将一笔交易判定为欺诈交易的条件更苛刻,从而很可能会提升模型的精度。反之,降低这个阈值(例如0.1)则意味着更多的交易可能会被判定为欺诈交易,也就可能提升模型的召回率。
一个高质量的模型应该是尽量保证精度和召回率都在一个高水平的情况下进行调整并最终满足业务需要。受试者工作特征(Receiver Operator Characteristic, ROC)曲线和精度-召回率(Precision-Recall)曲线可以帮助数据科学家更好的理解当模型在减少错误将样本划分为负样本的同其正确的找到正样本的能力是如何同时发生变化的。
在绘制受试者工作特征曲线或者精度-召回率曲线时。模型除了输出二分类结果正(True)或者负(False)以外,还需要能够输出结果为正的概率(Probability)。如上文所述,这个概率为一个0到1之间的值。模型通常会将结果为正的概率高于0.5的情况判为正,概率低于0.5判为负。在绘制受试者工作特征曲线或者精度-召回率曲线时,则会要求模型选择更多的阈值来测试。例如,我们会以0.1为阈值(也就是结果为正的概率高于0.1即为正)来计算模型的混淆矩阵,从而得到一组真阳率、假阳率数值对或者精度、召回数值对。之后在对更多的阈值(例如0.3、0.7,0.9)重复该计算。在取得了一定数量的数值对以后,就可以用他们来绘制受试者工作特征曲线或者精度-召回率曲线。
受试者工作特征(Receiver Operator Characteristic, ROC)曲线是以假阳率为横轴、真阳率为纵轴的曲线。将使用不同的阈值得到的多组真阳率、假阳率数值对绘制在这样的坐标系中就可以得到受试者工作特征曲线。
精度-召回率(Precision-Recall)曲线是以召回率为横轴、精度为纵轴的曲线。将使用不同的阈值得到的多组精度、召回数值对绘制在这样的坐标系中就可以得到精度-召回率曲线。
受试者工作特征曲线或者精度-召回率曲线可以将真阳率、假阳率或者精度、召回率之间的关系可视化的展示出来。在将其用于度量模型性能时则通常会使用曲线下(Area Under Curve)面积。该曲线下面积就是一个综合了精度和召回率的模型质量指标。通常,该指标越高(趋近于1)则该模型的预测效果越好。
(图片来源 https://machinelearningmastery.com/roc-curves-and-precision-recall-curves-for-classification-in-python/)
除曲线下(Area Under Curve)面积外,还有其他的模型质量指标也会结合精度和召回率来对模型质量进行评价,例如F1-Measure是精度和召回率的调和平均数,也是经常用到的二分类质量模型评价指标。
与二分类模型不同,多分类模型的输出有多于两种的可能。例如,一个预测贷款申请是否有风险的模型可以是一个二分类模型,因为输出只有“有风险”和“无风险”两种。而一个对动物图片分类的模型则是多分类模型,因为输出可以是猫,狗,猪或者马等等。但是和二分类模型类似,多分类也可以有自己的混淆矩阵。
如上图所示,矩阵中的每一行表示预测类别为对应标签的样本,每一列表示实际类别为对应标签的样本。位于第X行第Y列的即是预测类别第X行对应标签并且实际类别为第Y行对应标签的样本数。例如预测类别为狗(第2行)并且实际类别为猪(第3列)的样本共有6个。
和二分类模型类似,准确性(Accuracy)也可以用于衡量多分类模型的质量。
多分类模型的准确性 = 预测正确的样本数 / 总的样本数
在上面的示例中,在位于对角线上的是预测类别和实际类别相符的样本,也就是预测争取的样本。其他的则是预测错误的样本。因此这个多分类模型的准确性是 (71+12+31) / ( 71+17+9+3+12+6+0+18+32) = 61.6%。
由于多分类模型的输出多于两种,多分类模型的精度,召回率,真阳率和假阳率都是无法定义的。但是当只对某一个分类进行分析时,我们是可以得到类似二分类模型的混淆矩阵进而计算精度,召回率,真阳率和假阳率这些质量指标的。
例如,对上面的动物图片分类模型的例子,针对猫这一分类的混淆矩阵可以用下图表示:
进而,可以计算出如下的针对猫这一分类的精度、召回率、真阳率和假阳率:
针对猫这一分类的精度 = 71 / (71+3) = 95.9%
针对猫这一分类的召回率 = 71 / (71+26) = 73.2%
针对猫这一分类的真阳率同召回率73.2%
针对猫这一分类的假阳率 = 3 / (3+68) = 4.2%
针对猫这一分类的F1-Measure = 2 * (0.959 * 0.732) / (0.959 + 0.732) = 83.0%
针对狗和猪分类的精度、召回率、真阳率和假阳率也可以用同样的方法计算出来。最终我们可以得到这个多分类模型各项的加权质量指标。各个分类的权重即为实际分类为该分类的样本数在总样本中的比例。例如分类猫的权重即为74(实际分类为猫的样本数) / 168(总的样本数)= 44.0%
加权精度 (Weighted Precision) = 对各分类的权重*针对该分类的精度求和
加权召回率 (Weighted Recall) = 对各分类的权重*针对该分类的召回率求和
加权真阳率 (Weighted True Positive Rate) = 对各分类的权重*针对该分类的真阳率求和
加权假阳率 (Weighted False Positive Rate) = 对各分类的权重*针对该分类的假阳率求和
加权F1-Measure (Weighted F1-Measure)= 对各分类的权重*针对该分类的F1-Measure求和
举例来说,上面动物分类模型的加权精度为 0.44(分类猫的权重) * 0.959(分类猫的精度) + 0.28(分类狗的权重) * 0.255(分类狗的精度) + 0.28(分类猪的权重) * 0.681(分类猪的精度) = 0.684
这些加权指标都是常用的多分类模型的质量度量指标。
与分类模型不同,回归模型的输出可以是任意数值。因此回归模型的质量指标通常是通过计算预测数值和实际数值的差距得出的。回归模型的度量指标通常是统计学概念,有一些较为复杂,限于篇幅在此只列出基本定义。
平均绝对误差(Mean Absolute Error)是所有样本的误差的总和/存在误差的样本数
均方误差(Mean Squared Error - MSE) 是所有样本的误差的平方的总和/存在误差的样本数
均方根误差(Root Mean Squared Error – RMSE)是均方误差的平方根
可解释方差份额(Proportion Explained Variance)
请参见 https://www.ibm.com/docs/en/spss-statistics/28.0.0?topic=sales-proportion-variance-explained
判定系数,又称决定系数(R-squared)
请参见 https://en.wikipedia.org/wiki/Coefficient_of_determination
几乎所有的机器学习模型框架都提供了计算模型质量指标的API。数据科学家在训练模型的时候会利用模型的质量指标对模型进行选择,调整和测试。但是,在训练模型时,数据科学家只有历史数据可用。这些数据可能无法很好的代表人工智能模型未来在生产系统上处理的各种数据。再者,即便在模型部署到生产系统的时候这些数据仍然有很好的代表性,但是随着时间的推移,业务变化、政策变化、用户行为变化等等都会造成模型质量的下降。这种现象被称为模型的漂移(Drift)。漂移可能会发生在模型上线之后一段时间,也可能在模型部署在准生产(Pre-Production)环境中时就出现了。
模型的漂移通常有两种情况——概念漂移(Concept Drift)和数据漂移(Data Drift)。
概念漂移是指特征和预测目标之间的关系发生变化造成的漂移。例如,某商家利用机器学习模型预测产品销量以优化库存。但是如新冠疫情等因素使用户行为发生巨大的变化,仍然使用旧的特征训练出来的机器学习模型自然也不能对产品销量做出准确的预测。
数据漂移是模型的输入数据分布发生变化造成的漂移。例如,某银行的大数据平台接入了更多渠道产生的交易数据,从而使很多特征的分布情况发生了巨大的变化。在这种情况下,旧的机器学习模型可能对从新渠道来的交易数据做出不够准确的预测。
事实上,在很多业务场景中,很多模型的漂移是上述两种情况共同作用的结果。
监测模型漂移最直接的方法是在反馈数据集(Feedback Data)上检查模型的质量。如果模型在生产或者准生产系统上的质量下降了,就意味着发生了模型漂移。甚至通过对生产数据的数据分布进行监控及时发现数据漂移,可以在模型质量指标下降前就发现问题。一个好的人工智能平台应该具有覆盖全生命周期的模型质量监控,其中包括反馈数据的收集,基于反馈数据的模型质量监控以及当模型漂移发生时提示数据科学家重新训练模型甚至自动训练新的模型。
参考文献:
Confusion Matrix for Your Multi-Class Machine Learning Model
https://towardsdatascience.com/confusion-matrix-for-your-multi-class-machine-learning-model-ff9aa3bf7826
Concept drift
https://en.wikipedia.org/wiki/Concept_drift
Understanding and Handling Data and Concept Drift
https://www.explorium.ai/blog/understanding-and-handling-data-and-concept-drift/
关于作者:
本文由IBM主机机器学习平台开发团队共同完成
魏可伟(Kewei Wei, [email protected]),IBM主机机器学习平台首席架构师,资深技术主管(Senior Technical Staff Member)
刘旺(Wang Liu, [email protected]),IBM主机机器学习平台资深架构师
万蒙(Meng Wan, [email protected]),IBM主机机器学习平台资深架构师
司美琴(Mei Qin Si, [email protected]),IBM主机机器学习平台资深软件工程师
胡雪瑞(XueRui Hu, [email protected]),IBM主机机器学习平台开发工程师
郭丽娜(Lina Guo, [email protected]),IBM主机机器学习平台开发工程师
矫冬颖(Dongying Jiao, [email protected]),IBM主机机器学习平台开发工程师