簡體   English   中英

R 中有沒有辦法確定變量中的哪些水平在 GBM 預測模型中最重要?

[英]Is there a way in R to determine which levels within the variables are most important in the GBM predictive model?

我使用 R 中的 GBM 包構建了一個預測模型。我得到了很好的結果,並且我能夠查看特征重要性列表以查看哪些變量對模型最重要。 我正在努力解決編輯器詢問變量方向的問題。

例如:年齡變量:哪個年齡組最重要,而不是整體年齡?
region:哪個具體的區域,而不是作為整體的區域變量?

我在 LIME 中看到了一些實現,但是 GBM 包與 LIME 不兼容,我正在努力以其他方式實現它。 有沒有手動方法可以看到這個?

我目前的想法是一一運行 GBM 模型並比較結果。 例如,在區域 A 和所有其他區域相同的情況下運行,然后區域 B、C、D、E 等。比較最終結果並查看有關每個變量水平的更多信息。

有沒有人有進一步的建議或更快的解決方案? 謝謝

我想您使用的是 gbm 而不是 xgboost,但無論如何您始終可以將數據轉換為必要的格式。

您可以嘗試使用 onehot 編碼,這比一個一個測試變量好一點,因為模型暴露於所有變量。 下面不是一個很好的例子,因為我分割了一個連續變量,但希望在你的模型中分類更有意義:

library(MASS)
library(gbm)
library(highcharter)

data = Pima.te
age_cat = cut(data$age,4,labels = paste0("age",1:4))
onehot_bp = model.matrix(~0+age_cat)
data$type = as.numeric(data$type)-1
fit = gbm(type ~ .,data=cbind(data[,-grep("age",colnames(data))],onehot_bp))

res = summary(fit,plotit=FALSE)

hchart(res,"bar",hcaes(x=var,y=rel.inf,color=rel.inf))

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM