2011-11-21 14 views
5

मैं आर में knn का उपयोग करने की कोशिश कर रहा हूं (कई पैकेजों (knnflex, class) का उपयोग किया गया है) 8 चर के आधार पर डिफ़ॉल्ट की संभावना की भविष्यवाणी करने के लिए। डेटासेट 8 कॉलम की लगभग 100k लाइनें है, लेकिन मेरी मशीन को 10k लाइनों के नमूने के साथ कठिनाई हो रही है। किसी डेटासेट पर knn करने के लिए कोई सुझाव> 50 लाइनें (यानी iris)?आर knn बड़े डेटासेट

संपादित करें:

स्पष्ट करने के लिए कुछ मुद्दे हैं।

1) class और knnflex संकुल में उदाहरण थोड़ा स्पष्ट नहीं कर रहे हैं और अगर वहाँ कुछ randomForest पैकेज जहां आप इसे आप भविष्यवाणी करने के लिए चाहते हैं चर देने के लिए और डेटा आप के लिए उपयोग करना चाहते हैं के लिए इसी तरह कार्यान्वयन था मैं उत्सुक था

RF <- randomForest(x, y, ntree, type,...) 

तो बिलकुल पलट गया और परीक्षण डेटा सेट का उपयोग कर डेटा भविष्यवाणी करने के लिए मॉडल का उपयोग:

pred <- predict(RF, testData) 

2) मैं वास्तव में नहीं समझ रहा हूँ क्यों knn प्रशिक्षण चाहता मॉडल ट्रेन जी और मॉडल बनाने के लिए परीक्षण डेटा। जो मैं बता सकता हूं, पैकेज एक मैट्रिक्स ~ nrows(trainingData)^2 बनाता है जो अनुमानित डेटा के आकार पर ऊपरी सीमा भी प्रतीत होता है। मैंने 5000 पंक्तियों का उपयोग करके एक मॉडल बनाया (ऊपर # मुझे स्मृति आवंटन त्रुटियां मिलीं) और परीक्षण सेट> 5000 पंक्तियों की भविष्यवाणी करने में असमर्थ थी।

एक)) एक तरह से एक प्रशिक्षण में> 5000 लाइनों का उपयोग करने के लिए सेट

या

ख पूर्ण 100k तर्ज पर मॉडल का उपयोग करने के लिए एक रास्ता खोजने लगता है: इस प्रकार मैं या तो की आवश्यकता होगी।

+0

बस सोच रहा है कि आप अंततः प्रशिक्षण सेट आकार के संदर्भ में इसे कितना दूर करने के लिए प्रबंधित करते हैं? – ktdrv

+0

@ktdrv: मेरा मानना ​​है कि मैं पूरा डेटा सेट करने में कामयाब रहा। मैं 2 कारणों से 'देखभाल' पैकेज में knn कार्यान्वयन की सिफारिश करेंगे। सबसे पहले यह 'के' पैरामीटर को ट्यून करने की अनुमति देता है। दूसरा, यह सबसे तेज़ knn मॉडल है जिसका मैंने उपयोग किया है और यह समांतरता के लिए अनुमति देता है (हालांकि मुझे knn सामान के लिए एक विशाल पिकअप नहीं देखा गया था)। यहां उठने और चलाने के लिए स्पष्टीकरण और उदाहरणों का एक अच्छा सेट है: http://www.jstatsoft.org/v28/i05/paper – screechOwl

उत्तर

8

कारण यह है कि knn (में वर्ग) दोनों प्रशिक्षण और परीक्षण डाटा के लिए पूछता है कि अगर उसने ऐसा नहीं किया, "मॉडल" यह वापसी होगी बस प्रशिक्षण डेटा ही होगा।

प्रशिक्षण डेटा मॉडल मॉडल है।

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

ipred पैकेज कार्यों कि संरचित दिखाई देते हैं के रूप में आप का वर्णन प्रदान करता है, लेकिन अगर आप उनकी ओर देखो, तुम मूल रूप से "प्रशिक्षण" समारोह में हो रहा कुछ भी नहीं है कि वहाँ देखेंगे। सभी काम "भविष्यवाणी" समारोह में है। और वे वास्तव में क्रॉस सत्यापन के उपयोग से त्रुटि अनुमान के लिए उपयोग किए जाने वाले रैपर के रूप में लक्षित हैं।

जहां तक ​​मामलों की संख्या पर सीमाएं हैं, यह इस बात पर निर्भर करेगा कि आपके पास कितनी भौतिक स्मृति है। आप स्मृति आवंटन त्रुटियों मिल रहे हैं, तो आप या तो अपने RAM उपयोग कहीं और (करीब एप्लिकेशन आदि), आदि

कक्षा में knn समारोह रन ठीक कम करने के लिए और अधिक रैम खरीदने के लिए, एक नए कंप्यूटर खरीदने के लिए, की जरूरत है मेरे लिए 10k पंक्तियों या अधिक के प्रशिक्षण और परीक्षण डेटा सेट के साथ, हालांकि मेरे पास 8 जीबी रैम है।साथ ही, मुझे संदेह है कि वर्गknnflex से तेज होगा, लेकिन मैंने व्यापक परीक्षण नहीं किया है।

+0

सुझावों के लिए धन्यवाद। क्या big.matrix या ff जैसी चीजें प्रभावी काम-आसपास होंगी? – screechOwl

+0

@acesnap शायद; मुझे वास्तव में उन उपकरणों के साथ ज्यादा अनुभव नहीं है। अगर मैं आपके जूते में था, तो मैं बस अपने टेस्ट सेट को सबसे बड़े हिस्सों में तोड़ दूंगा जो 'knn' संभाल लेंगे और पूर्वानुमान एक समय में एक टुकड़ा करेगा। (और अधिक रैम खरीदें; यह बहुत सस्ता है!) – joran

+0

आप बेहतर 'कक्षा' संस्करण के बारे में सही थे। थोड़ा प्रारूप में काम करने के लिए बस जरूरी है। आपकी मदद और स्पष्टीकरण के लिए फिर से धन्यवाद। – screechOwl

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