आर में एक तंत्रिका नेटवर्क मॉडल को कैसे प्रशिक्षित और मान्य किया जाए?


33

मैं तंत्रिका नेटवर्क के साथ मॉडलिंग करने के लिए नया हूं, लेकिन मैंने सभी उपलब्ध डेटा बिंदुओं के साथ एक तंत्रिका नेटवर्क स्थापित करने में कामयाबी पाई जो अवलोकन किए गए डेटा को अच्छी तरह से फिट करता है। तंत्रिका नेटवर्क R में nnet पैकेज के साथ किया गया था:

require(nnet)      
##33.8 is the highest value
mynnet.fit <- nnet(DOC/33.80 ~ ., data = MyData, size = 6, decay = 0.1, maxit = 1000)      
mynnet.predict <- predict(mynnet.fit)*33.80  
mean((mynnet.predict - MyData$DOC)^2) ## mean squared error was 16.5      

मैं जिस डेटा का विश्लेषण कर रहा हूं वह इस प्रकार है, जहां DOC वह चर है जिसे मॉडलिंग करना है (लगभग 17,000 संस्करण हैं):

      Q  GW_level Temp   t_sum   DOC
1 0.045    0.070 12.50     0.2 11.17
2 0.046    0.070 12.61     0.4 11.09
3 0.046    0.068 12.66     2.8 11.16
4 0.047    0.050 12.66     0.4 11.28
5 0.049    0.050 12.55     0.6 11.45
6 0.050    0.048 12.45     0.4 11.48

अब, मैंने पढ़ा है कि मॉडल को 70% डेटा बिंदुओं के साथ प्रशिक्षित किया जाना चाहिए, और 30% डेटा बिंदुओं को हटाने के साथ मान्य होना चाहिए। मैं यह कैसे करु? मुझे किन कार्यों का उपयोग करना है?

मैंने आकार और क्षय के मापदंडों की गणना करने के लिए कैरेट पैकेज से ट्रेन फ़ंक्शन का उपयोग किया।

require(caret)
my.grid <- expand.grid(.decay = c(0.5, 0.1), .size = c(5, 6, 7))
mynnetfit <- train(DOC/33.80 ~ ., data = MyData, method = "nnet", maxit = 100, tuneGrid = my.grid, trace = f)

अन्य वेबसाइटों / पदों के लिए किसी भी प्रत्यक्ष सहायता या लिंकेज की बहुत सराहना की जाती है।


6
दरअसल, ट्रेन / टेस्ट स्प्लिट मेथडॉलॉजी सब-वे है, क्योंकि आपके एल्गोरिथ्म का प्रदर्शन विभाजन बिंदु के आपकी पसंद के आधार पर काफी भिन्न हो सकता है (मैंने 5% अंतर देखा है ...)। बेहतर कार्यप्रणाली क्रॉस सत्यापन है।
जॉन डकेट २५'१२

जवाबों:


36

मैक्स कुह्न की कैरेट मैनुअल - मॉडल बिल्डिंग एक शानदार शुरुआती बिंदु है।

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

आप अपने डेटा सेट को प्रशिक्षण और परीक्षण सेट में विभाजित करने के लिए क्रिएट में createDataPartition () फ़ंक्शन का उपयोग कर सकते हैं। मैंने कार पैकेज से प्रेस्टीज डेटा सेट का उपयोग करके इसका परीक्षण किया, जिसमें शिक्षा के स्तर और व्यावसायिक प्रतिष्ठा से संबंधित आय के बारे में जानकारी है:

library(car)
library(caret)
trainIndex <- createDataPartition(Prestige$income, p=.7, list=F)
prestige.train <- Prestige[trainIndex, ]
prestige.test <- Prestige[-trainIndex, ]

CreateDataPartition () फ़ंक्शन थोड़ा गलत लगता है क्योंकि यह आपके लिए विभाजन नहीं बनाता है, बल्कि अनुक्रमित का एक वेक्टर प्रदान करता है जिसे आप प्रशिक्षण और परीक्षण सेट बनाने के लिए उपयोग कर सकते हैं। यह इस अपने आप को ऐसा करने के लिए बहुत आसान नमूना (), लेकिन एक बात createDataPartition (का उपयोग कर अनुसंधान में) जाहिरा तौर पर करते हैं कारक स्तर के भीतर से है करता है नमूना। इसके अलावा, यदि आपका परिणाम स्पष्ट है, तो वितरण को डेटा विभाजन में बनाए रखा जाता है। यह इस मामले में प्रासंगिक नहीं है, हालांकि, चूंकि आपका परिणाम निरंतर है।

अब आप प्रशिक्षण सेट पर अपने मॉडल को प्रशिक्षित कर सकते हैं:

my.grid <- expand.grid(.decay = c(0.5, 0.1), .size = c(5, 6, 7))
prestige.fit <- train(income ~ prestige + education, data = prestige.train,
    method = "nnet", maxit = 1000, tuneGrid = my.grid, trace = F, linout = 1)    

एक तरफ: मैं एक प्रतिगमन (बनाम वर्गीकरण) समस्या के साथ काम करने के लिए nnet पाने के लिए linout पैरामीटर को जोड़ना पड़ा। अन्यथा मुझे मॉडल से अनुमानित मूल्यों के रूप में सभी 1s मिले।

आप परीक्षण डेटा सेट का उपयोग करके फिट ऑब्जेक्ट पर पूर्वानुमान को कॉल कर सकते हैं और परिणामों से RMSE की गणना कर सकते हैं:

prestige.predict <- predict(prestige.fit, newdata = prestige.test)
prestige.rmse <- sqrt(mean((prestige.predict - prestige.test$income)^2)) 

लगता है आपका मैक्स कुह्न लिंक मर गया है।
EngrStudent -

मैं मैक्स कुह्न के पुस्तक मिली है तो उसे यहां छिपा हुआ है: feat.engineering
चंचल बीन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.