精确率,准确率和召回率
1,这三个率能干啥?
这三个率能比较一个模型的好坏。
举个栗子,我有10个香蕉,1代表好香蕉,0代表坏香蕉,它们依次排列如下:
1 1 1 1 1 0 0 0 0 0
我让a模型帮我分出好香蕉,它给出这样的结果
1 1 1 1 0 0 0 0 0 1
好吧,让我们分析一下a模型干的活。
我们大致可以分为如下四种情况:
本来是好香蕉,a也认为是好香蕉,有4个
本来是好香蕉,a认为是坏香蕉,有1个
本来是坏香蕉,a也认为是坏香蕉,有4个
本来是坏香蕉,a认为是好香蕉,有1个
好吧,看晕了,是时候引进一些科学的思想了!我们把四个类型按照实际值和预测值进行系统化分类:
预测 | 预测 | |||
1 | 0 | 合计 | ||
实际 | 1 | TP | FN | actual positive |
实际 | 0 | FP | TN | actual negative |
合计 | predicted positive | predicted negative | 总的样本数 |
得出a模型的数据如下:
tp:4
fn:1
fp:1
tn:4
类分好了,开始分析吧
2,精确率
精确率是相对于预测结果而言的,它表示的是预测为正的样本中有多少是对的;
精确率的分子是识别正确的正样本数量,分母是模型认为的正样本数量
P=TP/(TP+FP)
a模型的精确率应该是:4/(4+1)=4/5
3,召回率
召回率是相对于样本而言的,即样本中有多少正样本被预测正确了;
召回率的分子是识别正确的正样本数量,分母是实际上有多少正样本。
R= TP / (TP+FN)
a模型的召回率应该是:4/(4+1)=4/5
4,准确率
准确率是指有在所有的判断中有多少判断正确的,即把正的判断为正的,还有把负的判断为负的;
准确率的分子是识别为正的正样本数量加上识别为负的负样本数量,分母是样本总数。
P=(TP+TN) / (TP+TN+FN+FP)
a模型的准确率应当是:(4+4)/10=4/5
好的,a模型的精确率,召回率和准确率都是4/5,
我又让b模型帮我分香蕉,香蕉还是那些香蕉,排列也没变,为了方便看,复制如下
1 1 1 1 1 0 0 0 0 0
b给出的结果
1 0 0 0 0 0 0 0 0 0
根据如上的算法,我们得出b的三率:
精确率:1
召回率:1/5
准确率:3/5
那么问题来了,a模型和b模型,哪个比较好?
看精确率是b高,看召回率是a高,这可咋整?
5,平均数算法
精确率暂时不做考虑,让我们来对a和b的精确率和召回率进行分析
1),算数平均数,(对精确率和召回率求算数平均数)
a模型:4/5
b模型:3/5
a模型得分80,b模型得分60。但是很明显。b模型配不上60分。我们考虑换个算法
2),几何平均数,就是n个项相乘然后开n次方
a模型:0.8*0.8然后开方,得到0.8
b模型:1*0.2然后开方,得到0.44
a模型仍旧是80,b模型这次只得了44分。感觉舒服一些了,还有什么算法呢?
3),调和平均数,又称倒数平均数,是总体各统计变量倒数的算术平均数的倒数。
解释一下,就是n个样本先求倒数,然后求和除以n,然后对结果求倒数。
a模型:(5/4+5/4)/2然后求倒数,得到4/5
b模型:(1+5)/2然后求倒数,得到1/3
a模型仍旧是80,b模型这次33分,这回舒服多了。
顺带说一声,三个平均数对极小值的敏感程度为:调和平均数>几何平均数>算数平均数