算法工程师面试之评测指标

2022年01月16日 阅读数:2
这篇文章主要向大家介绍算法工程师面试之评测指标,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

前言


来,如今在脑子里回忆一下,深度学习中有哪些性能评测指标?这节就专门来分析一下评测指标。git

1. F1值

F1值的计算很简单,公式是:github

f 1 = 2 ∗ r e c a l l ∗ p r e c i s i o n r e c a l l + p r e c i s i o n f1 = \frac{2*recall*precision}{recall+precision} f1=recall+precision2recallprecision面试

可是有时候咱们会遇到类别不均衡的问题,因此就延伸出两种具体的F1值。一种是macro_f1,一种是micro_f1。所谓macro_f1 就是对权重均衡的类别F1。假设如今有N类,那么macro_f1 的计算方式就是算法

m a c r o _ f 1 = 1 N ∑ i = 1 N f i = 1 N ∑ i = 1 N 2 ∗ r i ∗ p i r i + p i \begin{aligned} macro\_f1 &= \frac{1}{N}\sum_{i=1}^{N}f_i &=\frac{1}{N}\sum_{i=1}^{N} 2 * \frac{r_i * p_i}{r_i+p_i} \end{aligned} macro_f1=N1i=1Nfi=N1i=1N2ri+piripiide

其中 r i r_i ri p i p_i pi 表示的是第i个类别的recall以及precision 值。性能

好比给出了一个真实标签以及预测值,怎么计算呢?sklearn 中的 ​​f1_score​​ 已经彻底实现了这些功能,因此在须要实现相关功能的时候,请查阅资料,避免重复造轮子。学习

"""
使用macro,micro, weighted 等参数计算不一样的f1_score值
"""
from sklearn.metrics import f1_score
y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]

# macro计算的是加权平均
print(f1_score(y_true, y_pred, average='macro'))
# micro 计算的是整体样本的平均
print(f1_score(y_true, y_pred, average='micro'))

获得的结果以下:spa

算法工程师面试之评测指标_github

咱们能够手动计算一下并与sklearn 计算的值比较一下:code

根据y_true 的值,咱们知道有三类,其中 r 1 = 1 r_1 = 1 r1=1, f 1 = 2 3 f_1 = \frac{2}{3} f1=32 , r 2 = 0 r_2 = 0 r2=0, p 2 = 0 p_2 = 0 p2=0, r 3 = 0 r_3 = 0 r3=0, p 3 = 0 p_3 = 0 p3=0。 因而 m a c r o f 1 = 4 / 15 = 0.26666 macro_{f1} = 4/15 = 0.26666 macrof1=4/15=0.26666。 一样计算出 m i c r o f 1 = 2 / 6 = 0.33333 micro_{f1} = 2/6 = 0.33333 microf1=2/6=0.33333blog