कम से कम मेमोरी का उपयोग करके प्रशिक्षण डेटा का सबसे कुशल तरीका क्या है?


10

यह मेरा प्रशिक्षण डेटा है: 200,000 उदाहरण x 10,000 सुविधाएँ। तो मेरा प्रशिक्षण डेटा मैट्रिक्स है - 200,000 x 10,000।

मैंने प्रत्येक फ़िमेल को एक-एक करके (एक के बाद एक उदाहरण) सहेज कर मेमोरी मुद्दों के बिना एक सपाट फ़ाइल में इसे सहेजने में कामयाबी हासिल की, क्योंकि मैं प्रत्येक उदाहरण के लिए सुविधाएँ उत्पन्न करता हूँ।

लेकिन, अब जब मैं दूध , एसवीएम प्रकाश , या किसी अन्य मशीन लर्निंग एल्गोरिथम का उपयोग करता हूं , तो सब कुछ एक-एक करके प्रशिक्षण के बजाय पूरे प्रशिक्षण डेटा को मेमोरी में लोड करने की कोशिश करता है। हालाँकि मेरे पास सिर्फ 8 जीबी रैम है, इसलिए मैं इस तरह आगे नहीं बढ़ सकता।

क्या आप जानते हैं कि वैसे भी मैं एल्गोरिथ्म को एक डाटासेट द्वारा एक डाटासेट को प्रशिक्षित कर सकता था? Ie, ताकि किसी भी पल मैं प्रशिक्षण के दौरान सिर्फ एक डेटासेट मेमोरी में लोड हो।


1
"एक-एक करके हर डेटासेट को सेव करें" से आपका क्या मतलब है? क्या आपका मतलब है "डेटा की हर पंक्ति?" यदि आपके पास एक से अधिक डेटासेट हैं, जिन्हें आप एक-एक करके सहेजते हैं, तो उन्हें एक-एक करके लोड क्यों न करें और हर एक को एल्गोरिथ्म फिट करें?
ज़च

1
क्या "एक डेटासेट द्वारा एक डेटासेट" का मतलब लाइन द्वारा लाइन है? यानी एक डाटासेट = 10000 सुविधाएँ? यदि ऐसा है, तो ऑनलाइन एल्गोरिदम कुछ ऐसा हो सकता है, जिसे आप ढूंढ रहे हैं, देखें: en.wikipedia.org/wiki/Online_algorithm और en.wikipedia.org/wiki/Online_machine_learning । कई मशीन झुकाव एल्गोरिदम के लिए ऑनलाइन संस्करण मौजूद है, उदाहरण के लिए SVM और यादृच्छिक वन।
हेररा हुई

धन्यवाद .. ज़च और हेर्रा। मैंने एक-एक करके स्पष्ट रूप से परिभाषित करने के लिए प्रश्न संपादित किया। और हाँ, मैं ऑनलाइन लर्निंग के बारे में सोच रहा था, लेकिन ऑनलाइन एल्गोरिदम के बारे में कभी नहीं सोचा था, मुझे उस पर पढ़ना चाहिए और इसे आज़माना चाहिए।
मैडकोड

जवाबों:


4

मेरा मानना ​​है कि इस प्रकार के सीखने का शब्द आउट ऑफ कोर लर्निंग है। एक सुझाव है, वॉवेल वॉबिट , जिसमें एक सुविधाजनक आर लाइब्रेरी है , साथ ही कई अन्य भाषाओं के लिए लाइब्रेरी भी है।


मैं इसे स्थापित करते समय बढ़ावा देने के साथ निर्भरता के मुद्दे कर रहा हूँ। क्या आपको इस पर कोई विचार है कि मुझे यह क्यों मिला? bit.ly/L939DO
madCode

@ कामकोड मैं वास्तव में vowpal wabbit का उपयोग नहीं किया है, इसलिए मैं आपको इसे स्थापित करने में मदद नहीं कर सकता। मैंने सुना है कि उनकी मेलिंग सूची उत्कृष्ट है, और मुझे यकीन है कि आप इसे स्थापित करने के लिए मदद पा सकते हैं।
ज़च

Hey..Zach। यह ठीक काम किया। मैंने इसे स्थापित किया और मुझे भविष्यवाणियां भी दीं। धन्यवाद :-)
मैडकोड

1

मैं दिल से दूसरा ज़ैच का सुझाव देता हूं। vowpal wabbit एक उत्कृष्ट विकल्प है, और आपको इसकी गति से आश्चर्य होगा। एक 200k द्वारा 10k डेटा-सेट को vowpal wabbit के मानदंडों से बड़ा नहीं माना जाता है।

vowpal_wabbit ( https://github.com/JohnLangford/vowpal_wabbit के माध्यम से स्रोत रूप में उपलब्ध है , एक पुराना संस्करण उबंटू ब्रह्मांड में एक मानक पैकेज के रूप में उपलब्ध है) एक तेज ऑनलाइन रैखिक + बिलिनियर शिक्षार्थी है, जिसमें बहुत लचीला इनपुट है। आप द्विआधारी और संख्यात्मक-मूल्यवान सुविधाओं का मिश्रण कर सकते हैं। "नाम" के रूप में काम करने वाले चर नाम के रूप में सुविधाओं की संख्या की कोई आवश्यकता नहीं है। इसमें एक टन विकल्प, एल्गोरिदम, कटौती, हानि-कार्य और सभी में शानदार लचीलापन है। आप मेलिंग सूची में शामिल हो सकते हैं (इसे जीथब के माध्यम से पा सकते हैं) और कोई भी प्रश्न पूछ सकते हैं। समुदाय बहुत ही ज्ञानवर्धक और सहायक है।


1

मैंने यहां भी इसी तरह के सवाल का जवाब दिया । पॉइंट अधिकांश मशीन लर्निंग / डेटा माइनिंग एल्गोरिदम बैच लर्निंग हैं जो वे सभी डेटा को मेमोरी में लोड करते हैं। इसलिए आपके पास बहुत बड़े डेटा सेट के लिए अलग-अलग उपकरण होने चाहिए। उस प्रश्न के उपकरण भी देखें।

ऑनलाइन लर्निंग एल्गोरिदम के मेमोरी फुटप्रिंट को कम करने का एक तरीका है।

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