背景
机器学习中,如何评估一个模型的好坏极关重要,否则训练出来了我们自己都说不明白到底该不该用,一句话就是心里没底。
本文将用较为白话的角度来阐述这些指标。
注:这些指标(准确率、精确率、召回率)用中文表示容易混淆,例如准确率和精确率,本文将用英文来进行表述
指标介绍
在介绍之前,我们先上一个二分类的例子
假定已经根据训练集训练出了一个模型,这个模型等待进行评估。
现在给定测试集,正样本60个,负样本40个,一共100个。
你可以简单的比喻为,一个班有60个男的,40个女的,但是呢,我们又预先不知道,而是通过模型来进行预测。(这里把男比喻为整样本,女比喻为负样本)
模型预测结果:
- 50个是男的,50个是女的
真实结果:
- 预测的50个男的中,有40个是男的,10个是女的
- 预测的50个女的中,有30个是女的,20个是男的
英文表示:
- TP:将
正类
预测为正类
数量,40 - FN:将
正类
预测为负类
数量,20 - FP:将
负类
预测为正类
数量,10 - TN:将
负类
预测为负类
数量,30
混淆矩阵如下:
预测男 | 预测女 | |
---|---|---|
真实男 | 40(TP) | 20(FN) |
真实女 | 10(FP) | 30(TN) |
看到这些男男女女、正正负负是不是很蒙。。。
Accuracy(中文译为准确率)
白话描述:找的准
accuracy = 预测对的 / 所有 = (TP+TN)/(TP+FN+FP+TN) = 70%
注意:accurary是对全部类别计算的
Recall(召回率)
白话描述:找的全
正样本召回率:recall = TP/(TP+FN) = 预测正样本对的 / 所有正样本 = 66.6%
Precision(精确率)
白话描述:xxxxx
precision = TP/(TP+FP) = 80%
注意:precision是按一个分类(男,即正分类)计算的
总结
- Precision,被我们的算法选为positive的数据中,有多少真的是positive的?
- Recall: 实际应该为Positive的数据中,多少被我们选为了Positive?
- Accuracy: 所有数据中,我们正确分类了多少?
- F1 Score是precision和recall整合在一起的判定标准(类似于ROC评估,可以直接标定一个模型的好坏)