2015-07-22 39 views
0

我使用脫字符比較不同的機器學習方法,但雖然方法非常不同,但我得到的變量貢獻相同。爲什麼不同的機器學習方法在插入符號中給出相同的變量重要性?

vNNet,ctree,enet,knn,M5,pcr,ridge,svmRadial給出相同的變量貢獻。

其中一些將採用重要= TRUE作爲輸入:vNNet,enet,knn,pcr,ridge,svmRadial。 其他人生成重要性爲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

+1

我們無法訪問'data_set_train'。 – 2015-07-22 08:16:23

+0

對不起,應該是data_set。固定。 – Matt

回答

1

?varImp

對於不具備相應varImp方法模型,看到filterVarImp

這些方法沒有實現重要性分數,因此您可以獲得無模型度量。我可以根據係數值爲enet添加一個,但knnctree沒有明顯的方法。

+0

感謝pepo!這就說得通了。該列表來自迴歸部分中的應用預測建模。本書中沒有重要分數的其他方法是avNNet,M5,pcr,ridge和svmRadial – Matt

相關問題