宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取

    最近在看机器学习的,要理解准确率精确率召回率的含义,首先要理解 TP、FN、FT 和  TN 的含义。 TP、FN、FT 和  TN 这几个概念一直搞得不太清楚。记录一下。看了别人的文章,举的例子不是太好,不太容易理解 。

    假设有100个人,实际上50个人喝酒了,50个人没喝。我们有一个判定是否喝酒的模型,通过这个模型我们的判定结果如下: 

            60个人喝了(其中 40 个人是真正喝了酒的); 40 个人没喝(其中10个人其实是喝了的)。

    那么前面 4个名词中,第一个字母 T 和 F 表示的意思是我们预测的是不是正确。预测是喝了酒的为 P,预测没喝酒的为N。那么此例中这个概念的混淆矩阵如下:

 TP: 预测喝了酒(P),实际喝了酒,预测正确(T)

 FP: 预测喝了酒(P),实际没喝酒,预测错误(F)

 FN: 预测没喝酒(N),实际喝了酒,预测错误(F)

 TN: 预测没喝酒(N),实际没喝酒,预测正确(T)

那么:

准确率(Accuracy): 就是判断正确的占总数的比例。

       Accuracy=(TP+TN) / (TP+FP+TN+FN) =  (40+30)/100 = 70%

虽然准确率能够判断总的正确率,但是在样本不均衡的情况下,并不能作为很好的指标来衡量结果。

比如在样本集中,正样本有90个,负样本有10个,样本是严重的不均衡。对于这种情况,我们只需要将全部样本预测为正样本,就能得到90%的准确率,但是完全没有意义。对于新数据,完全体现不出准确率。因此,在样本不平衡的情况下,得到的高准确率没有任何意义,此时准确率就会失效。所以,我们需要寻找新的指标来评价模型的优劣。

精确率(Precision): 是针对预测结果而言的,其含义是在被所有预测为正的样本中实际为正样本的概率。精确率代表对正样本结果中的预测准确程度。

       P=TP / (TP+FP) = 40/(40+20) = 66.7%    此例中表示预测喝酒的人数中有多少人是真正喝酒的比例。

召回率(Recall):   召回率是覆盖面的度量。衡量了分类器对正例的识别能力。也叫查全率。

       R=TP / (TP+FN)= 40/(40+10) = 80%      此例中表示我们预测出的喝酒的人数占真正喝酒的人数的比例。     

综合评价指标: 

精确率和召回率又被叫做查准率和查全率,可以通过P-R图进行表示

如何理解P-R(精确率-召回率)曲线呢?或者说这些曲线是根据什么变化呢?

以逻辑回归举例,其输出值是0-1之间的数字。因此,如果我们想要判断用户的好坏,那么就必须定一个阈值。比如大于0.5指定为好用户,小于0.5指定为坏用户,然后就可以得到相应的精确率和召回率。但问题是,这个阈值是我们随便定义的,并不知道这个阈值是否符合我们的要求。因此为了寻找一个合适的阈值,我们就需要遍历0-1之间所有的阈值,而每个阈值都对应一个精确率和召回率,从而就能够得到上述曲线。

根据上述的P-R曲线,怎么判断最好的阈值点呢?首先我们先明确目标,我们希望精确率和召回率都很高,但实际上是矛盾的,上述两个指标是矛盾体,无法做到双高。因此,选择合适的阈值点,就需要根据实际问题需求,比如我们想要很高的精确率,就要牺牲掉一些召回率。想要得到很高的召回率,就要牺牲掉一些精准率。因此我们就需要综合考虑他们,最常见的方法就是F-Measure(又称为F-Score)。

F-Measure是Precision和Recall加权调和平均:
这里写图片描述

当a 取 1时,就是 F1分数(F1-Score)。F1分数同时考虑精确率和召回率,让两者同时达到最高,取得平衡。

    

另外 Roc 、AUC 曲线见 https://weizhixiaoyi.com/archives/275.html