[英]variable importance in multiclass
我有一個像 iris 這樣的數據集,我的 y 是一個多類因子變量。 有什么方法可以看到method = rf
、 method = treebag
和method = boost
的相同結果,非常感謝。
data(iris); head(iris)
iris$Species <- factor(iris$Species)
set.seed(87)
inTrainingSet <- createDataPartition(iris$Species, p=.80,list=0)
train <- iris[inTrainingSet,]
test <- iris[-inTrainingSet,]
ctrl <- trainControl(method = "cv", number = 2, verboseIter = TRUE)
pls <- train(Species ~ Sepal.Length+Sepal.Width+Petal.Length+Petal.Width ,
method = "pls", data = iris,
trControl = ctrl)
attributes(varImp(pls))
varImp(pls)$importance
你的問題有幾點,所以如果有一個內置的方法來為每個模型正確估計這個,你可以使用默認的useModel = FALSE
運行 varImp 。
對於隨機森林,您在擬合時添加importance=TRUE
:
rf <- train(Species ~ Sepal.Length+Sepal.Width+Petal.Length+Petal.Width ,
method = "rf", data = iris,
trControl = ctrl,importance=TRUE)
varImp(rf)
rf variable importance
variables are sorted by maximum importance across the classes
setosa versicolor virginica
Petal.Length 66.94 100.00 85.40
Petal.Width 63.86 92.22 89.87
Sepal.Length 16.75 24.05 24.90
Sepal.Width 12.75 0.00 17.49
如果模型沒有內置的多類,則使用成對 roc 曲線來推導這些重要性,請參閱有關此特殊性的脫字符頁:
tb <- train(Species ~ Sepal.Length+Sepal.Width+Petal.Length+Petal.Width ,
method = "treebag", data = iris,
trControl = ctrl,importance=TRUE)
varImp(tb,useModel=TRUE)
treebag variable importance
Overall
Petal.Length 100.00
Petal.Width 99.17
Sepal.Length 32.23
Sepal.Width 0.00
varImp(tb,useModel=FALSE)
ROC curve variable importance
variables are sorted by maximum importance across the classes
setosa versicolor virginica
Petal.Width 100.00 100.00 100.0
Petal.Length 100.00 100.00 100.0
Sepal.Length 90.70 59.30 90.7
Sepal.Width 54.59 54.59 0.0
您沒有指定使用哪種提升樹方法,但我想您可以輕松使用上述選項之一
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.