续创造,加快生长!这是我参加「日新方案 10 月更文挑战」的第19天,点击检查活动概况


之前写一个作业样本不均衡问题。然后查了很多文章都说要更换评价指标,不能再运用准确率了,要核算F值。我看了一下F值怎么核算,看了挺多文章的,可是感觉说的比较利诱,或者说法比较拗口。终究仍是自己再总结一个。

查准率、查全率、F值

咱们平时关于一个模型猜测的准禁绝,咱们最先想到的是用准确率(Accuracy)进行评价。

A=truetotalA = \frac{true}{total}

这个尽管常用,但不能满足所有使命的需求。

所以咱们能够引入查准率查全率

  • 查准率(Precision):某一分类你猜测对了多少个。

    P=猜测对的某一类你猜测的某一类P = \frac{猜测对的某一类}{你猜测的某一类}

  • 查全率(Recall):某一分类你猜测出来多少个。

    R=猜测对的某一类样本中的某一类R = \frac{猜测对的某一类}{样本中的某一类}

举个比如:

分类评价指标 F值 详解
核算○的:

P○=23P_○ = \frac{2}{3}

R○=32R_○ = \frac{3}{2}

查准率和查全率二者不可得兼。大概是下图这样的图像。不信你能够自己算一下。关于不同的试验曲线的形状可能略有不同。

分类评价指标 F值 详解

准确率高,意味着分类器要尽量在 “更有把握” 的情况下才将样本猜测为正样本, 这意味着准确率能够很好的表现模型关于负样本的区别能力,准确率越高,则模型对负样本区别能力越强。

召回率高,意味着分类器尽可能将有可能为正样本的样本猜测为正样本,这意味着召回率能够很好的表现模型关于正样本的区别能力,召回率越高,则模型对正样本的区别能力越强。

从上面的分析能够看出,准确率与召回率是此消彼长的关系, 假如分类器只把可能性大的样本猜测为正样本,那么会漏掉很多可能性相对不大但依旧满足的正样本,从而导致召回率降低。

F值是二者的综合:

F(k)=(1+k)PRk2P+R,其间k>0F(k) =\frac{ ( 1 + k ) \times P \times R} { k^2 \times P + R },\quad 其间k>0

其间kk能够看做一个权值对待:

  • k>1k>1便是查全率有更大影响,
  • k<1k<1查准率有更大影响。

而咱们常用的是F1F1F(1)F(1)的意思,k=1k=1,此时

F(1)=2PRP+RF(1) = \frac {2 \times P \times R} { P + R }

关于上边的比如F1值便是:F1○=2233223+32F1_○ = \frac{2\times \frac{2}{3} \times \frac{3}{2}}{ \frac{2}{3} + \frac{3}{2}}

关于二分类问题

道理便是我上边说的那一段,可是惯例咱们介绍的时分都喜爱写什么TP TN之类的字母表明,看得我头晕。所以假如上边比如看懂了的话,能够直接跳过二分类,看多分类就能够了。

二分类呢便是我上面举的那个比如。他人写F值的核算一般都喜爱用一个混杂矩阵来表明。

咱们需求树立以下几个量的混杂矩阵:

  • 真实例(True Positive,TP):猜测类别为正例,实践是正例,猜测对了方针样本
  • 假正例(False Positive,FP):猜测类别为正例,实践是负例,猜测是方针,但猜测错了
  • 假负例(False Negative,FN):猜测类别为负例,实践是正例,没猜测出来的方针样本
  • 真负例(True Negative,TN):猜测类别为负例,实践是负例,。

仍是上面那个比如,咱们讲说圆圈是正例,方块是负例。现在就能够转化成下图这样。

分类评价指标 F值 详解

字母真的很让人利诱!!!所以我搞了文字版。TN那里灰色的,由于核算F值不需求那一项。

此时:

  • 准确率: A=TP+TNTP+FP+FN+TNA = \frac{T P+T N}{\text { TP+FP+FN+TN }}

  • 准确率:P=TPTP+FPP=\frac{T P}{T P+F P}

  • 召回率:R=TPTP+FNR=\frac{T P}{T P+F N}

  • F1值: F1=2PRP+RF 1=\frac{2 \times P \times R}{P+R}

多分类

为什么我说能够不看二分类那一段,由于那一段真的四个字母表明特别简略让人利诱。并且它跟多分类也衔接不上。由于在多分类里强行用简略的正例负例来说真的是很怪异。

不需求你再翻回去了,我直接把那个内容搬下来了。

  • 查准率(Precision):某一分类你猜测对了多少个。

    P=猜测对的某一类你猜测的某一类P = \frac{猜测对的某一类}{你猜测的某一类}

  • 查全率(Recall):某一分类你猜测出来多少个。

    R=猜测对的某一类样本中的某一类R = \frac{猜测对的某一类}{样本中的某一类}

