r语言 - 为什么不同的机器学习方法给出相同的变量重要性?



我正在比较使用插入符号的不同机器学习方法,但是尽管方法非常不同,我得到相同的变量贡献。

vNNet、ctree、enet、knn、M5、pcr、ridge、svmRadial给出相同的变量贡献。

其中一些将以importance = TRUE作为输入:vNNet, enet, knn, pcr, ridge, svmRadial do。其他生成的错误的重要性= TRUE: ctree, M5。(错误是"出了问题;所有RMSE度量值都丢失了:")

我的问题是为什么不同的方法给出相同的变量重要性?这似乎是错的,但我不知道我做错了什么。

library(ggplot2)
library(caret)
library(elasticnet)
library(party)
data_set <- diamonds[1:1000, c(1, 5, 6, 7, 8, 9, 10)]
formula <- price ~ carat + depth + table + x + y + z
set.seed(100)
enet_model <- train(formula,
                    importance = TRUE,
                    data = data_set,
                    method = "enet",
                    trControl = trainControl(method = "cv"),
                    preProc = c("center", "scale"))
set.seed(100)
ctree_model <- train(formula, 
                     data = data_set,
                     method = "ctree",
                     trControl = trainControl(method = "cv"))
set.seed(Set_seed_seed)
knn_model <- train(formula,
                   importance = TRUE,
                   data = data_set,
                   method = "knn",
                   preProc = c("center", "scale"),
                   tuneGrid = data.frame(k = 1:20),
                   trControl = training_control)
varImp(enet_model)
varImp(ctree_model)
varImp(knn_model)

我使用插入符号6.0-52

From ?varImp:

对于没有相应varImp方法的模型,参见filterVarImp

这些方法没有实现重要性分数,所以你得到了无模型的度量。我可以根据系数值为enet加1,但knnctree没有明显的方法。

最新更新