TP:预测是正样本,预测对了 TN:预测是负样本,预测对了 FP:预测是正样本,预测错了(误报)——真实是负样本 FN:预测是负样本,预测错了(漏报)——真实是正样本
召回率:Recall / True positive rate,TPR / 查全率 针对原有的样本而言,它表示的是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。
R = TP/(TP+FN) 所有正样品中预测为正样品精确率:precision / Positive predictive value,PPV / 查准率 针对预测结果而言,它表示的是预测为正的样本中有多少是对的。那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP)。
P = TP/(TP+FP)others: 预测为负类中预测正确的比例:negative predictive value = TN/(TN+FN) 样本中的负类有多少被预测正确:特异性,specificity = TN/(TN+FP)
ROC曲线 对于某个二分类分类器,输出结果标签(0还是1)往往取决于输出的概率以及预定的概率阈值。假设阈值为0.5,大于0.5的认为是正样本,小于0.5的认为是负样本。如果提高这个阈值,预测错误(实际是负样本的但预测为正样本)的概率就会降低;(把阈值比作门槛,样本要符合更高的要求,机器才认为是正样本)但是随之而来的就是预测正确的概率也降低(很多实际是正样本,但没预测出来)。如果减小这个阈值,那么预测正确的概率会升高但是同时预测错误的概率也会升高。(要求变低了,实际是负样本但机器觉得是正样本) 就有两者不能兼得的现象。但为了衡量分类能力,还是要选择一个兼顾两者的方法。 横坐标false positive rate,FPR。负类样本中被判定为正类的比例,=FP/(FP+TN),越低越好 纵坐标true positive rate,TPR。正类样本中被判定为正类的样本 ,=TP/(TP+FN),越高越好
ROC曲线图中的四个点和一条线 (0,1)左上角:FPR=0,TPR=1。说明负类样本都被判断为负类,正类样本都被判断为正类——>将所有的样本都正确分类。 (1,0)右下角:FPR=1,TPR=0。成功避开了所有的正确分类。把该判断为正类的判断为负类,把该判断为负类的判断为正类 。 (0,0)左下角:FPR=TPR=0。预测所有的样本都为负样本,在后面我们可以看到这种情况说明阈值选得过高。 (1,1)右上角:FPR=TPR=1。预测所有的样本都为正样本,在后面我们可以看到这种情况说明阈值选得过低。 斜对角线:预测为正样本的结果一半是对的,一半是错的,代表随机分类器的预测效果。
可以看出不同的阈值得到不同的分类结果,也就算出不同的TPR和FPR, 将threshold设置为1和0时,分别可以得到ROC曲线上的(0,0)和(1,1)两个点。 不同的阈值,得到ROC图中的一点。主要阈值取得够多,就能得到ROC曲线。一般认为ROC越光滑说明分类算法过拟合的概率越低,越接近左上角说明分类性能越好。
我们知道,我们常用ACC准确率来判断分类器分类结果的好坏,既然有了ACC为什么还需要ROC呢,很重要的一个因素是实际的样本数据集中经常会出现数据偏斜的情况,要么负类样本数大于正类样本数,要么正类样本数大于负类样本数。 比如说我负类样本数有9,000个,正类样本数有100个,如果阈值选得过高,正类样本都判断为负类,同样负类样本都判定为负类,那么准确率90%,看起来还不错,但是如果考虑ROC中的TPR和FPR的话就会知道,此时的TPR=0,FPR=0,也就是误纳率是0,但是误拒率是100%,是左下角的点,并不是很好的一个点,而原来的ACC就不具有代表性 https://blog.csdn.net/resourse_sharing/article/details/51496494
AUC 因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,AUC就是ROC曲线下部分的面积,而相对于AUC是个数值而言,对应AUC更大的分类器效果更好,数值更好判断一些。 计算AUC: (1)理论归理论,计算面积太耗时。
(2)假设总共有(m+n)个样本,其中正样本m个,负样本n个,总共有mn个样本对,有多少个组中的正样本预测为正样本的概率值大于负样本预测为正样本的概率值记为1,当二元组中正负样本的 score相等的时候,按照0.5计算。累加计数,然后除以(mn)就是AUC的值,实现这个方法的复杂度为O(n^2)。实际也不会用。
(3)使用Wilcoxon-Mann-Witney Test原理 按概率从高到矮排个降序, 对于正样本中score最高的,排序为rank_n, 比它概率小的有M-1个正样本(M为正样本个数), (rank_n- M) 个负样本。 正样本概率第二高的, 排序为rank_n-1, 比它概率小的有M-2个正样本,(rank_n-1 - M + 1) 个 负样本。 以此类推正样本中概率最小的, 排序为rank_1,比它概率小的有0个正样本,rank_1 - 1 个负样本。 总共有MxN个正负样本对(N为负样本个数)。把所有比较中 正样本概率大于负样本概率 的例子都算上, 得到公式 (rank_n - M + rank_n-1 - M + 1 … + rank_1 - 1) / (MxN) 就是正样本概率大于负样本概率的可能性了。 化简后(因为后面是个等差数列)
这个最清晰了:https://blog.csdn.net/weixin_41362649/article/details/89081651?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.channel_param
这个排序调转了,从左到右序号是5,4,3,2,1 https://blog.csdn.net/xp1990/article/details/106210327
其他指标 F1-score,其中p表示precision, r表示recall https://anquan.baidu.com/article/170 Scikit-Learn制作数据,获取指标
准确率(accuracy),acc,对于给定的测试数据集,正确分类的样本数与总样本数之比。acc = (TN +TP) / (TN +TP + FN + FP)
这篇好像很nb,ROC的优点缺点 https://www.cnblogs.com/massquantity/p/8592091.html