上边说到的F值是关于二分类。多分类的时分就需求用到宏F值(F-macro)和微F值(F-micro)。

  • 宏F值

    办法一: 求取每一类的F值之后求平均值。

    FMacro=1n∑i−1nF1(i)F_{Macro} = \frac{1}{n}\sum_{i-1}^n F1^{(i)}

    办法二: 还有一种说法是先分别核算查准率和查全率,再进行平均,运用平均的查准率查全率核算宏F值。

    FMacro=kPaveRavek2Pave+RaveF_{Macro} = \frac {k \times P_{ave} \times R_{ave} } { k^2 \times P_{ave} + R_{ave}}

  • 微F值:这样每一类的猜测成果都加起来之后再核算查准率、查全率、F值。

    FMicro=kPsumRsumk2Psum+RsumF_{Micro} = \frac {k \times P_{sum} \times R_{sum}} { k^2 \times P_{sum} + R_{sum}}

留意: 关于宏F1两种核算办法终究成果是不一样的。

在Scikit-learn(以前称为scikits.learn,也称为sklearn)的包中,运用的是第一种方法。

两种方法的运用争议一直存在。

不过在Lewis, David D., et al. “Training algorithms for linear text classifiers.” SIGIR. Vol. 96. 1996. 243199.243277 (acm.org)中,作者指出,macro-F1是所有类中F1-score的平均值,即第一种方法才是macro-F1的核算方法。论文[1911.03347v2] Macro F1 and Macro F1 (arxiv.org) 对两种macro的办法进行简略分析,第二种方法对过错的分布不太敏感,这一点有点像micro-F1,论文作者也推荐办法一。

核算

咱们仍是核算F1为例:

分类评价指标 F值 详解

TP 猜测对○ FP 猜测是○,可是猜测错了 FN 没猜测出来的○
2 1 1
TP 猜测对□ FP 猜测是□,可是猜测错了 FN 没猜测出来的□
4 0 1
TP 猜测对△ FP 猜测是△,可是猜测错了 FN 没猜测出来的△
2 1 0

我是手算的,假如你算的成果和我不一样,可能是我算错了。

微F1:

总和:

TP 猜测对 FP 猜测,可是猜测错了 FN 没猜测出来的
8 2 2
Psum=88+2=45Rsum=88+2=45FMicro=2PsumRsumPsum+Rsum=2454545+45=25\begin{aligned} &P_{sum} = \frac{8}{8+2} = \frac 4 5\\ \\ &R_{sum} = \frac{8}{8+2} = \frac 4 5\\ \\ &F_{Micro} = \frac {2 \times P_{sum} \times R_{sum}} { P_{sum} + R_{sum} } = \frac {2 \times \frac 4 5 \times \frac 4 5} { \frac 4 5 + \frac 4 5 } = \frac 2 5 \end{aligned}

宏F1:

  • 核算办法1
P○=22+1=23R○=22+1=23F1○=2P○R○P○+R○=23P□=44+0=1R□=44+1=45F1□=2P□R□P□+R□=89P△=22+1=23R△=22+0=1F1△=2P△R△P△+R△=45\begin{aligned} &P_○=\frac{2}{2+1} = \frac{2}{3} &R_○=\frac{2}{2+1} = \frac{2}{3} \quad &F1_○=\frac{2 \times P _○\times R_○}{P_○+R_○} = \frac{2}{3} \\ \\ & P_□=\frac{4}{4+0} = 1 &R_□=\frac{4}{4+1} = \frac{4}{5} \quad & F1_□=\frac{2 \times P_□ \times R_□}{P_□+R_□} = \frac{8}{9} \\ \\ &P_△=\frac{2}{2+1} = \frac{2}{3} &R_△=\frac{2}{2+0} = 1 \quad &F1_△=\frac{2 \times P_△ \times R_△}{P_△+R_△} = \frac{4}{5} \end{aligned}
F1macro=F1○+F1□+F1△3=106135F1_{macro} = \frac{F1_○+F1_□+F1_△}{3} = \frac{106}{135}
  • 核算办法2
P○=22+1=23R○=22+1=23P□=44+0=1R□=44+1=45P△=22+1=23R△=22+0=1\begin{aligned} &P_○=\frac{2}{2+1} = \frac{2}{3} &R_○=\frac{2}{2+1} = \frac{2}{3} \quad\\ \\ & P_□=\frac{4}{4+0} = 1 &R_□=\frac{4}{4+1} = \frac{4}{5} \quad \\ \\ &P_△=\frac{2}{2+1} = \frac{2}{3} &R_△=\frac{2}{2+0} = 1 \quad \end{aligned}
Pave=P○+P□+P△=79Rave=R○+R□+R△=3745F1macro=2PaveRavePave+Rave=279374579+3745=259324\begin{aligned} &P_{ave}=P_○+P_□+P_△=\frac 7 9 \\ \\ &R_{ave}=R_○+R_□+R_△=\frac{37} {45} \\ \\ &F1_{macro} = \frac {2 \times P_{ave} \times R_{ave} } { P_{ave} + R_{ave}} = \frac {2 \times \frac 7 9 \times \frac{37} {45} } { \frac 7 9 +\frac{37} {45} } = \frac {259}{324} \end{aligned}

