วิธีการฝึกอบรมข้อมูลที่มีประสิทธิภาพที่สุดโดยใช้หน่วยความจำน้อยที่สุดคืออะไร?


10

นี่คือข้อมูลการฝึกอบรมของฉัน: 200,000 ตัวอย่าง x 10,000 คุณสมบัติ เมทริกซ์ข้อมูลการฝึกอบรมของฉันคือ - 200,000 x 10,000

ฉันจัดการเพื่อบันทึกสิ่งนี้ในไฟล์ flat โดยไม่ต้องมีปัญหาหน่วยความจำโดยบันทึกทุกชุดข้อมูลหนึ่งโดยหนึ่ง (หนึ่งตัวอย่างหลังจากที่อื่น) ในขณะที่ฉันสร้างคุณสมบัติสำหรับแต่ละตัวอย่าง

แต่ตอนนี้เมื่อฉันใช้Milk , SVM lightหรืออัลกอริทึมการเรียนรู้ของเครื่องจักรอื่น ๆ ทุกอย่างพยายามโหลดข้อมูลการฝึกอบรมทั้งหมดลงในหน่วยความจำแทนการฝึกอบรมทีละคน อย่างไรก็ตามฉันเพิ่งมี RAM 8 GB ดังนั้นฉันจึงไม่สามารถดำเนินการต่อได้

คุณรู้หรือไม่ว่าฉันสามารถฝึกอัลกอริทึมหนึ่งชุดข้อมูลโดยหนึ่งชุดข้อมูล? นั่นคือเพื่อที่ทันทีฉันมีเพียงหนึ่งชุดข้อมูลที่โหลดลงในหน่วยความจำในขณะที่การฝึกอบรม


1
คุณหมายถึงอะไรโดย "บันทึกทุกชุดข้อมูลทีละชุด" คุณหมายถึง "ทุกบรรทัดของข้อมูลหรือไม่" หากคุณมีชุดข้อมูลหลายชุดซึ่งคุณบันทึกไว้ทีละชุดทำไมไม่โหลดชุดข้อมูลทีละชุดแล้วใส่อัลกอริทึมให้เหมาะกับแต่ละชุด
Zach

1
"หนึ่งชุดข้อมูลโดยหนึ่งชุดข้อมูล" หมายถึงทีละบรรทัดหรือไม่ คือหนึ่งชุดข้อมูล = 10,000 คุณสมบัติ? หากเป็นกรณีที่แล้วอัลกอริทึมออนไลน์อาจจะมีอะไรบางอย่างที่คุณกำลังมองหาดู: en.wikipedia.org/wiki/Online_algorithmและen.wikipedia.org/wiki/Online_machine_learning มีเวอร์ชันออนไลน์สำหรับอัลกอริทึมการเอนด้วยเครื่องหลายตัวอย่างเช่น SVM และฟอเรสต์แบบสุ่ม
Herra Huu

ขอบคุณ .. Zach และ Herra ฉันแก้ไขคำถามเพื่อให้ชัดเจนยิ่งขึ้นไปทีละคน และใช่ฉันคิดว่าการเรียนรู้ออนไลน์ แต่ไม่เคยคิดเกี่ยวกับอัลกอริทึมออนไลน์ให้ฉันอ่านและลองทำดู
madCode

คำตอบ:


4

ผมเชื่อว่าคำว่าสำหรับประเภทของการเรียนรู้นี้คือออกจากแกนกลางการเรียนรู้ หนึ่งข้อเสนอแนะคือvowpal wabbitซึ่งมีห้องสมุด R สะดวกเช่นเดียวกับห้องสมุดสำหรับภาษาอื่น ๆ อีกมากมาย


ฉันมีปัญหาการอ้างอิงกับการเพิ่มในขณะที่ติดตั้ง คุณมีความคิดว่าทำไมฉันถึงได้รับสิ่งนี้ bit.ly/L939DO
madCode

@madCode ฉันไม่เคยใช้ vowpal wabbit ดังนั้นฉันไม่สามารถช่วยคุณติดตั้งได้ ฉันได้ยินมาว่ารายชื่อผู้รับจดหมายของพวกเขายอดเยี่ยมและฉันแน่ใจว่าคุณสามารถขอความช่วยเหลือได้ที่นี่
Zach

Hey..Zach มันใช้งานได้ดี ฉันได้รับการติดตั้งและให้การคาดการณ์ ขอบคุณ :-)
madCode

1

ฉันขอแนะนำให้ซัคอย่างเต็มที่ vowpal wabbit เป็นตัวเลือกที่ยอดเยี่ยมและคุณจะแปลกใจกับความเร็วของมัน ชุดข้อมูล 200k คูณ 10k นั้นไม่ถือว่าใหญ่มากตามบรรทัดฐานของ vowpal wabbit

vowpal_wabbit (มีให้ในรูปแบบของแหล่งที่มาผ่านhttps://github.com/JohnLangford/vowpal_wabbitเวอร์ชั่นเก่านั้นมีให้ใช้งานเป็นแพ็คเกจมาตรฐานใน Ubuntu Ubuntu) เป็นระบบเรียนรู้เชิงเส้น + bilinear ออนไลน์ที่รวดเร็วและมีอินพุตที่ยืดหยุ่นมาก คุณสามารถผสมผสานคุณสมบัติเลขฐานสองและตัวเลข ไม่จำเป็นต้องกำหนดหมายเลขคุณสมบัติตามที่ชื่อตัวแปรจะใช้งานได้ "ตามสภาพ" มีตัวเลือกมากมายอัลกอริทึมการลดฟังก์ชันการสูญเสียและความยืดหยุ่นที่ยอดเยี่ยมทั้งหมด คุณสามารถเข้าร่วมรายชื่อผู้รับจดหมาย (ค้นหาได้จาก GitHub) และถามคำถามใด ๆ ชุมชนมีความรู้และสนับสนุนมาก


1

ฉันตอบคำถามที่คล้ายกันที่นี่ จุดคืออัลกอริธึมการเรียนรู้ของเครื่องจักร / การขุดข้อมูลส่วนใหญ่เป็นชุดผู้เรียนที่พวกเขาโหลดข้อมูลทั้งหมดไปยังหน่วยความจำ ดังนั้นคุณต้องใช้เครื่องมือต่าง ๆ สำหรับชุดข้อมูลที่มีขนาดใหญ่อย่างที่คุณมี ดูเครื่องมือของคำถามด้วย

การเรียนรู้ออนไลน์เป็นวิธีการลดรอยเท้าหน่วยความจำของอัลกอริทึม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.