R の gbm 勾配ブースト マシン パッケージでツリーがどのように構成されているかを理解するのに苦労しています。具体的には、pretty.gbm.tree
Which features do the index in SplitVar
point toの出力を見てください。
データセットで GBM をトレーニングしました。これは、ツリーの 1 つの上部 ~4 分の 1 です。次の呼び出しの結果ですpretty.gbm.tree
。
SplitVar SplitCodePred LeftNode RightNode MissingNode ErrorReduction Weight Prediction
0 9 6.250000e+01 1 2 21 0.6634681 5981 0.005000061
1 -1 1.895699e-12 -1 -1 -1 0.0000000 3013 0.018956988
2 31 4.462500e+02 3 4 20 1.0083722 2968 -0.009168477
3 -1 1.388483e-22 -1 -1 -1 0.0000000 1430 0.013884830
4 38 5.500000e+00 5 18 19 1.5748155 1538 -0.030602956
5 24 7.530000e+03 6 13 17 2.8329899 361 -0.078738904
6 41 2.750000e+01 7 11 12 2.2499063 334 -0.064752766
7 28 -3.155000e+02 8 9 10 1.5516610 57 -0.243675567
8 -1 -3.379312e-11 -1 -1 -1 0.0000000 45 -0.337931219
9 -1 1.922333e-10 -1 -1 -1 0.0000000 12 0.109783128
```
ここでは、 how を見てから、インデックスが 0 ベースであり、異なる行LeftNode, RightNode
をMissingNode
指しているように見えます。データサンプルを使用してこれをテストし、ツリーをたどって予測をたどると、 1ベースのインデックスSplitVar
を使用していると考えると正しい答えが得られます。
しかし、私が構築した多くのツリーの 1 つは、列にゼロがあります。SplitVar
このツリーは次のとおりです。
SplitVar SplitCodePred LeftNode RightNode MissingNode ErrorReduction Weight Prediction
0 4 1.462500e+02 1 2 21 0.41887 5981 0.0021651262
1 -1 4.117688e-22 -1 -1 -1 0.00000 512 0.0411768781
2 4 1.472500e+02 3 4 20 1.05222 5469 -0.0014870985
3 -1 -2.062798e-11 -1 -1 -1 0.00000 23 -0.2062797579
4 0 4.750000e+00 5 6 19 0.65424 5446 -0.0006222011
5 -1 3.564879e-23 -1 -1 -1 0.00000 4897 0.0035648788
6 28 -3.195000e+02 7 11 18 1.39452 549 -0.0379703437
gbm のツリーで使用されるインデックスを表示する正しい方法は何ですか?