2013-03-25 6 views
9

के इष्टतम मानकों को खोजने के लिए कैरेट पैकेज का उपयोग करके मैं 10,000 जी 9 32 आयामों के कुछ जैविक डेटा पर रिग्रेशन करने के लिए आर जीबीएम पैकेज का उपयोग कर रहा हूं और मैं जानना चाहता हूं कि जीबीएम पैकेज के लिए सबसे अच्छी पैरामीटर सेटिंग्स क्या हैं (n.trees, shrinkage, interaction.depth और n.minobsinnode) जब मैंने ऑनलाइन खोज की तो मुझे पता चला कि आर पर CARET पैकेज ऐसी पैरामीटर सेटिंग्स पा सकता है। हालांकि, मुझे जीबीएम पैकेज के साथ कैरेट पैकेज का उपयोग करने में कठिनाई है, इसलिए मैं सिर्फ यह जानना चाहता हूं कि पहले उल्लिखित पैरामीटर के इष्टतम संयोजनों को खोजने के लिए कैरेट का उपयोग कैसे किया जाए? मुझे पता है कि यह बहुत ही सामान्य प्रश्न प्रतीत हो सकता है, लेकिन मैंने कैरेट मैनुअल पढ़ा है और अभी भी जीबीएम के साथ कैरेट को एकीकृत करने में कठिनाई है, विशेष रूप से क्योंकि मैं इन दोनों पैकेजों के लिए बहुत नया हूंजीबीएम

उत्तर

13

इस लिंक में एक ठोस उदाहरण है (पेज 10) - http://www.jstatsoft.org/v28/i05/paper

असल में, किसी को पहले हाइपर पैरामीटर (जैसे n.trees, interaction.depth और shrinkage) के लिए उम्मीदवार मानों का ग्रिड बनाना चाहिए। फिर जेनेरिक ट्रेन फ़ंक्शन को सामान्य रूप से कॉल करें।

13

सुनिश्चित नहीं है कि आप जो खोज रहे थे उसे मिला, लेकिन मुझे इनमें से कुछ चादरें सहायक से कम मिलती हैं।

आप कैरट पैकेज का उपयोग कर रहे हैं, तो निम्न का वर्णन आवश्यक पैरामीटर:> getModelInfo() $ जीबीएम $ पैरामीटर

वह चल जीबीएम के अंगूठे के कुछ नियम हैं:

  1. बातचीत। गहराई 1 है, और अधिकांश डेटा सेटों पर पर्याप्त लगता है, लेकिन कुछ लोगों ने पाया है कि के विरुद्ध परिणामों का परीक्षण करने से अधिकतम परिणामों ने बेहतर परिणाम दिए हैं। अधिकतम पैरामीटर I इस पैरामीटर के लिए देखा गया है फर्श (वर्ग (एनसीओएल (प्रशिक्षण)))।
  2. हटना: संख्या जितनी छोटी होगी, अनुमानित मूल्य बेहतर होगा, अधिक पेड़ आवश्यक हैं, और अधिक कम्प्यूटेशनल लागत। परीक्षण डेटा के एक छोटे से सबसेट पर मूल्य जैसे संकुचन = संकोचन = seq (.0005, .05, .0005) आदर्श मान को परिभाषित करने में सहायक हो सकता है।
  3. n.minobsinnode: डिफ़ॉल्ट 10 है, और आम तौर पर मैं इसके साथ गड़बड़ नहीं करता हूं। मैंने डेटा के छोटे सेट पर सी (5,10,15,20) की कोशिश की है, और वास्तव में कम्प्यूटेशनल लागत के लिए पर्याप्त वापसी नहीं देखता है।
  4. n.trees: संकोचन जितना छोटा होगा, उतना पेड़ जो आपके पास होना चाहिए। n.trees = (0:50) * 50 के साथ प्रारंभ करें और तदनुसार समायोजित करें।

उदाहरण कैरट पैकेज का उपयोग स्थापना:

getModelInfo()$gbm$parameters 
library(parallel) 
library(doMC) 
registerDoMC(cores = 20) 
# Max shrinkage for gbm 
nl = nrow(training) 
max(0.01, 0.1*min(1, nl/10000)) 
# Max Value for interaction.depth 
floor(sqrt(NCOL(training))) 
gbmGrid <- expand.grid(interaction.depth = c(1, 3, 6, 9, 10), 
        n.trees = (0:50)*50, 
        shrinkage = seq(.0005, .05,.0005), 
        n.minobsinnode = 10) # you can also put something  like c(5, 10, 15, 20) 

fitControl <- trainControl(method = "repeatedcv", 
         repeats = 5, 
         preProcOptions = list(thresh = 0.95), 
         ## Estimate class probabilities 
         classProbs = TRUE, 
         ## Evaluate performance using 
         ## the following function 
         summaryFunction = twoClassSummary) 

# Method + Date + distribution 
set.seed(1) 
system.time(GBM0604ada <- train(Outcome ~ ., data = training, 
      distribution = "adaboost", 
      method = "gbm", bag.fraction = 0.5, 
      nTrain = round(nrow(training) *.75), 
      trControl = fitControl, 
      verbose = TRUE, 
      tuneGrid = gbmGrid, 
      ## Specify which metric to optimize 
      metric = "ROC")) 

चीजें (वितरण) की तरह अपने डेटा के आधार पर बदल सकते हैं, लेकिन मैं कुंजी किया जा रहा है जब तक आप परिणाम आप कर रहे हैं पाने के gbmgrid साथ खेलने के लिए मिल गया है खोज रहे हैं सेटिंग्स के रूप में अब चलने में लंबा समय लगेगा, इसलिए अपनी मशीन के रूप में संशोधित करें, और समय की अनुमति होगी। आपको गणना का एक ballpark देने के लिए, मैं 64 जीबी रैम के साथ मैक प्रो 12 कोर पर चलाता हूं।

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