我们在训练AI模型后,对于产品经理最重要的一件事是评估模型,今天我们要讲下要如何评估模型。因为不同的模型用到的指标会有差异,比如回归模型中会用到"MAE(平均绝对误差)"、"MSE(均方误差)"等,多分类模型中会用到"Micro-average(微平均)"、"Macro-average(宏平均)"等,介于篇幅,我们主要讲二分类模型中常用的评估指标。
二分类模型
作为机器学习的一种模型,它主要是**通过学习从输入数据到类别标签之间的映射关系,以便在给定新的输入数据时能够准确地预测其所属的类别,**也就是将数据集中的样本分为二个类别的模型。
常见的二分类模型包括:
-
逻辑回归 :逻辑回归**虽然名字中带有"回归",但实际上是一种分类算法,主要用于解决二分类问题。**它通过sigmoid函数将线性回归模型的输出映射到[0,1]之间,表示样本属于某一类别的概率。
-
决策树: 决策树**通过一系列的决策节点对数据进行分类。**每个决策节点基于输入特征的某个属性进行划分,直到达到叶子节点,即最终的类别标签。
-
随机森林: 一种集成学习方法,通过组合多个决策树来进行分类。 它在训练过程中引入了随机性,使得每棵决策树都略有不同,从而减少过拟合的风险。(过拟合就像是一个学生在考试前只记住了特定题目的答案,但是没有理解背后的概念,所以当考试题目稍有不同时就不知道怎么回答了)
-
支持向量机 (SVM):支持向量机通过找到能够最大化类别间间隔的超平面来进行分类。它在高维空间中寻找一个最优的分割超平面,使得不同类别的样本能够被清晰地分开。
以上只是二分类模型的一部分举例,实际还有很多其他的算法,要根据自身的业务场景来选择合适的分类模型。对于二分类模型,我们常用的评价方法主要有:
一、混淆矩阵
它以矩阵形式展示模型预测结果与真实标签之间的对应关系。混淆矩阵的行表示模型预测的类别,列表示实际的类别。通常,混淆矩阵是一个二维矩阵,但在多分类问题中,可能会有更多的行和列。
典型的二分类混淆矩阵如下图
|-----------|--------------------|---------------------|
| | 预测为正例 | 预测为负例 |
| 实际为正例 | True Positive (TP) | False Negative (FN) |
| 实际为负例 | False Positive(FP) | True Negative(TN) |
-
TP(True Positive)表示真正例即实际和预测都是正的;
-
TN(True Negative)表示真负例即实际和预测都是负的;
-
FP(False Positive)表示假正例即预测是正的,实际是负的;
-
FN(False Negative)表示假负例即预测是负的,实际是正的。
Positive表示正例,Negative表示负例,**正例和负例的定义取决于具体的问题和任务。通常情况下,正例表示我们感兴趣的事件或目标类别,而负例表示其他类别或不感兴趣的事件。**比如,在垃圾邮件检测的问题中,垃圾邮件可以被视为正例,非垃圾邮件则是负例;而在反欺诈系统中,欺诈交易可能被视为正例,而合法交易则是负例。
对于一个理想的分类器,自然是希望分类器完美地完成了分类任务,没有任何错误,但实际情况是很难达到完全正确的,所以就需要使用相关的评价指标,主要包括:
-
准确率(Accuracy) :准确率表示模型正确预测的样本数占总样本数的比例, 计算公式是正确分类的样本数与总样本数之比,表示为Accuracy=(TP+TN)/总样本数。
-
查准率(Precision) :也有叫精准率,它衡量的是模型预测为正例的样本中,真正例的比例,即**预测为正例的样本中有多少是真正例,**表示为Precision=TP/(TP+FP)。
-
召回率(Recall) :也有叫查全率,它衡量的是真实的正例中,模型成功预测为正例的比例,即**真实的正例中有多少被模型预测为正例。**其计算公式为: Recall=TP/(TP+FN)
-
特异度(Specificity) :特异度衡量的是真实的负例中,模型成功预测为负例的比例,即真实的负例中有多少被模型预测为负例,其计算公式为:Specificity=TN/(TN+FP)
-
F1分数: 查准率和召回率的调和平均值,综合衡量模型的性能。 一般情况下查准率和召回率呈反比关系,即查准率高、召回率就低;查准率低,召回率就高,那么就需要一个指标来综合评估模型的查准率和召回率达到平衡的程度,可以用F1来衡量,其计算公式为:F1=2×Precision×Recall/(Precision+Recall),F1分数的取值范围从0到1, 高F1分数意味着模型在保持查准率和召回率之间保持良好的平衡,0表示模型性能最差,F1分数越大通常表示模型的性能越好,1表示模型性能最佳。
-
ROC曲线:ROC 曲线可以帮助我们在查准率和召回率之间做出权衡。 它以真正例率(True Positive Rate,TPR)为纵轴,假正例率(False Positive Rate,FPR)为横轴,通过改变分类器的决策阈值,绘制出不同阈值下的TPR和FPR,从而形成一个曲线。曲线越靠近左上角,表示模型的性能越好。
-
AUC(ROC曲线下面积): 它是ROC曲线下的面积,**用于衡量分类模型的整体性能。**AUC 的取值范围在 0 到 1 之间,值越大表示模型性能越好。AUC 值为 0.5 表示模型的预测效果与随机猜测相当(即模型没有区分能力),AUC>0.5表示模型有一定的区分能力,当AUC 值接近于 1 表示模型具有很好的预测能力。
这些指标各有侧重,在模型开发的早期阶段,可以使用混淆矩阵来直观地了解模型的分类表现。准确率是评估模型整体性能的常用指标,它关注整体预测的准确性,但在样本不平衡的情况下,准确率可能会受到影响。查准率和召回率则更加注重不同类别的预测准确性,可以提供更详细的信息,可以根据具体的应用场景、业务需求调整查准率和召回率的权重。在样本不平衡的情况下,ROC 曲线和 AUC 可以更好地评估模型的性能。总的来说,模型评估不仅仅依赖于单一指标,而要根据业务的特点,结合多个指标进行综合评价。
二、KS值
常见于金融风控领域,**它衡量的是风险区分能力。KS值越大,表示模型的风险区分能力越强。**KS 值的计算方法是首先按照模型预测得分对样本进行排序,然后计算累积正例和累积负例的比例,最后计算它们之间的最大差值。在实际操作中,可以根据 KS 值选择最佳的预测阈值,以平衡查准率和召回率。
三、GINI系数
不同于经济学中的基尼系数(衡量收入分配或财富分配不平等程度的统计指标),模型评估的GINI系数是一个用于衡量模型预测结果的不平等程度的指标 ,表示模型随机挑选出正例的概率比随机情况下提高了多少的指标,通常用在信用评分中比较常见**。** GINI系数的取值范围从0到1,其中0表示模型完全没有判别力(即无法区分正负样本),1表示模型具有完美的判别力。
四、IV值
IV值衡量的是变量的预测能力, 它基于变量的分箱计算每个分箱中正例和负例的比例,然后根据这些比例计算每个分箱的信息值,最后将所有分箱的信息值进行加权求和得到 IV 值。一般来说,IV 值越高,表示变量对目标变量的预测能力越强。
在金融风控领域,KS 值、GINI 系数和 IV 值是常用的评估指标。在记忆这些指标数值大小代表的好坏时,我们可以看出,除了ROC曲线是"曲线越靠近左上角,表示模型的性能越好 "之外,其他的指标都是"越大越好"。
此外,除了这些评估指标,我们还需要关注以下一些维度,才能更好地评估模型。
-
鲁棒性(稳定性): 它是指一个模型在面临内部参数变化、外部环境扰动、输入数据异常时,仍能保持稳定性能、正常运作的能力。**鲁棒性较高的模型能够在面对未知的数据时保持稳定的表现,不会因为小的数据变化而导致性能的大幅度下降。**如果模型的其他指标都很好,但是一旦数据发生一定程度的变化,模型的预测能力就大大降低,这种情况则不是我们乐于见到的情况。所以,我们在评估模型好坏或是否可以停止训练时,还需要考虑模型是否能在真实环境中可靠地工作,并且能够有效地应对各种异常情况。
在评估鲁棒性时,通常**我们可以采用 "对抗性测试,即向模型输入有干扰性的样本或者gong击性的数据来测试"、"噪声测试,即向模型输入具有随机噪声的数据,观察模型对噪声的敏感程度",**如果模型能够很好的处理这些异常数据,则说明模型具有较强的鲁棒性。
-
泛化能力: 它是指模型在面对未曾在训练阶段遇到过的全新数据时,能够正确预测其输出或者分类的能力。**泛化能力反映了模型从已知数据中学习到的规律能否有效地应用到未知数据上。**想要泛化能力高,需要在提供训练的数据集时就要开始考量数据的覆盖面,代表性,相关性,如果一开始训练的数据集就有一定的偏重性(又不是与目标变量相关的重要特征),不符合实际的业务场景,那就会导致模型的过拟合程度较高,从而导致泛化能力差。
在评估模型的泛化能力时,通常我们可以采用**"交叉验证,即通过将数据集分成多个子集,在不同子集上训练和测试模型,从而得到更准确的泛化性能评估结果","外部验证,即使用独立于训练数据的外部数据集来验证模型的泛化能力"。** 总的来说,决定模型泛化能力的因素是模型的复杂度、训练数据的质量和数量,以及数据分布与目标变量之间的关系等。在训练和评估模型时,需要综合考虑这些因素,以确保模型能够在未见过的数据上获得良好的表现。
-
可解释性: 它指的是模型能够以易于理解的方式展现其内在逻辑、工作原理和决策依据的能力。可解释性关乎模型的透明度和清晰度,让用户能够明白模型为何做出某种预测或决策,这对于信任模型以及优化模型性能等方面至关重要。
在可解释性评估时,我们可以通过**"特征重要性分析,即模型能够明确指出哪些特征对预测结果的影响大","可视化分析,即用可视化的方法来展示模型决策的过程和结果,使用户能够直观地理解模型的预测思路或原理"。**
在实际的操作中,模型的 **可解释性都相对来说较弱,但是在B端产品中,可解释性又是产品经理挑战较大的一点,**客户购买你的产品,他们无法感知到你的AI能力,你除了需要介绍你的训练数据包含了多大量级的数据,训练数据来源如何符合他们的业务需求之外,他们通常只能得到一个模型输出的结果。至于结果是怎么来的,他们只能通过你介绍的产品是如何预测的原理来感知你的AI产品是否满足他们的需求。
通常,产品经理要在这一部分和算法团队进行深度讨论,将算法中的原理摸熟后,转化为客户能够理解并认可的"模型解释", 对原理深入浅出的解释功夫需要练习,可以跟公司内部的人员,如销售,客户成功部,客服部等先解释看看,根据他们不懂的地方再修改。对模型的解释即要容易被理解,又要让客户觉得模型的工作原理或思路符合他们的场景需求,这样才能让客户信任你的AI产品能力。**模型的解释只有便于非技术人员理解,让公司内部的人员都能准确表达出来,才会在客户询问或质疑模型的可靠性时得到满意的答复,**这一点相对于C端产品来说,会比较影响客户的留存率,需要重视。
总的来说,对于模型的评估,不是单靠一项指标来评估的,要根据当前业务的阶段,模型训练的时长、成本,训练数据的收集、更新等综合来评估,是一个找到当前最适用的评估方法的"平衡"过程。关键还是要看业务的具体场景是什么,用户目前最在意的特征、指标是什么,最具性价比的方案等来综合取舍!
如果你也有模型评估方面更好的思路,欢迎分享交流!