一种简化决策树ROC的方法
2014-03-22 13:23
239 查看
本方法来自论文:Learning Decision Trees Using the Area Under the ROC Curve
以下仅作为个人的一些理解,如有谬误,忘不吝赐教。
该方法可普遍用于两个classes,多个leaves的决策树。
论文第二部分主要告诉我们如何寻找最优决策树的labellings,并且通过这个最优的labellings可以直接画出简化后的决策树的ROC,而不用寻找所有可能的labellings(所有可能个数为2^n,2为classes数量,n为leaves的数量)。并且证明了:
1. labelling是最小的成本根据训练集合(training set)
2.任意成本矩阵(稍后会解释)属于最优labellings 的集合。
3.在三个labellings里(Si-1,Si,Si+1),Si 对应了ROC空间里的点。
4.如果两个labelling是相同时,不需要考虑这个点在ROC空间上。
5.如果在决策树的叶子具有相同的局部正精度(local positive accuracy)(稍后会解释),我们可以删除这个重复的叶子。
Tip: Labelling is a set of assignments to each tree leaf
工程上来说不需要论文里的证明,下面我们将通过例子来展示该方法是如何运用的。
Example:假设我们有一个两类(+和-)三叶子(leaf1,leaf2,leaf3)的决策树,训练数据的分布如表所示:
第一步:重新排列叶子
排列原则是根据局部正精度(local positive accuracy)表示为:
上表中三个叶子的局部正精度分别为:leaf1 = 3/(3+5), leaf2 = 5/(5+1),leaf3=4/(4+2)
按照从大到小顺序重新排列叶子得到如下新表:
第二步:定义最优labellings = {S0,S1,…Sn}(n是叶子的数量),新表如下:
第三步:定义每个labelling为Si=
,Si (0≤i≤n)
如果j≤i,
=(j,+) 即第j个叶子为+。 如果j>i,
=(j,-)
即第j个叶子为-。
计算所有的Si并且更新表格如下:
第四步:定义成本矩阵(Cost matrices)
矩阵上面两个分别代表真实值是+和-,左边是预测值的+和-。
C++表示预测值是+并且真实值也是+,即true positive,
C+-表示预测值是+但是真实值是-
C-+表示预测值是-但是真实值是+,即false positive,
C--表示预测值是-并且真实值也是-
并且计算FPR(false positive rate)即:
,TPR(true positive rate)即:
预测值就是第三步中的Si,预测值已经通过第三步给出来了,结果详见第三步下边的表格。
下面我们就可以根据不同的预测值来选择的门限(threshold)来更新成本矩阵:
第五步:以FRP为横坐标,TPR为纵坐标。绘制出ROC点,连接每个点就画出了ROC曲线。
下图是论文中的图,但不匹配计算出的FPR,TPR。方法是对的,但不知是否忽略了什么,欢迎各位提建议指正。
原文发于博客:http://blog.csdn.net/u013787595
GMX 2014.3.22 US Eastern Time
以下仅作为个人的一些理解,如有谬误,忘不吝赐教。
该方法可普遍用于两个classes,多个leaves的决策树。
论文第二部分主要告诉我们如何寻找最优决策树的labellings,并且通过这个最优的labellings可以直接画出简化后的决策树的ROC,而不用寻找所有可能的labellings(所有可能个数为2^n,2为classes数量,n为leaves的数量)。并且证明了:
1. labelling是最小的成本根据训练集合(training set)
2.任意成本矩阵(稍后会解释)属于最优labellings 的集合。
3.在三个labellings里(Si-1,Si,Si+1),Si 对应了ROC空间里的点。
4.如果两个labelling是相同时,不需要考虑这个点在ROC空间上。
5.如果在决策树的叶子具有相同的局部正精度(local positive accuracy)(稍后会解释),我们可以删除这个重复的叶子。
Tip: Labelling is a set of assignments to each tree leaf
工程上来说不需要论文里的证明,下面我们将通过例子来展示该方法是如何运用的。
Example:假设我们有一个两类(+和-)三叶子(leaf1,leaf2,leaf3)的决策树,训练数据的分布如表所示:
第一步:重新排列叶子
排列原则是根据局部正精度(local positive accuracy)表示为:
上表中三个叶子的局部正精度分别为:leaf1 = 3/(3+5), leaf2 = 5/(5+1),leaf3=4/(4+2)
按照从大到小顺序重新排列叶子得到如下新表:
第二步:定义最优labellings = {S0,S1,…Sn}(n是叶子的数量),新表如下:
第三步:定义每个labelling为Si=
,Si (0≤i≤n)
如果j≤i,
=(j,+) 即第j个叶子为+。 如果j>i,
=(j,-)
即第j个叶子为-。
计算所有的Si并且更新表格如下:
第四步:定义成本矩阵(Cost matrices)
矩阵上面两个分别代表真实值是+和-,左边是预测值的+和-。
C++表示预测值是+并且真实值也是+,即true positive,
C+-表示预测值是+但是真实值是-
C-+表示预测值是-但是真实值是+,即false positive,
C--表示预测值是-并且真实值也是-
并且计算FPR(false positive rate)即:
,TPR(true positive rate)即:
预测值就是第三步中的Si,预测值已经通过第三步给出来了,结果详见第三步下边的表格。
下面我们就可以根据不同的预测值来选择的门限(threshold)来更新成本矩阵:
第五步:以FRP为横坐标,TPR为纵坐标。绘制出ROC点,连接每个点就画出了ROC曲线。
下图是论文中的图,但不匹配计算出的FPR,TPR。方法是对的,但不知是否忽略了什么,欢迎各位提建议指正。
原文发于博客:http://blog.csdn.net/u013787595
GMX 2014.3.22 US Eastern Time
相关文章推荐
- 车牌识别中一种新的直接基于彩色图像的二值化简化方法
- Javascript检查日期格式是否合法的一种简化方法。
- 导出excel的另外一种方法 作者 roc 日期 2006-2-24 10:26:00
- 车牌识别中一种新的直接基于彩色图像的二值化简化方法
- 一种最简化的前后端通信方法
- 一种网站错误页日志记录方法
- 处理内存泄漏的一种MFC方法
- Unable to execute dex: Multiple dex files define 的一种解决方法
- Java基础:一种实现数据库连接池的方法
- 用接口实现事件的一种方法,只是玩玩。
- Delta3d 2.0中 鼠标选取物体的示例代码另外一种方法
- 游戏中防止加速的一种方法
- 多表单提交的一种解决方法
- ARM7通过串口实现液晶显示的一种方法(C语言)
- Android监听HOME键的另外一种方法
- Segmentation Fault的一种定位方法
- 决策树 (Decision Tree) 进阶应用 CART剪枝方法及Python实现方式
- java操作Excel的一种方法
- sklearn.metrics中的评估方法介绍(accuracy_score, recall_score, roc_curve, roc_auc_score, confusion_matrix)
- 关于【error=2,No such file or directory】问题的一种起因与解决方法