簡體   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