【机器学习】模型常用评估指标

L0 范数、L1 范数、L2 范数、余弦距离

向量的范数可以简单形象理解为向量的长度,或者向量到零点的距离,亦或是相应两个点之间的距离。因此范数通常会对应一个距离概念。

L0 范数

L0 范数表示向量中非零元素 的个数: ∣ ∣ x ∣ ∣ 0 = # ( i ) with x i ≠ 0 ||x||_0 = \#(i) \text{ with } x_i \ne 0 ∣∣x∣∣0=#(i) with xi=0 。

使用 L0 范数的目的就是希望向量的大部分元素都是 0 ,即向量是稀疏的,这样该向量就能在机器学习中用于稀疏编码、特征选择等。通过最小化 L0 范数,来寻找最少最优的稀疏特征项。

但是,L0 范数的最优化问题是一个 NP hard 问题,而且理论上证明了 L1 范数是 L0 范数的最优突近似,所以通常会使用 L1 范数来代替。

L1 范数

L1 范数表示向量中每个元素绝对值 的和: ∣ ∣ x ∣ ∣ 1 = Σ i = 1 n ∣ x i ∣ ||x||1 = \Sigma^n{i=1}|x_i| ∣∣x∣∣1=Σi=1n∣xi∣ 。L1 范数对应着 L1 距离,即曼哈顿距离(Manhattan Distance)

在机器学习中,使用 L1 正则化的模型叫做 Lasso 回归。L1 正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择。

L2 范数

L2 范数表示向量中各元素的平方和然后再求平方根 : ∣ ∣ x ∣ ∣ 2 = Σ i = 1 n x i 2 ||x||2 = \sqrt{\Sigma^n{i=1}x^2_i} ∣∣x∣∣2=Σi=1nxi2 。L2 范数对应的 L2 距离,即欧式距离(Euclidean Distance)。

在机器学习中,使用 L2 正则化的模型叫做岭回归(Ridge Regression)。L2 正则化可以实现权重衰退,防止模型过拟合。

L1 范数与 L2 范数的对比

L2 范数越小,可以使得权重向量的每个元素都很小,接近于 0 。但 与L1 范数不同的是,L1 会出现等于 0 的值,L2 只会接近于 0。起初 L1 最优化问题解决起来非常困难,因为 L1 范数并没有平滑的函数表示(不可导),但随着计算机技术的发展,很多凸优化算法使得 L1 最优化称为可能。

从贝叶斯先验的角度看,加入正则化相当于加入了一种先验,即当训练一个模型时,仅仅依靠当前的训练数据集是不够的,为了实现更好的泛化能力,往往需要加入先验项。

  • L1 范数相当于加入了一个 Laplacean 先验。
  • L2 范数相当于加入了一个 Gaussian 先验。

余弦距离

余弦相似度 的定义为: ∣ ∣ A − B ∣ ∣ 2 = A ⋅ B ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 ||A-B||_2 = \frac{A \cdot B}{||A||_2||B||_2} ∣∣A−B∣∣2=∣∣A∣∣2∣∣B∣∣2A⋅B ,取值范围为 [-1, 1]。

用 1 减去余弦相似度即可得到余弦距离:
d i s t ( A , B ) = 1 − ∣ ∣ A − B ∣ ∣ 2 = 1 − A ⋅ B ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 dist(A, B) = 1 - ||A - B||_2 = 1 - \frac{A \cdot B}{||A||_2||B||_2} dist(A,B)=1−∣∣A−B∣∣2=1−∣∣A∣∣2∣∣B∣∣2A⋅B

取值范围为 [0, -2]。

需要注意的是,虽然称其为余弦距离,但其并不是严格定义的距离,它满足非负性和对称性,但不满足三角不等式。余弦距离的特点在于,它关注两个向量之间的角度关系,并不关注绝对大小。在电影推荐系统中,不同用户对电影的评分不同,有点评分较低,有点评分较高,用余弦相似度可以排除打分程度的干扰,关注相对差异。可以说 L2 距离体现数值上的绝对差异,余弦距离体现方向上的相对差异

