2013-09-02 10 views
11

मैं किसी भी तरह से एक आरएफ मॉडल के चरणीय महत्व प्राप्त करने की कोशिश कर रहा हूं। यह वह दृष्टिकोण है जिसे मैंने अभी तक आजमाया है, लेकिन वैकल्पिक सुझावों का बहुत स्वागत है।कैरेट पैकेज (त्रुटि) का उपयोग कर परिवर्तनीय महत्व; RandomForest एल्गोरिदम

मैं आर में एक मॉडल को प्रशिक्षित किया है:

require(caret) 
require(randomForest) 
myControl = trainControl(method='cv',number=5,repeats=2,returnResamp='none') 
model2 = train(increaseInAssessedLevel~., data=trainData, method = 'rf', trControl=myControl) 

डाटासेट काफी बड़ी है, लेकिन मॉडल ठीक चलाता है। मैं अपने हिस्से का उपयोग कर सकते हैं और इस तरह के रूप कमांड चलाने:

> model2[3] 
$results 
    mtry  RMSE Rsquared  RMSESD RsquaredSD 
1 2 0.1901304 0.3342449 0.004586902 0.05089500 
2 61 0.1080164 0.6984240 0.006195397 0.04428158 
3 120 0.1084201 0.6954841 0.007119253 0.04362755 

लेकिन मैं निम्नलिखित त्रुटि मिलती है:

> varImp(model2) 
Error in varImp[, "%IncMSE"] : subscript out of bounds 

जाहिर है वहाँ एक आवरण माना जाता है, लेकिन यह मामला हो प्रतीत नहीं होता है : (सीएफ: http://www.inside-r.org/packages/cran/caret/docs/varImp)

varImp.randomForest(model2) 
Error: could not find function "varImp.randomForest" 

लेकिन यह विशेष रूप से अजीब है:

> traceback() 
No traceback available 

> sessionInfo() 
R version 3.0.1 (2013-05-16) 
Platform: x86_64-redhat-linux-gnu (64-bit) 

locale: 
[1] LC_CTYPE=en_GB.UTF-8  LC_NUMERIC=C    
[3] LC_TIME=en_GB.UTF-8  LC_COLLATE=en_GB.UTF-8  
[5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8 
[7] LC_PAPER=C     LC_NAME=C     
[9] LC_ADDRESS=C    LC_TELEPHONE=C    
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C  

attached base packages: 
[1] parallel stats  graphics grDevices utils  datasets methods 
[8] base  

other attached packages: 
[1] elasticnet_1.1  lars_1.2   klaR_0.6-9   MASS_7.3-26  
[5] kernlab_0.9-18  nnet_7.3-6   randomForest_4.6-7 doMC_1.3.0   
[9] iterators_1.0.6 caret_5.17-7  reshape2_1.2.2  plyr_1.8   
[13] lattice_0.20-15 foreach_1.4.1  cluster_1.14.4  

loaded via a namespace (and not attached): 
[1] codetools_0.2-8 compiler_3.0.1 grid_3.0.1  stringr_0.6.2 
[5] tools_3.0.1 

उत्तर

25

महत्व स्कोर में गणना करने में कुछ समय लग सकता है और उन्हें बनाने के लिए स्वचालित रूप से randomForest नहीं मिलेगा। importance = TRUEtrain पर कॉल करें और इसे काम करना चाहिए।

अधिकतम

3

यह train() ऑब्जेक्ट से प्राप्त किया गया है, यह एक शुद्ध यादृच्छिक वन मॉडल नहीं है, लेकिन विभिन्न वस्तुओं की एक सूची (जिसमें अंतिम मॉडल स्वयं के साथ-साथ क्रॉस-सत्यापन परिणाम आदि शामिल हैं)। आप उन्हें ls(model2) के साथ देख सकते हैं। तो अंतिम मॉडल का उपयोग करने के लिए बस varImp(model2$finalModel) पर कॉल करें।

+0

यह मेरे लिए काम नहीं करता है, मैंने इसे महत्व = TRUE जोड़कर काम किया है। –

संबंधित मुद्दे