有人熟悉如何在R中找出gbm
模型内部发生了什么吗?
假设我们想知道如何预测iris中的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分裂,得到三个独立的回归,我假设SplitVar==2
是Petal.Width
,因为你在str(iris)
中看到的顺序是有意义的。
但是丢失了什么数据呢?iris
没有丢失数据。那么我们如何看到在创建的三个节点中的每一个节点中发生了什么?
假设我想用C++编写代码用于生产,我不明白除了知道你应该根据Petal.Width >.8
做一些不同的事情之外,你怎么知道要写什么。
谢谢你,
约什
2条答案
按热度按时间zzlelutf1#
请参见mlmeta包中的
gbm2sas
函数,它使用元编程将R对象转换为SAS格式。SAS格式类似于C++,因此它既容易阅读,也容易破解C++。
7gyucuyw2#
在与QTD价格图表相同的图表中生成路径