MSE、RMSE、MAE、R 2 ^2 2

  • MSE (Mean Squared Error): 均方误差, P = 1 m Σ ( y i − y ) 2 P = \frac{1}{m}\Sigma(y_i - y)^2 P=m1Σ(yi−y)2
  • RMSE(Root Mean Squared Error):均方根误差, P = 1 m Σ ( y i − y ) 2 P = \sqrt{\frac{1}{m}\Sigma(y_i - y)^2} P=m1Σ(yi−y)2
  • MAE(Mean Absolute Error):平均绝对误差, P = 1 m Σ ∣ ( y i − y ) ∣ P = \frac{1}{m} \Sigma |(y_i - y)| P=m1Σ∣(yi−y)∣
  • R 2 R^2 R2:决定系数, R 2 = 1 − S S r e s S S t o t = 1 − Σ ( y i − y ^ ) 2 Σ ( y i − y ) 2 = 1 − MSE ( y , y ^ ) Var ( y ) R^2 = 1 - \frac{SS_{res}}{SS_{tot}} = 1 - \frac{\Sigma(y_i - \hat{y})^2}{\Sigma(y_i - y)^2} = 1 - \frac{\textbf{MSE}(y, \hat{y})}{\textbf{Var}(y)} R2=1−SStotSSres=1−Σ(yi−y)2Σ(yi−y^)2=1−Var(y)MSE(y,y^)

这些指标主要应用于回归模型。MSE 和 RMSE 可以很好的反映出回归模型预测值与真实值的偏离程度,但如果存在个偏离程度特别大的离群点时,由于使用了平方运算,所以即便离群点的数目非常少,也会使得 MSE 与 RMSE 指标变差。处理这种情况的方法主要有:

  1. 在数据预处理阶段就把异常点(离群点)过滤掉;
  2. 提高模型的复杂度,把离群点产生的原因也当做数据特征考虑进去;
  3. 采用鲁棒性更好的评估指标,如 MAE 等。

准确率、精确率、召回率、F1 值

在定义这四个指标之前,首先要明确 混淆矩阵(Confusion Matrix) 的定义。混淆矩阵通常是一个 2 × 2 的矩阵,行代表模型预测类别的数量统计,列代表数据真实类别标签的数量统计。

实际为正类(P) 实际为负类 (N)
预测为正类(P) True Positives (TP) False Positives (FP)
预测为负类(N) False Negatives (FN) True Negatives (TN)
  • True Positives : 正确的正样本,即正样本被正确识别为正样本
  • False Positives : 错误的正样本,即负样本被错误识别为正样本
  • False Negatives : 错误的负样本,即正样本被错误识别为负样本
  • True Negatives : 正确的负样本,即负样本被正确识别为负样本

从左上到右下的对角线表示模型预测和数据标签一致的数目,所以对角线之和占总样本数的结果就是准确率。所以我们通常希望对角线越高越好,非对角线越低越好,则说明模型在该类的预测准确率越高。

  • 准确率(Accuracy):正确的样本数占总样本数的比例,即 A = T P + T N N A = \frac{TP+TN}{N} A=NTP+TN 。
  • 精确率(Precision):预测正确的正类样本数占预测为正类的总样本数的比例,即 P = T P T P + F P P = \frac{TP}{TP+FP} P=TP+FPTP 。
  • 召回率(Recall):预测正确的正类样本数占实际为正类的样本总数的比例,即 R = T P T P + F N R = \frac{TP}{TP+FN} R=TP+FNTP 。
  • F1 值(F1 score):也称 F 值,精确率和召回率的调和平均值。 F 1 = 2 1 P + 1 R = 2 × P × R P + R F1 = \frac{2}{\frac{1}{P}+\frac{1}{R}} = \frac{2×P×R}{P+R} F1=P1+R12=P+R2×P×R 。

常见的使用场景

  1. 垃圾邮件过滤:宁可漏掉一些垃圾邮件,也要尽量少将正常邮件识别成垃圾邮件;
  2. 信息检索:返回足够多的结果供挑选 vs 返回精确结果

不足与调整

准确率、精确率、召回率、F1 值通常用于分类场景。

准确率可以用于表示预测正确的概率,其缺点在于:当数据集中正负类样本比例不平衡时,占大比例的类别会影响模型的准确率。例如,在 异常点检测(Novelty Detection) 中,可能存在 99.99% 都是非异常点,也就是正类,那在验证集或者测试集中,模型容易把所有样本都预测为非异常点,准确率就会非常高。

相比于准确率,精确率和召回率则可以有指定的关注点。精确率关注用户感兴趣的类别,召回率表示用户感兴趣的类别有多少被正确预测出来。通这一对指标一般来说是矛盾的,为了更好的表征模型的精确率和召回率的性能,我们引入了 F1 值。

有些项目领域可能对精确率和召回率的偏重不同,这时就会引入 F_{\\beta} 来表达对两者的不同偏重。
F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R F_{\beta} = \frac{(1+\beta^2) \times P \times R}{(\beta^2 \times P) + R} Fβ=(β2×P)+R(1+β2)×P×R

其中,当 β > 1 \beta \gt 1 β>1 时精确率的影响更大,当 β < 1 \beta \lt 1 β<1 时召回率影响更大。常用 β = 2 or 0.5 \beta = 2 \text{ or } 0.5 β=2 or 0.5。

P-R 曲线、AP、mAP、ROC 曲线、AUC

P-R 曲线(Precision-recall curve)

采用不同的分类阈值(threshold),则在同一类对象的识别任务中,得到不同的精确率和召回率。横坐标为召回率,纵坐标为精确率的曲线。

通常一个性能好的分类器,它在 recall 增长的同时,precision 也会保持在一个很高的水平;而性能差的分类器,可以能以牺牲 precision 的代价来得到 recall 的提升。从下图可以看出,在不同召回率下,两种算法的精确率表现不同,如果只针对某个点来评估两个模型性能的优劣,则是非常片面的。因此在一些论文当中,作者常常都会使用 PR 曲线,来显示分类器在精确率和召回率之间的权衡,这样才能对模型进行更为全面的评估。

AP 和 mAP

  • AP (Average Precision):平均精确度,对不同召回率点上的精确率进行平均,指的就是 P-R 曲线下面部分的面积,通常来说一个分类器性能越好,AP 值越高。
  • mAP(Mean Average Precision):多个类别 AP 值的平均值,目标检测算法中最重要的一个指标,大小一定在 [0, 1] 之间,mAP越大,模型性能越好。

ROC 曲线 (Receiver operating characteristic curve)

  • 横坐标为假正率(False positive rate,FPR),又称假警报率,表示在所有负样本中被错误预测为正的概率。
  • F P R = F P F P + T N FPR = \frac{FP}{FP+TN} FPR=FP+TNFP
  • 纵坐标为真正率(True positive rate, TPR), 又称命中率,表示在所有正样本中被正确预测的概率。
  • T P R = T P T P + F N TPR = \frac{TP}{TP+FN} TPR=TP+FNTP (相当于召回率)

通常 ROC 曲线的横纵坐标都是取值在 [0, 1] 之间,当我们每取一个不同的阈值时,就可以得到一组(FPR, TPR),即ROC 曲线上的一个点。ROC 曲线有以下的一些特性:

  1. 曲线位置越靠近左上角,分类器性能越好;
  2. 当数据集中的正负样本分布发生变化时,ROC 曲线基本能保持不变。
  3. 当阈值的取值数量足够多时,得到的 ROC 曲线是光滑的,那么基本可以判断该分类器没有太大的过拟合(overfitting)。

