繁体   English   中英

从R中的GBM中提取Model

[英]Extracting Model from GBM in R

有没有人熟悉如何弄清楚 R 中的gbm model 内部发生了什么?

假设我们想了解如何预测虹膜中的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==2Petal.Width ,因为您在str(iris)中看到的顺序是有道理的。

但是缺少什么数据? iris没有缺失数据。 然后我们如何查看创建的三个节点中的每一个节点中发生了什么?

假设我想在 C++ 中编写代码用于生产,除了知道您应该根据Petal.Width >.8做一些不同的事情之外,我不知道如何编写代码。

谢谢,

乔什

请参阅软件包mlmeta中的函数gbm2sas ,该函数使用元编程将R对象转换为SAS格式。

SAS格式类似于C ++,因此对C ++既易于阅读又易于破解。

在与 QTD 价格图表相同的图表中生成路径

paths_df = pd.DataFrame(data=paths[:, :10],
                        index=pd.date_range(start="2022-08-19", periods = 11, freq="B"))

ax = AAPL["2022-07":].plot()
paths_df.plot(ax=ax,
              legend=False,
              title="AAPL",
              ylabel="Price");`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM