เป็นไปได้หรือไม่ที่จะผนวกข้อมูลการฝึกอบรมเข้ากับโมเดล SVM ที่มีอยู่


14

ฉันใช้ libsvm และสังเกตว่าทุกครั้งที่ฉันเรียก svmtrain () ฉันจะสร้างรูปแบบใหม่และดูเหมือนว่าจะไม่มีตัวเลือกในการใส่ข้อมูลในรูปแบบที่มีอยู่ เป็นไปได้ที่จะทำอย่างไร ฉันแค่ไม่เห็นแง่มุมนี้ใน libsvm?


ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดย 'ใส่ข้อมูลในโมเดลที่มีอยู่' คุณสามารถยกตัวอย่างของเทคนิคอื่น ๆ (ไม่ใช่ SVM) ที่อนุญาตให้คุณทำเช่นนี้ได้หรือไม่? ใช้ตัวอย่างการถดถอยโลจิสติก; หากคุณเพิ่มข้อมูลใหม่คุณจะได้รับชุดฝึกอบรมร่วมใหม่ชุดใหม่ที่มีอยู่โดยไม่ต้องอ้างอิงว่าข้อมูลใดเป็น 'ใหม่' หรือ 'เก่า' ทั้งหมดนี้เป็นเพียงข้อมูลการฝึกอบรม ฉันเดาว่าคุณกำลังใช้ตัวแก้ประเภทลาดไล่ระดับสีคุณสามารถประหยัดเวลาได้ด้วยการเริ่มต้นที่ค่าที่ปรับให้เหมาะสมก่อนหน้านี้ซึ่งอาจใกล้เคียงกับโซลูชันใหม่ นี่คือสิ่งที่คุณหมายถึงอะไร
Bogdanovist

คำตอบ:


17

ดูเหมือนว่าคุณกำลังมองหาอัลกอริทึมการเรียนรู้ "ส่วนเพิ่ม" หรือ "ออนไลน์" อัลกอริทึมเหล่านี้ให้คุณอัปเดตตัวจําแนกด้วยตัวอย่างใหม่โดยไม่ต้องอบรมใหม่ทั้งหมดตั้งแต่ต้น

เป็นไปได้แน่นอนด้วยการสนับสนุนเครื่องเวกเตอร์ แต่ฉันเชื่อว่า libSVM ไม่รองรับในปัจจุบัน มันอาจจะคุ้มค่าที่จะดูแพ็คเกจอื่น ๆ ที่มีให้รวมถึง

PS: @Bogdanovist: มันมีวรรณกรรมที่กว้างขวางเกี่ยวกับเรื่องนี้ kNN ชัดเจนและเพิ่มขึ้นเล็กน้อย หนึ่งสามารถเปลี่ยนลักษณนามเบส์บาง (บาง) เป็นลักษณนามที่เพิ่มขึ้นโดยการเก็บนับแทนความน่าจะเป็น STAGGER, AQ * และบางส่วน (แต่ไม่ใช่ทั้งหมด) ของตระกูล ID * ของอัลกอริธึมโครงสร้างการตัดสินใจก็เพิ่มขึ้นเช่นกัน


1
ที่น่าสนใจขอบคุณสำหรับหัวขึ้น ฉันเคยเห็นคำว่า 'ออนไลน์' มาก่อนแล้ว แต่ไม่ได้ตระหนักถึงความสำคัญทางเทคนิค (ฉันคิดว่ามันหมายถึง 'can haz internetz')
Bogdanovist

ดีใจที่ได้ช่วยเหลือ! ฉันควรจะกล่าวถึงข้างต้น แต่อัลกอริทึมแบบออนไลน์ / ส่วนเพิ่มจะให้น้ำหนักกับตัวอย่าง "รุ่นใหม่ล่าสุด" ซึ่งอาจมีหรือไม่มีประโยชน์ขึ้นอยู่กับแอปพลิเคชันของคุณ (เช่นเหมาะสำหรับการคาดคะเนหัวข้อทวิตเตอร์ การวิจัย).
Matt Krause

