[英]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==2
是Petal.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.