机器学习之性能分析
来源:互联网 发布:一人能开几个淘宝店 编辑:程序博客网 时间:2024/06/05 05:15
1.查准率(P)和查全率(R)
以二分类为例,根据样本真实类别与学习器预测类别的组合分为真正例(TP)、假正例(FP)、真反例(TN)、假反例(FN)。分类的混淆矩阵为:
查准率:
查全率:
二者是成反比的关系,如果是挑瓜的话,如果希望把所有的好瓜都挑出来则通过增加选瓜的数量来实现(FN=0),但是这样查准率就会很低;若希望选出的瓜中好瓜比例尽可能搞,则可只挑选最有把握的瓜,但因此漏掉不少好瓜(TP=1,FP=0),使得查全率较低。 一般的P-R曲线如下图所示:
比较学习器的优劣的时候,若学习器A的P-R曲线被另一个学习器B的曲线完全“包住”,则可断言后者的性能优于前者;如果两个学习器的P-R曲线存在交叉,则难以断孰优孰劣,一种合理的方法是比较二者的P-R曲线面积大小,虽能一定程度表现查准率和查全率取得相对“双高”的比例,但是通常这个值不容易估算,因此需要设计一些其他的度量方法。
一种是“平衡点”(BEP),即查准率等于查全率的取值;另一种更常用的是F1度量。
2.F1数
F1数是基于查准率和查全率的调和平均数定义的:
3.ROC与AUC
3.1 ROC曲线
学习算法通常对测试样本产生一个概率预测,然后将这个预测值与一个分类阈值T进行对比,若大于T则归为正类,否则为负类。测试过程中对每个测试样本产生一个在
在不同任务中,我们可根据任务需求来采取不同的阈值。若我们更重视“查准率”,则可以选择排序中考前的位置进行截断;若更重视“查全率”则可考虑更靠后的位置进行截断。因此排序本身质量好坏,体现了综合考虑学习器在不同任务中的“期望泛化性能”的好坏,或者说,“一般情况下”泛化性能的好坏。ROC曲线则是从这个角度研究学习器泛化性能的有力工具
ROC全称是“受试者工作特征”。“ROC曲线”的横轴为假阳性率、纵轴为真阳性率,二者定义为:
ROC曲线的几个特征点:
(1)对角线对应于“随机猜测”模型,真阳性率和假阳性率相等;
(2)一个学习器的ROC曲线被另一个曲线完全“包住”,则后者的性能优于前者;
(3)ROC曲线越逼近左上角,性能越好。
(4)ROC比起P-R曲线,正负样本分布变化时能保持基本不变。比如如果负样本增加到原来的10倍,ROC曲线基本不变,而P-R曲线发生很大的变化。
如果两个ROC曲线发生交叉,则一般难以断言两者孰优孰劣,较为合理的判据是ROC曲线下的面积,即**AUC** .现实任务中一般为有限个测试样本。如何用有限样本绘制ROC曲线?如图b所示,我们可以绘制成分段曲线:假设给定$m_+$个正样本和$m_-$个负样本,根据学习器输出的预测结果进行排序;首先将阈值设为最大,则全部预测为负例,真阳性率和假阳性率都是0,坐标(0,0);从大到小依次取预测结果作为阈值,假设前一个点坐标为(x,y),当前若为正样本,则TP加一,坐标变为$(x,y+\frac{1}{m_+})$,若为负样本,则FP加一,坐标变为$(x+\frac{1}{m_-},y)$。最后讲所有点依次用线段连接成ROC曲线。
3.2 AUC
AUC可估算为:
形式化地看,AUC考虑的是样本预测的排序质量,因此它与排序误差有紧密联系。给定
即考虑每一对正负例,若正例的预测值小于反例则记一个“罚分”,若相等,则记0.5个“罚分”,即
AUC的理解:AUC表示任取正样本预测结果大于任何负样本预测结果的概率。下面来自一个知乎网友的解释。
随机抽取一个样本, 对应每一潜在可能值X都对应有一个判定位正样本的概率P。对一批已知正负的样本集合进行分类,按概率从高到矮排个降序, 对于正样本中概率最高的,排序为rank_1, 比它概率小的有M-1个正样本(M为正样本个数), (rank_1 - M) 个负样本。 正样本概率第二高的, 排序为rank_2, 比它概率小的有M-2个正样本,(rank_2 - M + 1) 个 负样本。以此类推正样本中概率最小的, 排序为rank_M,比它概率小的有0个正样本,rank_M - 1 个负样本。总共有MxN个正负样本对(N为负样本个数)。把所有比较中 正样本概率大于负样本概率 的例子都算上, 得到公式(rank_1 - M + rank_2 - M + 1 …. + rank_M - 1) / (MxN) 就是正样本概率大于负样本概率的可能性了。 化简后(因为后面是个等差数列)得:
- 机器学习之性能分析
- 机器学习之分类学习(性能分析)
- 机器学习之性能度量
- linux学习之-- 性能分析
- Linux--机器性能分析
- 机器学习 之 KNN 算法 小结分析
- 【机器学习算法】之线性回归分析
- 机器学习之决策树--原理分析
- 机器学习系列之独立成分分析
- 三 机器学习之主成分分析
- 机器学习之KNN算法分析
- 机器学习: 性能度量
- wireshark 学习更进一步 之网络性能分析
- MySql学习之性能分析Explain使用
- 机器学习中的分类算法之性能优劣
- 机器学习之分类模型的性能度量
- 机器学习之利用AdaBoost元算法提高分类性能
- 机器学习:算法性能度量之查准率与查全率
- Java 进程间文件锁FileLock详解
- 进程和线程
- 【Python】学习遇到错误记录
- java导出数据为excle
- Gogs 的 Window 安装
- 机器学习之性能分析
- JavaNIO学习之FileChannel
- Spring基础部分(ioc,aop,事物)
- C++之全局函数与成员函数的转换
- 一道关于竞赛图的题目
- netty in action.pdf 英文原版 免费下载
- Python3 装饰器
- UDP切包发送。避免发送内容大于MTU
- 安装RabbitMQ及使用方法