发现在多分类问题(这里『多分类』是相对于『二分类』而言的,指的是类别数超过2的分类问题)中,用sklearn的metrics.accuracy_score(y_true, y_pred)和float(metrics.f1_score(y_true, y_pred, average="micro"))计算出来的数值永远是一样的,在stackoverflow中搜索这个问题Is F1 micro the same as Accuracy?
也搜到micro F1 score与accuracy数值是相等的,遂证明如下:
定义TP/FP/FN为多分类问题各类的tp/fp/fn之和,三者之间的关系有如下引理(其中ALL是总样本数)。
引理:
FP = FN = F
F + TP = ALL
引理的证明:FP与FN恒等性的简单证明:
考虑多分类问题的混淆矩阵,FP和FN的值都是混淆矩阵所有非对角线的值求和,只不过FP计算时是先对列求和再对行求和,FN计算时是先对行求和再对列求和。由于FP与FN恒等,故可以统一记作F. 而TP是混淆矩阵的对角线和。引理证毕。
下面计算micro PrecisionP, micro RecallR, micro F1 score F1:
P = TP / (TP + FP)
R = TP / (TP + FN)
F1 = 2 * P * R / (P + R)
= 2 * TP / (2 * TP + FP + FN)
= 2 * TP / (2 * TP + 2 * F)
= TP / (TP + F)
= TP / ALL
= acc
其中acc是多分类的accuracy. 证毕。
来源:CSDN
作者:da_kao_la
链接:https://blog.csdn.net/da_kao_la/article/details/104616016