在机器学习 准确率(accuracy),精确率(Precision),召回率(Recall)和 综合评价指标(F1-Measure )
一、说明
有一个模型,能够在100人中找出程序猿,找的结果如下(混淆矩阵):
实际 \ 预测 | True(预测是程序猿) | False(预测不是程序猿) |
---|---|---|
True(实际是程序猿) | TP (实际是程序猿,预测是程序猿) | FN (实际是程序猿,预测不是程序猿。这个很Negative,因为把应该找到的漏掉了) |
False(实际不是程序猿) | FP(实际不是程序猿,预测成是程序猿。这个很Positive,因为没有漏掉结果) | TN(实际不是程序猿,预测不是程序猿) |
名称 | 公式 | 描述 |
---|---|---|
准确率 | True/total = (TP+TN)/(TP+TN+FP+FN) | 预测对了百分之几? |
精确度 | p= TP/(TP+FP) | 找出的程序猿里面,有多少是真的程序猿? |
召回率 | R=TP/(TP+FN) | 所有的程序猿里面,找出来了多少? |
F1 | (2PR)/(P+R) | 公式 |
二、示例
一共有100个人的数据样本,其中程序猿有20个人,有80个人不是程序猿。
现在有一个系统,能够预测人员分类的情况。预测结果为:找到了50个人是程序猿。与标签对比后发现,这50个人里,有20个人确实是程序猿,有30个人不是程序猿。
模型准确率 | = 判断对的人数/总人数=(程序猿判断为程序猿(20)+ 非程序猿判断为非程序猿(50))/ 总人数(100)=(20+50)/100= 70% |
---|---|
模型精确度 | = 判断是程序猿的人里面(50),有多少真的是程序猿(20)= 20/50= 40% |
召回率 | = 在程序猿的总数中(20),找到了多少(20)= 20 /20 = 100% |
F 1 | = 2 * 精确度(40%) * 召回率(100%) / (精确度(40%) + 召回率(100%))= 2 * 40% * 100% / ( 40% + 100% )= 57.1% |