R:如何在“if-else”条件下阅读ada的AdaBoost树规则?

时间:2015-01-13 09:55:29

标签: r r-caret adaboost

有谁知道如何将AdaBoost树(导致R)转换为if-else条件?

我在R中使用了 caret 包,以及 train 功能和 method="ada" 获取我的数据集的一些预测。

之后我使用 listTreesAda 包中的 rattle 功能查看其结构(示例如下):

n= 45211
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 45211 5280 no (0.88321426 0.11678574)
2) duration< 551.5 40743 3245 no (0.92035442 0.07964558)
4) poutcome=failure,other,unknown 39451 2431 no (0.93837926 0.06162074) *
5) poutcome=success 1292 478 yes (0.36996904 0.63003096)
10) duration=132.5 1066 300 yes (0.28142589 0.71857411) *
3) duration>=551.5 4468 2035 no (0.54453894 0.45546106)
6) duration=835.5 1688 697 yes (0.41291469 0.58708531) *

你如何在if-else条件下阅读? 如果你想自己计算AdaBoost模型的最终功能,你会怎么做? 每棵树的重量为{w(1), w(2), ..., w(n)},你会将这个重量乘以什么? 对应于响应变量为YES的最终叶子的规则? ...响应变量为NO的位置? ...对树的每个if-else规则?

你可以看到我有点失落。

(这篇文章与以下内容有关: https://stats.stackexchange.com/questions/133088/use-adaboost-results-in-r-to-make-future-predictions-by-handhttps://stackoverflow.com/questions/27857619/r-error-using-drawtreesada-to-draw-an-ada-tree

1 个答案:

答案 0 :(得分:0)

经过多次努力,我得到了它。至少阅读if-else条件......就像这样:

                                          ____N=45211_____
                                         |duration < 551.5|
                                         |________________|
                                                 /\     
               _______(rule=TRUE, Y=no)_________/  \_______(rule=FALSE, Y=no)________ 
              |                                                                      | 
______________|_________________                                       ______________|_____________         
|poutcome=failure,other,unknown|                                      |      duration=835.5        |
|______________________________|                                      |____________________________|
              /\                                                                    /\ 
             /  \                                                                  /  \
____________/_   \__(rule=F,Y=yes)__                                 (rule=T, Y=yes)  (rule=F, Y=...)
|(rule=T,Y=no)|  | duration=132.5  |                                      N=1688        N=(4468-1688)
|_____________|  |_________________|
   N=39451               /\
                        /  \
          (rule=T, Y=yes)  (rule=F, Y=... partial output)
              N=1066            N=(1292-1066)=226