常用评估指标
00 min
2024-9-28
2024-9-28
type
status
date
slug
summary
tags
category
icon
password

常用评估指标

一、分类算法评估指标

多种指标知乎详细解读
二分类指标解读
二分类问题常见的评价指标
准确率 是我们常见的评价指标之一,一般定义是,分类正确的样本数占总样本的比例数。 但是 准确率在数据不均衡的数据集上会缺少一定的说服力,比如一个数据集,有990正样本,10个负样本,现在模型把样本全部都预测成正样本,那么我们说模型的 准确率是99%,这个从计算上看是没问题,但是当样本不均衡时,光使用 准确率 来评价一个模型的好坏是不够的。 二 分类问题 的预测结果可以根据情况分成以下四类: 真正例 (True Positive):预测值为1,真实值为1 假正例(False Positive):预测值为1,真实值为0 真反例(True Negative):预测值为0,真实值为0 假反例(False Negative):预测值为0,真实值为1 构造成结果的 混淆矩阵 精准率又称查准率: 召回率又称查全率: 精准率可以解释为,预测为正例的样本中,有多少是真的正例 召回率可以解释为,真实的正例的样本中,有多少被预测出来 F1:精准率和召回率的调和平均 三、AUC AUC是另一种评价二分类算法的指标,被定义为 ROC 曲线下的面积。那什么是ROC曲线呢? ROC曲线的坐标,纵坐标为 真正例 率(True Positive Rate,TPR),横坐标为假正例率(False Positive Rate,FPR) 具体定义如下: 根据模型在ROC坐标上的位置,可以判断模型的性能 模型1 模型2 横纵坐标 ROC坐标上的四个点 (0,1):所有样本分类正确 (1,0):所有样本分类错误 (0,0):所以样本都分类为负 (1:1):所以样本都分类为正 由上图可以看出模型2要好于模型1 怎么画出AUC曲线呢,首先按照预测值进行排序 按照预测值大小,依次作为阈值,求解FP rate和TP rate 按照上图的信息可以画出曲线 曲线下的面积被称为AOC AOC的意义:衡量正样本排在负样本前面的能力,这里的能力更具体一点就是出现的概率。与域值的选取没有关系。 对于多分类的相关问题,常用的评价标准是 混淆矩阵 如果分成n个类别的话, 混淆矩阵的形式是一个 上图中每一列代表预测的类别,每一行代表真实的类别的归属,第二行cat的总数量为8,表示类cat总共有8个样本,其中3个分类正确,3个被错误的分到了dog,2个被错误的分到了robbit。 如果计算cat的 准确率 计算公式如下 参考文献: 1、 李航 《统计学习方法》清华大学出版社 3、Confusion matrix 4、sklearn.metrics.confusion_matrix - scikit-learn 0.20.2 documentation https://zhuanlan.zhihu.com/p/55324860
二分类问题常见的评价指标

1、混淆矩阵

混淆矩阵(Confusion Matrix),可以使人们更好地了解分类中的错误。如果矩阵中的非对角元素均为0,就会得到一个完美的分类器。下图的混淆矩阵只针对二分类问题得到的。
notion image
真正例(True Positive,TP):一个正例被正确预测为正例
真反例(True Negative,TN):一个反例被正确预测为反例
假正例(False Positive,FP):一个反例被错误预测为正例
假反例(False Negative,FN):一个正例被错误预测为反例

2、准确率

准确率是所有样本中预测正确的样本占比,其公式如下:
notion image
准确率有一个明显的弊端问题,就是在数据的类别不均衡,特别是有极偏的数据存在的情况下,准确率这个评价指标是不能客观评价算法的优劣的。

3、错误率

错误率指的是所有测试样例中错分的样例比例,其公式如下
notion image

4、精确率和召回率

精准率(Precision)又称查准率,它是针对预测结果而言的,它的含义是在所有被预测为正的样本中实际为正的样本的概率,即在预测为正样本的结果中,有多少把握可以预测正确,其公式如下:
notion image
精准率和准确率是完全不同的两个概念。精准率代表对正样本结果中的预测准确程度,而准确率则代表整体的预测准确程度,既包括正样本,也包括负样本。
召回率(Recall)又称查全率,它是针对原样本而言的,它的含义是在实际为正的样本中被预测为正样本的概率,其公式如下:
notion image

5、F1-Score

通常使用Precision和Recall这两个指标,来评价二分类模型的效果。但是,Precision和Recall指标有时是此消彼长的,即精准率高了,召回率就下降。为了兼顾Precision和Recall,最常见的方法就是F-Measure,又称F-Score。F-Measure是P和R的加权调和平均,计算公式如下:
notion image
notion image
时,也就是常说的F1-score,是P和R的调和平均,F1-Score的取值范围从0到1的,1代表模型的输出最好,0代表模型的输出结果最差 。当F1较高时,模型的性能越好。
notion image
其中,P代表Precision,R代表Recall。
 

6、ROC曲线

ROC曲线全称为受试者工作特征曲线(Receiver Operating Characteristic Curve)。ROC是一张图上的一条线(如下图所示),越靠近左上角的ROC曲线,模型的准确度越高,模型越理想;
notion image
图ROC曲线中,横轴是假阳率(False positive rate ,简称FPR),定义为 在所有真实的负样本中,被模型错误的判断为正例的比例 ,计算公式如下:
notion image
纵轴是真阳率(True Positive Rate,简称TPR),定义为 在所有真实的正样本中,被模型正确的判断为正例的比例,其实就是召回率,计算公式如下:
notion image
上图ROC曲线中,左下角的点所对应的是将所有样本判断为反例的情况,而右上角的点对应的是将所有样例判断为正例的情况;
FPR表示模型对于负样本误判的程度,而TPR表示模型对正样本召回的程度。我们所希望的当然是:负样本误判的越少越好,正样本召回的越多越好。所以总结一下就是TPR越高,同时FPR越低(即ROC曲线越陡),那么模型的性能就越好。
进行模型的性能比较时,若一个模型A的ROC曲线被另一个模型B的ROC曲线完全包住,则称B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。
ROC曲线对整体样本是否均衡并不敏感。因为ROC曲线只与TPR和FPR有关系,而这两个指标是针对单一类别的预测结果而言的 。举个例子:假设总样本中,90%是正样本,10%是负样本。在这种情况下如果使用准确率进行评价是不科学的,但是用TPR和FPR却是可以的,因为TPR只关注90%正样本中有多少是被预测正确的,而与那10%负样本毫无关系,同理,FPR只关注10%负样本中有多少是被预测错误的,也与那90%正样本毫无关系。这样就避免了样本不平衡的问题。
阈值问题
ROC曲线也是通过遍历所有阈值来绘制整条曲线的。如果我们不断的遍历所有阈值,预测的正样本和负样本是在不断变化的,相应的在ROC曲线图中也会沿着曲线滑动。
无视样本不平衡
ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。
 

7、AUC

AUC( Area Under Curve )是曲线下面积,AUC给出的是分类器的平均性能值。 每一条ROC曲线对应一个AUC值。通常,AUC的取值在0.5与1之间。 模型的AUC面积值越大,模型的准确度越高,模型越理想。其可以理解为模型将正样本排在负样本前面的概率。
AUC曲线计算方法及代码实现
AUC计算 1. 根据定义Aera Under Curve,计算面积。样本有限,所以得到的AUC曲线一般是个阶梯状,所以计算这些阶梯的面积即可。先按score排个序,然后从头遍历一遍,把每个score作为划分阈值,可以得到对应的TPR和FPR,计算出底下的面积。更直观的计算方法,参考《百面机器学习》: 这种直接计算面积的方法比较麻烦,一般使用下面的等价方法进行计算。 2. AUC等价于:测试任意给一个正类样本和一个负类样本,正类样本的score有多大的概率大于负类样本的score。所以可以计算这个概率。具体来说就是统计一下所有的 M×N(M为正类样本的数目,N为负类样本的数目)个正负样本对中,有多少个组中的正样本的score大于负样本的score。当二元组中正负样本的 score相等的时候,按照0.5计算。然后除以MN。实现这个方法的复杂度为O(n^2)。n为样本数(即n=M+N) 3. 第三种方法实际上和上述第二种方法是一样的,但是复杂度减小了。它也是首先对score从大到小排序,然后令最大score对应的sample 的rank为n,第二大score对应sample的rank为n-1,以此类推。然后把所有的正类样本的rank相加,再减去M-1种两个正样本组合的情况。得到的就是所有的样本中有多少对正类样本的score大于负类样本的score。然后再除以M×N。即 公式解释: 1、为了求的组合中正样本的score值大于负样本,如果所有的正样本score值都是大于负样本的,那么第一位与任意的进行组合score值都要大,我们取它的rank值为n,但是n-1中有M-1是正样例和正样例的组合这种是不在统计范围内的(为计算方便我们取n组,相应的不符合的有M个),所以要减掉,那么同理排在第二位的n-1,会有M-1个是不满足的,依次类推,故得到后面的公式M*(M+1)/2,我们可以验证在正样本score都大于负样本的假设下,AUC的值为1 2、根据上面的解释,不难得出,rank的值代表的是能够产生score前大后小的这样的组合数,但是这里包含了(正,正)的情况,所以要减去这样的组(即排在它后面正例的个数),即可得到上面的公式 另外,特别需要注意的是,在存在score相等的情况时,对相等score的样本,需要 赋予相同的rank(无论这个相等的score是出现在同类样本还是不同类的样本之间,都需要这样处理)。具体操作就是再把所有这些score相等的样本 的rank取平均。然后再使用上述公式。(以下代码中未对rank求平均,但结果与sklearn中的auc计算基本一致) 详细解释如下:(暂时不考虑样本score 相等的情况) 随机抽取一个样本, 对应每一潜在可能值X都对应有一个判定位正样本的概率P。 对一批已知正负的样本集合进行分类, 按score从高到矮排个降序, 对于正样本中概率最高的,排序为rank_1 = n, 比它概率小的有M-1个正样本(M为正样本个数), (rank_1 - M) 个负样本 ------ 即 当前正样本score 大于负样本 score 的正负样本对个数为 (rank_1 - M) 正样本概率第二高的, 排序为rank_2, 比它概率小的有M-2个正样本,(rank_2 - M + 1) 个 负样本。 以此类推 正样本中概率最小的, 排序为rank_M,比它概率小的有0个正样本,rank_M - 1 个负样本。 总共有MxN个正负样本对(N为负样本个数)。把所有比较中 正样本概率大于负样本概率 的例子都算上, 得到公式(rank_1 - M + rank_2 - M + 1 ....
 
auc原理与实现
AUC(Area under curve)是机器学习常用的二分类评测手段。 AUC:一个正例,一个负例,预测为正的概率值比预测为负的概率值还要大的可能性。 所以根据定义:我们最直观的有两种计算AUC的方法 1:绘制ROC曲线,ROC曲线下面的面积就是AUC的 2:假设总共有(m+n)个样本,其中正样本m个,负样本n个,总共有mn个样本对,计数,正样本预测为正样本的概率值大于负样本预测为正样本的概率值记为1,累加计数,然后除以(mn)就是AUC的值 ROC曲线指受试者工作特征曲线 / 接收器操作特性曲线(receiver operating characteristic curve), 是反映敏感性和特异性连续变量的综合指标,是用构图法揭示敏感性和特异性的相互关系,它通过将连续变量设定出多个不同的临界值,从而计算出一系列敏感性和特异性,再以敏感性为纵坐标、(1-特异性)为横坐标绘制成曲线,曲线下面积越大,诊断准确性越高。 横轴:负正类率(false postive rate FPR)特异度,划分实例中所有负例占所有负例的比例; 纵轴:真正类率(true postive rate TPR)灵敏度,Sensitivity(正类覆盖率) True negative(TN),称为真负率,表明实际是负样本预测成负样本的样本数 False positive(FP),称为假正率,表明实际是负样本预测成正样本的样本数 False negative(FN),称为假负率,表明实际是正样本预测成负样本的样本数 True positive(TP),称为真正率,表明实际是正样本预测成正样本的样本数 auc直接含义是ROC曲线下的面积,如下图: AUC直观地反映了ROC曲线表达的分类能力。 AUC = 1,代表完美分类器 0.5 去掉(正,正)样本对数--> 求取比例 按概率从高到矮排个降序, 对于正样本中score最高的,排序为rank_n, 比它概率小的有M-1个正样本(M为正样本个数), (rank_n- M) 个负样本。 正样本概率第二高的, 排序为rank_n-1, 比它概率小的有M-2个正样本,(rank_n-1 - M + 1) 个 负样本。 以此类推正样本中概率最小的, 排序为rank_1,比它概率小的有0个正样本,rank_1 - 1 个负样本。 总共有MxN个正负样本对(N为负样本个数)。把所有比较中 正样本概率大于负样本概率 的例子都算上, 得到公式 (rank_n - M + rank_n-1 - M + 1 ....
auc原理与实现
 

8、GAUC

AUC表示正样本得分比负样本得分高的概率。在CTR实际应用场景中,CTR预测常被用于对每个用户候选广告的排序。但是不同用户之间存在差异:有些用户天生就是点击率高。以往的评价指标对样本不区分用户地进行AUC的计算。DIN论文采用的GAUC实现了用户级别的AUC计算,在单个用户AUC的基础上,按照点击次数或展示次数进行加权平均,消除了用户偏差对模型的影响,更准确的描述了模型的表现效果:
notion image
其中权重w既可以是展示次数(impression)也可以是点击次数(clicks)。n是用户数量。
auc反映的是整体样本间的一个排序能力,而在计算广告领域,我们实际要衡量的是不同用户对不同广告之间的排序能力, 实际更关注的是同一个用户对不同广告间的排序能力,为此,参考了阿里妈妈团队之前有使用的group auc的评价指标。 group auc实际是计算每个用户的auc,然后加权平均,最后得到group auc,这样就能减少不同用户间的排序结果不太好比较这一影响。
实际处理时权重一般可以设为每个用户view的次数,或click的次数,而且一般计算时,会过滤掉单个用户全是正样本或负样本的情况。
但是实际上一般还是主要看auc这个指标,但是当发现auc不能很好的反映模型的好坏(比如auc增加了很多,实际效果却变差了),这时候可以看一下gauc这个指标。
代码实现:

二、回归算法

 
 

三、相关问题

3.1 为什么分类问题不采用MSE作为损失函数

AI 面试高频问题: 为什么二分类不用 MSE 损失函数?-技术圈
对于二分类问题,损失函数不采用均方误差(Mean Squared Error,MSE)至少可以从两个角度来分析。 首先,使用 MSE 意味着假设数据采样误差是遵循正态分布的。用贝叶斯门派的观点来看,意味着作了高斯先验的假设。实际上,可以分为两类(即二分类)的数据集是遵循伯努利分布。 如果假设误差遵循正态分布,并使用最大似然估计 (Maximum Likelihood Estimation,MLE) ,我们将得出 MSE 正是用于优化模型的损失函数。 训练数据 包括特征 和实际观测值 。简单来说,每当我们采样数据时,观测值有时会与真实值相匹配,有时观测值会因某些误差而失真。我们假设所有观测到的数据都带有一定的误差(即 ),并且误差遵循均值为 ,方差未知的正态分布。 因此,每个观测值 可以由如下正态分布定义, 假设数据是独立同分布的,因此使用最大似然估计时,只要最大化所有观测值误差正态分布的乘积。即似然函数为, 为了简化公式,可以采用似然函数的自然对数, 上式倒数第二行的第一项是独立于 ,因此可以直接省略掉。而最大化一个函数等价于最小化该函数的负值,可得, 由于方差 也不依赖于 ,因此可以忽略它,甚至也可以忽略,但是也可以保留它,因为它可以消除掉求导后多出来的 2。 最后,我们可以通过 ( 是样本数量)缩放负对数似然函数,以获得所谓的均方误差损失函数, 以上是通过 MLE 得到 MSE 的推导过程。这是想说明,使用 MSE 损失函数的背景假设是数据误差遵循高斯分布。实际上,二分类问题并不符合这个假设。 当将一个无界的值传递给 MSE 函数时,在目标值 处有一个明确最小值的情况下,会形成一条漂亮的 U 形(凸)曲线。另一方面,当将来自 Sigmoid 等函数的有界值传递给 MSE 函数时,可能会导致结果并不是凸的。 看上面右边的图,函数的一侧是凹的,而另一侧是凸的,没有明确的最小值点。因此,如果在初始化二分类神经网络权重时,权值万一设置得很大,使其落在 MSE 凹的那一侧(如下图红色标记的点),由于梯度几乎为 ,损失函数梯度下降法将不起作用,因此网络权重可能得不到更新或改善得非常缓慢。这也是训练时应采用小值来初始化神经网络的原因之一。 为什么是这样呢?让我们把 Sigmoid 函数代进去看看, 说句题外话,当我们进行线性回归(即通过直线拟合数据)时,选用 MSE 作为损失函数是一个不错的选择。在没有关于数据的分布知识的情况下,假设高斯分布通常是可行的。 假如没有更好的选择,那么在权重初始化方面做做工作,MSE 也能凑合着用。但实际上,确实存在更好的选择,那就是交叉熵。戳这里 可以温习一下本号关于交叉熵的图解介绍 。至于为什么交叉熵在这个问题上好使,且听下回分解。 [1] [2] [3] 正态分布: https://en.wikipedia.org/wiki/Normal_distribution Sigmoid: https://en.wikipedia.org/wiki/Sigmoid_function Rafay Khan: https://towardsdatascience.com/why-using-mean-squared-error-mse-cost-function-for-binary-classification-is-a-bad-idea-933089e90df7
AI 面试高频问题: 为什么二分类不用 MSE 损失函数?-技术圈
1、MSE作为分类的损失函数会有梯度消失的问题。当样本预测值和真实值接近或者远离的时候,梯度越接近于0,会产生梯度消失。
2、MSE是非凸的,存在很多局部极小值点。
上一篇
Code LoRA from Scratch
下一篇
CNN系列