12

ยูทิลิตี้ SVM ออนไลน์ / ส่วนเพิ่มส่วนใหญ่นั้นเป็นของเมล็ดเชิงเส้นและฉันคิดว่ามันไม่ยากอย่างที่มันเป็นสำหรับเมล็ดที่ไม่ใช่เชิงเส้น

บางส่วนของเครื่องมือ SVM แบบออนไลน์ / ส่วนเพิ่มที่โดดเด่นมีอยู่ในปัจจุบัน:
+ LaSVM ของ Leon Bottous : รองรับทั้งเมล็ดเชิงเส้นและไม่ใช่เชิงเส้น รหัส C ++
+ LaRank ของ Bordes : รองรับทั้งเชิงเส้นและไม่เชิงเส้น รหัส C ++ ดูเหมือนว่าลิงก์จะถูกทำลายในขณะนี้ :-( เพิ่ม
+ + รหัส Gert Cauwenberghs ' : สนับสนุนทั้งเมล็ดเชิงเส้นและไม่เชิงเส้นรหัส Matlab
+ การเรียนรู้ที่เพิ่มขึ้น SVM คริส Diehl : สนับสนุนทั้งเชิงเส้นและไม่ใช่เชิงเส้นรหัส Matlab
+ Alistair SVMHeavy ของ Shilton : การจำแนกและการถดถอยแบบไบนารีเท่านั้นรหัส C ++
+ Francesco Parrella's OnlineSVR: การถดถอยเท่านั้น Matlab และ C ++
+ Pegasos : ทั้งเชิงเส้นและไม่เชิงเส้น รหัส C และ Matlab อินเตอร์เฟซจาวา
+ Vowpal Wabbit ของ Langford : ไม่แน่ใจ :-(
+ MCSVM ของ Koby Crammer : ทั้งเชิงเส้นและไม่เชิงเส้นรหัส C

รายการปรับปรุงเพิ่มเติมสามารถพบได้ในคำตอบของฉัน Quora


(+1) ยินดีต้อนรับสู่เว็บไซต์ นั่นเป็นรายการที่ครบถ้วนสมบูรณ์! :)
สำคัญ

4

ความเป็นไปได้อีกอย่างก็คือ อัลฟาเพาะ ฉันไม่ทราบว่า libSVM รองรับหรือไม่ ความคิดคือการแบ่งข้อมูลการฝึกอบรมจำนวนมากเป็นส่วน ๆ จากนั้นคุณฝึก SVM ในก้อนแรก เนื่องจากเวกเตอร์สนับสนุนที่ได้นั้นเป็นเพียงส่วนหนึ่งของข้อมูลของคุณคุณจึงนำสิ่งเหล่านั้นมาใช้เพื่อฝึก SVM ของคุณด้วยอันถัดไป นอกจากนี้คุณใช้ SVM นั้นเพื่อคำนวณการประมาณค่าเริ่มต้นของค่าอัลฟาสำหรับการคำนวณซ้ำครั้งถัดไป ดังนั้นข้อดีคือสองเท่า: แต่ละปัญหามีขนาดเล็กลงและผ่านการเริ่มต้นอย่างชาญฉลาดที่พวกเขามาบรรจบกันได้เร็วขึ้น วิธีนี้ช่วยให้คุณลดปัญหาใหญ่ลงในการแก้ลำดับขั้นตอนที่ง่ายขึ้นตามลำดับ


มีห้องสมุดใดบ้างที่ใช้วิธีนี้?
d.putto

เห็นได้ชัดว่า libsvm ได้ทำไปแล้วหรืออย่างน้อยก็ตัวแปรบางส่วนของอัลกอริทึมwork.caltech.edu/~htlin/program/libsvm
jpmuc

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