返回介绍

数学基础

统计学习

深度学习

工具

Scala

七、性能度量

发布于 2023-07-17 23:38:26 字数 57335 浏览 0 评论 0 收藏 0

  1. 给定训练集D={(x1,y~1),(x2,y~2),,(xN,y~N)}$ \mathbb D=\{(\mathbf{\vec x}_1,\tilde y_1),(\mathbf{\vec x}_2,\tilde y_2),\cdots,(\mathbf{\vec x}_N,\tilde y_N)\} $ ,测试集合T={(x1,y~1),(x2,y~2),,(xN,y~N)}$ \mathbb T=\{(\mathbf{\vec x}_1^\prime,\tilde y_1^\prime),(\mathbf{\vec x}_2^\prime,\tilde y_2^\prime),\cdots,(\mathbf{\vec x}^\prime_{N^\prime},\tilde y^\prime_{N^\prime})\} $ 。

    对于样本x$ \mathbf{\vec x} $ ,假设其真实标记为y~$ \tilde y $ ,模型预测输出为y^$ \hat y $ 。

  2. 理论上性能度量都是在测试集上进行。

    • 如果是在训练集上度量,则相应的指标为:训练准确率、训练错误率、训练 auc ...
    • 如果是在验证集上度量,则相应的指标为:验证准确率、验证错误率、验证 auc ...

7.1 分类问题性能度量

7.1.1 准确率、错误率

  1. 测试准确率:测试数据集上的准确率(其中I$ I $ 为示性函数):

    rtest=1Ni=1NI(y~i=y^i)

    准确率衡量的是有多少比例的样本被正确判别。

  2. 测试错误率:测试数据集上的错误率:

    etest=1Ni=1NI(y~iy^i)

    错误率衡量的是有多少比例的样本被判别错误,它也是损失函数为 0-1 损失时的测试误差。

7.1.2 查准率、查全率

  1. 对于二分类问题,通常将关注的类作为正类,其他类作为负类。令:

    • TP:分类器将正类预测为正类的数量(True Positive) 。即:真正类 的数量。
    • FN:分类器将正类预测为负类的数量(False Negative) 。即:假负类 的数量。
    • FP:分类器将负类预测为正类的数量(False Positive)。即:假正类 的数量。
    • TN:分类器将负类预测为负类的数量(True Negative) 。即:真负类 的数量。

    分类结果的混淆矩阵(confusion matrix)定义为:

    预测:正类预测:反类
    真实:正类TP$ TP $FN$ FN $
    真实:反类FP$ FP $TN$ TN $
  2. 查准率(precision):P=TPTP+FP$ P=\frac{TP}{TP+FP} $ 。

    它刻画了所有预测为正类的结果中,真正的正类的比例。

  3. 查全率(recall):R=TPTP+FN$ R=\frac{TP}{TP+FN} $ 。

    它刻画了真正的正类中,被分类器找出来的比例。

  4. 不同的问题中,有的侧重差准率,有的侧重差全率。

    • 对于推荐系统,更侧重于查准率。即推荐的结果中,用户真正感兴趣的比例。因为给用户展示的窗口有限,必须尽可能的给用户展示他真实感兴趣的结果。
    • 对于医学诊断系统,更侧重与查全率。即疾病被发现的比例。因为疾病如果被漏诊,则很可能导致病情恶化。
  5. 查准率和查全率是一对矛盾的度量。一般来说查准率高时查全率往往偏低,而查全率高时查准率往往偏低。

    • 如果希望将所有的正例都找出来(查全率高),最简单的就是将所有的样本都视为正类,此时有FN=0。此时查准率就偏低(准确性降低)。
    • 如果希望查准率高,则可以只挑选有把握的正例。最简单的就是挑选最有把握的那一个样本。此时有FP=0。此时查全率就偏低(只挑出了一个正例)。

7.1.3 P-R 曲线

  1. 对二类分类问题,可以根据分类器的预测结果对样本进行排序:排在最前面的是分类器认为“最可能”是正类的样本,排在最后面的是分类器认为“最不可能”是正类的样本。

    假设排序后的样本集合为(x1,y~1),(x2,y~2),,(xN,y~N)$ (\mathbf {\vec x}_1,\tilde y_1),(\mathbf {\vec x}_2,\tilde y_2),\cdots,(\mathbf {\vec x}_N,\tilde y_N) $ ,预测为正类的概率依次为(p1,p2,,pN)$ (p_1,p_2,\cdots,p_N) $ 。

    在第i$ i $ 轮,将pi$ p_i $ 作为分类阈值来。即:

    y^j={1,ifpjpi0,else,j=1,2,,N

    此时计算得到的查准率记做Pi$ P_i $ ,查全率记做Ri$ R_i $ 。

    以查准率为纵轴、查全率为横轴作图,就得到查准率-查全率曲线,简称 P-R曲线。该曲线由点{(R1,P1),(R2,P2),,(RN,PN)}$ \{(R_1,P_1),(R_2,P_2),\cdots,(R_N,P_N)\} $ 组成。

  2. P-R曲线从左上角(0,1) 到右下角(1,0)

    • 开始时第一个样本(最可能为正例的)预测为正例,其它样本都预测为负类。此时:

      • 查准率很高,几乎为1。
      • 查全率很低,几乎为0,大量的正例没有找到。
    • 结束时所有的样本都预测为正类。此时:

      • 查全率很高,正例全部找到了,查全率为1。
      • 查准率很低,大量的负类被预测为正类。
  3. P-R曲线直观显示出分类器在样本总体上的查全率、查准率。因此可以通过两个分类器在同一个测试集上的P-R 曲线来比较它们的预测能力:

    • 如果分类器BP-R曲线被分类器A的曲线完全包住,则可断言:A的性能好于B

    • 如果分类器AP-R曲线与分类器B的曲线发生了交叉,则难以一般性的断言两者的优劣,只能在具体的查准率和查全率下进行比较。

      • 此时一个合理的判定依据是比较P-R曲线下面积大小,但这个值通常不容易计算。
      • 可以考察平衡点。平衡点Break-Even Point:BEPP-R曲线上查准率等于查全率的点,可以判定:平衡点较远的P-R曲线较好。 P_R_AB

7.1.4 ROC曲线

  1. 定义真正例率(True Positive Rate) 为:TPR=TPTP+FN$ TPR=\frac{TP}{TP+FN} $ 。

    它刻画了真正的正类中,模型预测为正类的概率。它也就等于正类的查全率。

  2. 定义假正例率(False Positive Rate) 为:FPR=FPTN+FP$ FPR=\frac{FP}{TN+FP} $ 。

    它刻画了真正的负类中,模型预测为正类的概率。它就等于 1 减去负类的查全率。

  3. 对二类分类问题,可以根据分类器的预测结果对样本进行排序:排在最前面的是分类器认为“最可能”是正类的样本,排在最后面的是分类器认为“最不可能”是正类的样本。

    假设排序后的样本集合为(x1,y~1),(x2,y~2),,(xN,y~N)$ (\mathbf {\vec x}_1,\tilde y_1),(\mathbf {\vec x}_2,\tilde y_2),\cdots,(\mathbf {\vec x}_N,\tilde y_N) $ ,预测为正类的概率依次为(p1,p2,,pN)$ (p_1,p_2,\cdots,p_N) $ 。

    在第i$ i $ 轮,将pi$ p_i $ 作为分类阈值来。即:

    y^j={1,ifpjpi0,else,j=1,2,,N

    此时计算得到的真正例率记做TPRi$ TPR_i $ ,假正例率记做FPRi$ FPR_i $ 。

    以真正例率为纵轴、假正例率为横轴作图,就得到ROC曲线。该曲线由点{(TPR1,FPR1),(TPR2,FPR2),,(RPRN,FPRN)}$ \{(TPR_1,FPR_1),(TPR_2,FPR_2),\cdots,(RPR_N,FPR_N)\} $ 组成。

  4. ROC曲线从左下角(0,0) 到右上角(1,1)

    • 开始时第一个样本(最可能为正例的)预测为正例,其它样本都预测为负类。此时:

      • 真正例率很低,几乎为0,因为大量的正例未预测到。
      • 假正例率很低,几乎为0,因为此时预测为正类的样本很少,所以几乎没有错认的正例。
    • 结束时所有的样本都预测为正类。此时:

      • 真正例率很高,几乎为1,因为所有样本都预测为正类。
      • 假正例率很高,几乎为1,因为所有的负样本都被错认为正类。
  5. ROC曲线中:

    • 对角线对应于随机猜想模型。
    • (0,1)对应于理想模型:没有预测错误,FPR恒等于0,TPR恒等于1。
    • 通常ROC曲线越靠近点(0,1)越好。
  6. 可以通过两个分类器在同一个测试集上的ROC 曲线来比较它们的预测能力:

    • 如果分类器AROC曲线被分类器B的曲线完全包住,则可断言:B的性能好于A

    • 如果分类器AROC曲线与分类器B的曲线发生了交叉,则难以一般性的断言两者的优劣。

      此时一个合理的判定依据是比较ROC曲线下面积大小,这个面积称作AUC:Area Under ROC Curve

  7. P-R曲线和ROC曲线刻画的都是阈值的选择对于分类度量指标的影响。

    通常一个分类器对样本预测的结果是一个概率结果,比如正类概率 0.7。但是样本是不是正类还需要与阈值比较。

    这个阈值会影响了分类器的分类结果,比如:是阈值 0.5 还是阈值 0.9。

    • 如果更重视查准率,则将阈值提升,比如为 0.9 。
    • 如果更看重查全率,则将阈值下降,比如为 0.5 。
  8. P-R曲线和ROC曲线上的每一个点都对应了一个阈值的选择,该点就是在该阈值下的(查准率,查全率) /(真正例率,假正例率)

    沿着横轴的方向对应着阈值的下降。

  9. AUCROC 曲线的面积,其物理意义为:从所有正样本中随机挑选一个样本,模型将其预测为正样本的概率为p1$ p_1 $ ;从所有负样本中随机挑选一个样本,模型将其预测为正样本的概率为p0$ p_0 $ 。p1>p0$ p_1\gt p_0 $ 的概率就等于 AUC

    • 如果对完全随机的对样本进行分类,则p1>p0$ p_1\gt p_0 $ 的概率为0.5,因此AUC=0.5

    • AUC 在样本不平衡的条件下依然适用。如:在反欺诈场景下,假设正常用户为正类(设占比 99.9%),欺诈用户为负类(设占比 0.1%)。

      如果使用准确率评估,则将所有用户预测为正类即可获得 99.9%的准确率。很明显这并不是一个很好的预测结果,因为欺诈用户全部未能找出。

      如果使用AUC 评估,则此时FPR=1,TPR=1,对应的 AUC=0.5 。因此AUC 成功的指出了这并不是一个很好的预测结果。

    • AUC 反应的是模型对于样本的排序能力(根据样本预测为正类的概率来排序)。如:AUC=0.8 表示:给定一个正样本和一个负样本,在 80% 的情况下,模型对正样本预测为正类的概率大于对负样本预测为正类的概率。

    • AUC 对于均匀采样不敏感。如:上述反欺诈场景中,假设对正常用户进行均匀的降采样。任意给定一个负样本negi$ \text{neg}_{i} $ ,设模型对其预测为正类的概率为pnegi$ p_{neg_i} $ 。降采样前后,由于是均匀采样,因此预测为正类的概率大于pnegi$ p_{neg_i} $ 和小于pnegi$ p_{neg_i} $ 的真正样本的比例没有发生变化。因此AUC 保持不变。

      但是如果是非均匀的降采样,则预测为正类的概率大于pnegi$ p_{neg_i} $ 和小于pnegi$ p_{neg_i} $ 的真正样本的比例会发生变化,这也会导致AUC 发生变化。

    • 正负样本之间的预测为正类概率之间的差距越大,则AUC 越高。因为这表明正负样本之间排序的把握越大,区分度越高。

      如:在电商场景中,点击率模型的AUC 要低于购买转化模型的AUC 。因为点击行为的成本低于购买行为的成本,所以点击率模型中正负样本的差别要小于购买转化模型中正负样本的差别。

7.1.5 F1 值

  1. F1$ F_1 $ 为查准率与查全率的调和均值:2F1=1P+1R$ \frac{2}{F_1}=\frac {1}{P}+\frac{1}{R} $ 。
  2. F1$ F_1 $ 更一般的形式:1Fβ=1(1+β2)×P+β2(1+β2)×R$ \frac{1}{F_\beta}=\frac{1}{(1+\beta^{2})\times P}+\frac{\beta^{2}}{(1+\beta^{2})\times R} $ , 其中β2>0$ \beta^2 \gt 0 $ 度量了查全率对查准率的相对重要性。

7.1.6 代价矩阵

  1. 实际应用过程中,不同类型的错误所造成的后果可能有所不同。如:将健康人诊断为患者,与将患者诊断为健康人,其代价就不同。

    为权衡不同类型错误所造成的不同损失,可以为错误赋予非均等代价(unequal cost)。

    对于二类分类问题,可以设定一个“代价矩阵”(cost matrix),其中costij$ cost_{ij} $ 表示将第 i 类样本预测为第 j 类样本的代价。通常costii=0$ cost_{ii}=0 $ 表示预测正确时的代价为0 。

    预测:第0类预测:第1类
    真实:第0类0cost01$ cost_{01} $
    真实:第1类cost10$ cost_{10} $0

    前面讨论的性能度量都隐式的假设均等代价,即cost01=cost10$ cost_{01}=cost_{10} $

  2. 在非均等代价下,希望找到的不再是简单地最小化错误率的模型,而是希望找到最小化总体代价total cost的模型。

  3. 在非均等代价下,ROC曲线不能直接反映出分类器的期望总体代价,此时需要使用代价曲线cost curve

    • 代价曲线的横轴就是正例概率代价。

      P+cost=p×cost01p×cost01+(1p)×cost10

      其中p$ p $ 为正例(第0类)的概率。

    • 代价曲线的纵轴为:

      costnorm=FNR×p×cost01+FPR×(1p)×cost10p×cost01+(1p)×cost10

      其中:

      • FPR为假正例率FPR=FPTN+FP$ FPR=\frac{FP}{TN+FP} $ 。

        它刻画了模型将真实的负样本预测为正类的概率。

      • FNR为假负例率FNR=1TPR=FNTP+FN$ FNR=1-TPR=\frac{FN}{TP+FN} $ 。

        它刻画了模型将真实的正样本预测为负类的概率。

7.1.7 宏查准率/查全率、微查准率/查全率

  1. 有时候可能得到了多个二分类混淆矩阵。如:在多个数据集上进行训练/测试。

    此时希望在多个二分类混淆矩阵上综合考察查准率和查全率。

  2. 假设有m$ m $ 个二分类混淆矩阵,有两种方法来综合考察:

    • 宏查准率、宏查全率:先在各个混淆矩阵上分别计算查准率和查全率,记作(P1,R1),(P2,R2),,(Pm,Rm)$ (P_1,R_1),(P_2,R_2),\cdots,(P_m,R_m) $ ;然后计算平均值。

      这样得到的是宏查准率(macro-P),宏查全率(macro-F),宏F1(macro-F1) :

      macro-P=1mi=1mPi,macro-R=1mi=1mRi,2macro-F1=1macro-P+1macro-R$ \text{macro-P}=\frac 1m\sum_{i=1}^{m}P_i,\; \text{macro-R}=\frac 1m\sum_{i=1}^{m}R_i,\; \frac{2}{\text{macro-F}_1}=\frac{1}{\text{macro-P}}+\frac{1}{\text{macro-R}} $ 。

    • 微查准率、微查全率:先将个混淆矩阵对应元素进行平均,得到TP,FP,TN,FN$ TP,FP,TN,FN $ 的平均值,记作TP,FP,TN,FN$ \overline {TP},\overline{FP},\overline{TN},\overline{FN} $ ;再基于这些平均值计算微查准率(micro-P),微查全率(micro-F),微F1(micro-F1):

      micro-P=TPTP+FP,micro-R=TPTP+FN,2micro-F1=1micro-P+1micro-R$ \text{micro-P}=\frac{\overline {TP}}{\overline {TP}+\overline{FP}},\;\text{micro-R}=\frac{\overline {TP}}{\overline {TP}+\overline{FN}},\;\frac{2}{\text{micro-F}_1}=\frac {1}{\text{micro-P}}+\frac{1}{\text{micro-R}} $ 。

7.2 回归问题性能度量

  1. 均方误差mean square error:MSEMSE=1Ni=1N(y~iy^i)2$ MSE=\frac{1}{N^{\prime}} \sum_{i=1}^{N^{\prime}}(\tilde y_i^{\prime}-\hat y_i^{\prime})^2 $ 。

  2. 均方根误差root mean squared error:RMSERMSE=1Ni=1N(y~iy^i)2$ RMSE=\sqrt{\frac{1}{N^{\prime}} \sum_{i=1}^{N^{\prime}}(\tilde y_i^{\prime}-\hat y_i^{\prime})^2} $ 。

  3. 均方根对数误差root mean squared logarithmic error:RMSLE

    RMLSE=1Ni=1N[log(y~i)log(y^i)]2$ RMLSE=\sqrt{\frac{1}{N^{\prime}} \sum_{i=1}^{N^{\prime}}[\log(\tilde y_i^{\prime})-\log(\hat y_i^{\prime})]^2} $ 。

    为使得log 有意义,也可以使用:RMSLE=1Ni=1N[log(y~i+1)log(y^i+1)]2$ RMSLE=\sqrt{\frac{1}{N^{\prime}} \sum_{i=1}^{N^{\prime}}[\log(\tilde y_i^{\prime}+1)-\log(\hat y_i^{\prime}+1)]^2} $ 。

    优势:

    • 当真实值的分布范围比较广时(如:年收入可以从 0 到非常大的数),如果使用MAE、MSE、RMSE 等误差,这将使得模型更关注于那些真实标签值较大的样本。

      RMSLE 关注的是预测误差的比例,使得真实标签值较小的样本也同等重要。

    • 当数据中存在标签较大的异常值时,RMSLE 能够降低这些异常值的影响。

  4. 平均绝对误差mean absolute error:MAEMAE=1Ni=1N|y~iy^i|$ MAE=\frac{1}{N^{\prime}} \sum_{i=1}^{N^{\prime}}|\tilde y_i^{\prime}-\hat y_i^{\prime}| $ 。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文