AUC (Area under curve)

ROC 的曲线下面积,它是一个概率值,表示当你随机挑选一个正样本以及一个负样本时,当前分类算法根据 score 值将这个正样本排在负样本前面的概率就是 AUC 值。因此,AUC 越大,越接近于 1,分类器的性能则越好,也就是讲正样本排在负样本前面的概率更好,能实现更好的分类。由于 ROC 通常在直线 y = x 上面,所以 AUC 的值都在 [0.5, 1] 之间。

优缺点比较

曲线 P-R 曲线 ROC 曲线
优点 精确率和召回率都聚焦于正类,当类别分布不平衡的数据集倾向于正类时,P-R 曲线则被广泛认为优于 ROC 曲线。 当数据集正负样本的分布发生变化的时候,ROC 曲线能够保持不变,TPR 聚焦于正类,FPR 聚焦于负类,使得评估相对比较均衡。
缺点 在实际环境中,正负样本的分布常常会发生变化,或者分布比例非常不平衡,这个时候 P-R 曲线就会发生明显的变化。 在类别不平衡的背景下(如主要关心正类的信息检索过程),负类增加了很多,大量负类被预测为正类,但曲线没有变化,这就相当于提升了大量的 FP,此时 FPR 却没有明显增长,导致 ROC 曲线呈现一个过分乐观的评估效果。
使用场景 1. 测试不同类别分布下分类器的性能和影响; 2. 评估在相同类别分布下正类的预测情况 1. 评估分类器的整体性能; 2. 单纯比较分类器的性能,且排除类别不平衡对分类造成的影响

总的来说,在实际环境中类别不平衡的情况居多,由于 ROC 通常会给出一个乐观的估计效果,所以 P-R 曲线的使用更为广泛。

IoU、NMS

这几个评估指标通常使用与目标检测的任务当中。

IoU (Intersection over Union)

IoU 指的是模型预测的 bounding-box 和 GroundTruth 之间的交并比,可以理解为模型预测出来的框与数据集中标记的框的重合程度,作为检测的准确率。
IoU = D e t e c t i o n R e s u l t ∩ G r o u n d T r u t h D e t e c t i o n R e s u l t ∪ G r o u n d T r u t h \textbf{IoU} = \frac{Detection Result \cap GroundTruth}{Detection Result \cup GroundTruth} IoU=DetectionResult∪GroundTruthDetectionResult∩GroundTruth

NMS(Non-Maximum Suppression)

NMS 为非极大值抑制。因为在目标检测中,对于同一个物体,模型常常会预测出多个 bounding box,所以 NMS 就要去除多余的预测框,只保留和 ground truth 重叠度最高的预测框。

在目标检测中,分类器会给每个 bounding box 计算出一个 class score,也就是这个预测框属于每一类的概率。根据 score 矩阵和 region 的坐标信息,从中找出置信度比较高的 bounding box。对于存在重叠部分的预测框,只保留得分最高的那个。NMS 一次处理一个对象类别,如果数据集中有 N 个类别,则 NMS 要执行 N 次。具体的操作过程为:

  1. 对于每一类,先把所有 score 小于设定阈值的预测框的 score 设为 0;
  2. 根据 bounding box 的 score 进行排序,把 score 最大的 bounding box 作为队列中首个进行比较的对象;
  3. 计算其余 bounding-box 与当前 score 最大的 bounding-box 的 IoU,去除 IoU 大于设定阈值的预测框,保留 IoU 较小的那些预测框。
  4. 在未处理的 bounding box中继续重复上述过程,直到所有的预测框都被使用。

可以看出,在上面过程中存在两个关键的阈值:IoU 阈值和 score 阈值。

相关推荐
NAGNIP3 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab4 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab4 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP8 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年8 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼8 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS8 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区9 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈10 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang10 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx