0

gbmR のモデル内で何が起こっているかを理解する方法に精通している人はいますか?

Petal.Length虹彩を予測する方法を見たいとしましょう。簡単にするために、次のように実行しました。

tg=gbm(Petal.Length~.,data=iris)

これは機能し、実行すると:

summary(tg)

次に、次のようになります。

Hit <Return> to see next plot: 
                      var rel.inf
Petal.Width   Petal.Width   67.39
Species           Species   32.61
Sepal.Length Sepal.Length    0.00
Sepal.Width   Sepal.Width    0.00

これは直感的に理解できます。実行すると、次のpretty.gbm.tree(tg) ようになります。

  SplitVar SplitCodePred LeftNode RightNode MissingNode ErrorReduction Weight    Prediction
0        2  0.8000000000        1         2           3       184.6764     75  0.0001366667
1       -1 -0.0022989091       -1        -1          -1         0.0000     22 -0.0022989091
2       -1  0.0011476604       -1        -1          -1         0.0000     53  0.0011476604
3       -1  0.0001366667       -1        -1          -1         0.0000     75  0.0001366667

したがって、明らかに gbm は、変数 #2 で分割すると 3 つの個別の回帰が返されると考えています。表示される順序が理にかなっ てSplitVar==2いるからだと思います。Petal.Widthstr(iris)

しかし、どのデータが欠落していますか? iris欠損データはありません。それでは、作成された 3 つのノードのそれぞれで何が起こっているのかを確認するにはどうすればよいでしょうか。

プロダクション用にこれを C++ でコーディングしたいとしましょうPetal.Width >.8

ありがとう、

ジョシュ

4

1 に答える 1

0

gbm2sasパッケージmlmetaの関数を参照してください。この関数は、メタプログラミングを使用して R オブジェクトを SAS 形式に変換します。

SAS 形式は C++ に似ているため、読みやすく、C++ へのハックも簡単です。

于 2016-03-28T20:17:35.823 に答える