前言
一直在用的代码里面可以测出上面三个值,我就一直没细看,只是不断地加入自己的代码,想要提高precision,结果precision真的提高了,而且提高了还不止一点两点,让我有点害怕,于是想起来看一下这些评价指标是如何计算出来的。
二分类情况
是不是经常看见如下类似的图?这是二分类的图,假设只有正类和负类,True和False分别表示对和错;Positive和Negative分别表示预测为正类和负类。那么
- TP:预测为Positive并且对了(样本为正类且预测为正类)
- TN:预测为Negative并且对了(样本为负类且预测为负类)
- FP:预测为Positive但错了(样本为负类但预测为正类)
- FN:预测为Negative但错了(样本为正类但预测为负类)
- TP+FP:预测为Positive并且对了+预测为Positive但错了=预测为Positive的样本总数
- TP+FN:预测为Positive并且对了+预测为Negative但错了=实际为Positive的样本总数
所以precision就表示:被正确预测的Positive样本 / 被预测为Positive的样本总数
多分类情况
其实和二分类情况很类似,例子如下昨天写这blog的时候我还不知道多分类的F1 score有两种常用的计算方式,一个是Micro,一个是Macro,前者和二分类类似,也和上述的例子吻合(将例子中的precision和recall代入到F1公式中,得到的就是Micro下的F1值),而Macro情况下计算F1需要先计算出每个类别的F1值,然后求平均值。如下