如何挑选Micro F1 & Macro F1

假如你的类别比较均衡,则随意;假如你以为大样本的类别应该占有更重要的方位, 运用Micro;假如你以为小样本也应该占有重要的方位,则运用 Macro;假如 Micro << Macro , 则意味着在大样本类别中呈现了严重的分类过错;假如 Macro << Micro , 则意味着小样本类别中呈现了严重的分类过错。

Weight F1

Weighted F值 是Macro 算法的改良版,顾名思义便是加权版本的F值核算。是为了解决Macro中没有考虑样本不均衡的问题。

既然是Macro F值核算的改良版,那肯定也是有两种核算办法:

  • 办法一:将各类其他F值乘以该类在总样本中的占比进行加权核算。

    FWeighted=∑i−1nw(i)F(i)F_{Weighted} = \sum_{i-1}^n w^{(i)}F^{(i)}

  • 办法二:在核算查准率和查全率的时分,各个类其他查准率和查全率要乘以该类在总样本中的占比进行加权核算。

    FWeighted=kPweiRweik2Pwei+RweiF_{Weighted} = \frac {k \times P_{wei} \times R_{wei} } { k^2 \times P_{wei} + R_{wei}}

    Pwei=w○P○+w□P□+w△P△P_{wei}=w_○P_○+w_□P_□+w_△P_△

    Rwei=w○R○+w□R□+w△R△R_{wei}=w_○R_○+w_□R_□+w_△R_△

咱们仍是核算F1为例:

分类评价指标 F值 详解

TP 猜测对 FP 猜测是,可是猜测错了 FN 没猜测出来的 样本份额
2 1 1 30%
4 0 1 50%
8 2 2 20%
  • 核算办法1
P○=22+1=23R○=22+1=23F1○=2P○R○P○+R○=23P□=44+0=1R□=44+1=45F1□=2P□R□P□+R□=89P△=22+1=23R△=22+0=1F1△=2P△R△P△+R△=45\begin{aligned} &P_○=\frac{2}{2+1} = \frac{2}{3} &R_○=\frac{2}{2+1} = \frac{2}{3} \quad &F1_○=\frac{2 \times P _○\times R_○}{P_○+R_○} = \frac{2}{3} \\ \\ & P_□=\frac{4}{4+0} = 1 &R_□=\frac{4}{4+1} = \frac{4}{5} \quad & F1_□=\frac{2 \times P_□ \times R_□}{P_□+R_□} = \frac{8}{9} \\ \\ &P_△=\frac{2}{2+1} = \frac{2}{3} &R_△=\frac{2}{2+0} = 1 \quad &F1_△=\frac{2 \times P_△ \times R_△}{P_△+R_△} = \frac{4}{5} \end{aligned}
F1Weighted=w○F1○+w□F1□+w△F1△=2330%+8950%+4520%=181225F1_{Weighted} =w_○F1_○+w_□F1_□+w_△F1_△= \frac 2 3 \times 30\% + \frac 8 9 \times 50\% + \frac 4 5 \times 20\%= \frac {181}{225}
  • 核算办法2
P○=22+1=23R○=22+1=23P□=44+0=1R□=44+1=45P△=22+1=23R△=22+0=1\begin{aligned} &P_○=\frac{2}{2+1} = \frac{2}{3} &R_○=\frac{2}{2+1} = \frac{2}{3} \quad\\ \\ & P_□=\frac{4}{4+0} = 1 &R_□=\frac{4}{4+1} = \frac{4}{5} \quad \\ \\ &P_△=\frac{2}{2+1} = \frac{2}{3} &R_△=\frac{2}{2+0} = 1 \quad \end{aligned}
Pwei=w○P○+w□P□+w△P△=2330%+150%+2320%=56Rwei=w○R○+w□R□+w△R△=2330%+4550%+120%=45F1Weighted=2PweiRweiPwei+Rwei=2564556+45=4049\begin{aligned} &P_{wei}=w_○P_○+w_□P_□+w_△P_△ = \frac 2 3 \times 30\% + 1 \times 50\% + \frac 2 3 \times 20\%= \frac 5 6\\ \\ &R_{wei}=w_○R_○+w_□R_□+w_△R_△ =\frac 2 3 \times 30\% + \frac 4 5\times 50\% + 1\times 20\%= \frac 4 5 \\ \\ &F1_{Weighted} = \frac {2 \times P_{wei} \times R_{wei} } { P_{wei} + R_{wei}} = \frac {2 \times \frac 5 6 \times \frac 4 5 } { \frac 5 6 + \frac 4 5 } = \frac {40}{49} \end{aligned}

其他参考资料:

  1. Multi-Class Metrics Made Simple, Part I: Precision and Recall | by Boaz Shmueli | Towards Data Science
  2. Multi-Class Metrics Made Simple, Part II: the F1-score | by Boaz Shmueli | Towards Data Science