| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 分类评价指标 F值 详解 | Micro F1 & Macro F1 & Weight F1 -> 正文阅读 |
|
[人工智能]分类评价指标 F值 详解 | Micro F1 & Macro F1 & Weight F1 |
之前写一个作业样本不均衡问题。然后查了很多文章都说要更换评价指标,不能再使用准确率了,要计算F值。我看了一下F值怎么计算,看了挺多文章的,但是感觉说的比较迷惑,或者说法比较拗口。最后还是自己再总结一个。 查准率、查全率、F值我们平时对于一个模型预测的准不准,我们最先想到的是用准确率(Accuracy)进行评价。 A = t r u e t o t a l A = \frac{true}{total} A=totaltrue? 这个虽然常用,但不能满足所有任务的需求。 所以我们可以引入查准率和查全率。
举个例子: P ○ = 2 3 P_○ = \frac{2}{3} P○?=32? R ○ = 3 2 R_○ = \frac{3}{2} R○?=23? 查准率和查全率二者不可得兼。大概是下图这样的图像。不信你可以自己算一下。对于不同的实验曲线的形状可能略有不同。 精确率高,意味着分类器要尽量在 “更有把握” 的情况下才将样本预测为正样本, 这意味着精确率能够很好的体现模型对于负样本的区分能力,精确率越高,则模型对负样本区分能力越强。 召回率高,意味着分类器尽可能将有可能为正样本的样本预测为正样本,这意味着召回率能够很好的体现模型对于正样本的区分能力,召回率越高,则模型对正样本的区分能力越强。 从上面的分析可以看出,精确率与召回率是此消彼长的关系, 如果分类器只把可能性大的样本预测为正样本,那么会漏掉很多可能性相对不大但依旧满足的正样本,从而导致召回率降低。 而F值是二者的综合: 其中 k k k可以看做一个权值对待:
而我们常用的是 F 1 F1 F1值, F ( 1 ) F(1) F(1)的意思, k = 1 k=1 k=1,此时 F ( 1 ) = 2 × P × R P + R F(1) = \frac {2 \times P \times R} { P + R } F(1)=P+R2×P×R? 对于上边的例子F1值就是: F 1 ○ = 2 × 2 3 × 3 2 2 3 + 3 2 F1_○ = \frac{2\times \frac{2}{3} \times \frac{3}{2}}{ \frac{2}{3} + \frac{3}{2}} F1○?=32?+23?2×32?×23?? 对于二分类问题道理就是我上边说的那一段,但是常规大家介绍的时候都喜欢写什么TP TN之类的字母表示,看得我头晕。所以如果上边例子看懂了的话,可以直接跳过二分类,看多分类就可以了。 二分类呢就是我上面举的那个例子。别人写F值的计算一般都喜欢用一个混淆矩阵来表示。 我们需要建立以下几个量的混淆矩阵:
还是上面那个例子,我们讲说圆圈是正例,方块是负例。现在就可以转化成下图这样。 字母真的很让人迷惑!!!所以我搞了文字版。TN那里灰色的,因为计算F值不需要那一项。 此时:
多分类为什么我说可以不看二分类那一段,因为那一段真的四个字母表示特别容易让人迷惑。并且它跟多分类也衔接不上。因为在多分类里强行用简单的正例负例来说真的是很怪异。 不需要你再翻回去了,我直接把那个内容搬下来了。
上边提到的F值是关于二分类。多分类的时候就需要用到宏F值(F-macro)和微F值(F-micro)。
注意: 关于宏F1两种计算方法最终结果是不一样的。 在Scikit-learn(以前称为scikits.learn,也称为sklearn)的包中,使用的是第一种方式。 两种方式的使用争议一直存在。 不过在“Training algorithms for linear text classifiers”1中,作者指出,macro-F1是所有类中F1-score的平均值,即第一种方式才是macro-F1的计算方式。论文Macro F1 and Macro F12对两种macro的方法进行简单分析,第二种方式对错误的分布不太敏感,这一点有点像micro-F1,论文作者也推荐方法一3 4 5 6。 计算我们还是计算F1为例:
我是手算的,如果你算的结果和我不一样,可能是我算错了。 微F1总和:
P s u m = 8 8 + 2 = 4 5 R s u m = 8 8 + 2 = 4 5 F M i c r o = 2 × P s u m × R s u m P s u m + R s u m = 2 × 4 5 × 4 5 4 5 + 4 5 = 2 5 \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} ?Psum?=8+28?=54?Rsum?=8+28?=54?FMicro?=Psum?+Rsum?2×Psum?×Rsum??=54?+54?2×54?×54??=52?? 宏F1计算方法1
P
○
=
2
2
+
1
=
2
3
R
○
=
2
2
+
1
=
2
3
F
1
○
=
2
×
P
○
×
R
○
P
○
+
R
○
=
2
3
P
□
=
4
4
+
0
=
1
R
□
=
4
4
+
1
=
4
5
F
1
□
=
2
×
P
□
×
R
□
P
□
+
R
□
=
8
9
P
△
=
2
2
+
1
=
2
3
R
△
=
2
2
+
0
=
1
F
1
△
=
2
×
P
△
×
R
△
P
△
+
R
△
=
4
5
\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}
?P○?=2+12?=32?P□?=4+04?=1P△?=2+12?=32??R○?=2+12?=32?R□?=4+14?=54?R△?=2+02?=1?F1○?=P○?+R○?2×P○?×R○??=32?F1□?=P□?+R□?2×P□?×R□??=98?F1△?=P△?+R△?2×P△?×R△??=54?? 计算方法2 P ○ = 2 2 + 1 = 2 3 R ○ = 2 2 + 1 = 2 3 P □ = 4 4 + 0 = 1 R □ = 4 4 + 1 = 4 5 P △ = 2 2 + 1 = 2 3 R △ = 2 2 + 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} ?P○?=2+12?=32?P□?=4+04?=1P△?=2+12?=32??R○?=2+12?=32?R□?=4+14?=54?R△?=2+02?=1? P a v e = P ○ + P □ + P △ = 7 9 R a v e = R ○ + R □ + R △ = 37 45 F 1 m a c r o = 2 × P a v e × R a v e P a v e + R a v e = 2 × 7 9 × 37 45 7 9 + 37 45 = 259 324 \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} ?Pave?=P○?+P□?+P△?=97?Rave?=R○?+R□?+R△?=4537?F1macro?=Pave?+Rave?2×Pave?×Rave??=97?+4537?2×97?×4537??=324259?? 如何选择Micro F1 & Macro F1
如果你的类别比较均衡,则随便;如果你认为大样本的类别应该占据更重要的位置, 使用Micro;如果你认为小样本也应该占据重要的位置,则使用 Macro;如果 Micro << Macro , 则意味着在大样本类别中出现了严重的分类错误;如果 Macro << Micro , 则意味着小样本类别中出现了严重的分类错误。 Weight F1Weighted F值 是Macro 算法的改良版,顾名思义就是加权版本的F值计算。是为了解决Macro中没有考虑样本不均衡的问题。 既然是Macro F值计算的改良版,那肯定也是有两种计算方法:
计算我们还是计算F1为例:
计算方法1 P ○ = 2 2 + 1 = 2 3 R ○ = 2 2 + 1 = 2 3 F 1 ○ = 2 × P ○ × R ○ P ○ + R ○ = 2 3 P □ = 4 4 + 0 = 1 R □ = 4 4 + 1 = 4 5 F 1 □ = 2 × P □ × R □ P □ + R □ = 8 9 P △ = 2 2 + 1 = 2 3 R △ = 2 2 + 0 = 1 F 1 △ = 2 × P △ × R △ P △ + R △ = 4 5 \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} ?P○?=2+12?=32?P□?=4+04?=1P△?=2+12?=32??R○?=2+12?=32?R□?=4+14?=54?R△?=2+02?=1?F1○?=P○?+R○?2×P○?×R○??=32?F1□?=P□?+R□?2×P□?×R□??=98?F1△?=P△?+R△?2×P△?×R△??=54?? F 1 W e i g h t e d = w ○ F 1 ○ + w □ F 1 □ + w △ F 1 △ = 2 3 × 30 % + 8 9 × 50 % + 4 5 × 20 % = 181 225 F1_{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} F1Weighted?=w○?F1○?+w□?F1□?+w△?F1△?=32?×30%+98?×50%+54?×20%=225181? 计算方法2 P ○ = 2 2 + 1 = 2 3 R ○ = 2 2 + 1 = 2 3 P □ = 4 4 + 0 = 1 R □ = 4 4 + 1 = 4 5 P △ = 2 2 + 1 = 2 3 R △ = 2 2 + 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} ?P○?=2+12?=32?P□?=4+04?=1P△?=2+12?=32??R○?=2+12?=32?R□?=4+14?=54?R△?=2+02?=1? P w e i = w ○ P ○ + w □ P □ + w △ P △ = 2 3 × 30 % + 1 × 50 % + 2 3 × 20 % = 5 6 R w e i = w ○ R ○ + w □ R □ + w △ R △ = 2 3 × 30 % + 4 5 × 50 % + 1 × 20 % = 4 5 F 1 W e i g h t e d = 2 × P w e i × R w e i P w e i + R w e i = 2 × 5 6 × 4 5 5 6 + 4 5 = 40 49 \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} ?Pwei?=w○?P○?+w□?P□?+w△?P△?=32?×30%+1×50%+32?×20%=65?Rwei?=w○?R○?+w□?R□?+w△?R△?=32?×30%+54?×50%+1×20%=54?F1Weighted?=Pwei?+Rwei?2×Pwei?×Rwei??=65?+54?2×65?×54??=4940??
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/30 1:27:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |