基于R的GBM模型抽取

enyaitl3  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(116)

有人熟悉如何在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==2Petal.Width,因为你在str(iris)中看到的顺序是有意义的。
但是丢失了什么数据呢?iris没有丢失数据。那么我们如何看到在创建的三个节点中的每一个节点中发生了什么?
假设我想用C++编写代码用于生产,我不明白除了知道你应该根据Petal.Width >.8做一些不同的事情之外,你怎么知道要写什么。
谢谢你,
约什

zzlelutf

zzlelutf1#

请参见mlmeta包中的gbm2sas函数,它使用元编程将R对象转换为SAS格式。
SAS格式类似于C++,因此它既容易阅读,也容易破解C++。

7gyucuyw

7gyucuyw2#

在与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");`

相关问题