ฉันใช้ libsvm และสังเกตว่าทุกครั้งที่ฉันเรียก svmtrain () ฉันจะสร้างรูปแบบใหม่และดูเหมือนว่าจะไม่มีตัวเลือกในการใส่ข้อมูลในรูปแบบที่มีอยู่ เป็นไปได้ที่จะทำอย่างไร ฉันแค่ไม่เห็นแง่มุมนี้ใน libsvm?
ฉันใช้ libsvm และสังเกตว่าทุกครั้งที่ฉันเรียก svmtrain () ฉันจะสร้างรูปแบบใหม่และดูเหมือนว่าจะไม่มีตัวเลือกในการใส่ข้อมูลในรูปแบบที่มีอยู่ เป็นไปได้ที่จะทำอย่างไร ฉันแค่ไม่เห็นแง่มุมนี้ใน libsvm?
คำตอบ:
ดูเหมือนว่าคุณกำลังมองหาอัลกอริทึมการเรียนรู้ "ส่วนเพิ่ม" หรือ "ออนไลน์" อัลกอริทึมเหล่านี้ให้คุณอัปเดตตัวจําแนกด้วยตัวอย่างใหม่โดยไม่ต้องอบรมใหม่ทั้งหมดตั้งแต่ต้น
เป็นไปได้แน่นอนด้วยการสนับสนุนเครื่องเวกเตอร์ แต่ฉันเชื่อว่า libSVM ไม่รองรับในปัจจุบัน มันอาจจะคุ้มค่าที่จะดูแพ็คเกจอื่น ๆ ที่มีให้รวมถึง
PS: @Bogdanovist: มันมีวรรณกรรมที่กว้างขวางเกี่ยวกับเรื่องนี้ kNN ชัดเจนและเพิ่มขึ้นเล็กน้อย หนึ่งสามารถเปลี่ยนลักษณนามเบส์บาง (บาง) เป็นลักษณนามที่เพิ่มขึ้นโดยการเก็บนับแทนความน่าจะเป็น STAGGER, AQ * และบางส่วน (แต่ไม่ใช่ทั้งหมด) ของตระกูล ID * ของอัลกอริธึมโครงสร้างการตัดสินใจก็เพิ่มขึ้นเช่นกัน
ยูทิลิตี้ 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
ความเป็นไปได้อีกอย่างก็คือ อัลฟาเพาะ ฉันไม่ทราบว่า libSVM รองรับหรือไม่ ความคิดคือการแบ่งข้อมูลการฝึกอบรมจำนวนมากเป็นส่วน ๆ จากนั้นคุณฝึก SVM ในก้อนแรก เนื่องจากเวกเตอร์สนับสนุนที่ได้นั้นเป็นเพียงส่วนหนึ่งของข้อมูลของคุณคุณจึงนำสิ่งเหล่านั้นมาใช้เพื่อฝึก SVM ของคุณด้วยอันถัดไป นอกจากนี้คุณใช้ SVM นั้นเพื่อคำนวณการประมาณค่าเริ่มต้นของค่าอัลฟาสำหรับการคำนวณซ้ำครั้งถัดไป ดังนั้นข้อดีคือสองเท่า: แต่ละปัญหามีขนาดเล็กลงและผ่านการเริ่มต้นอย่างชาญฉลาดที่พวกเขามาบรรจบกันได้เร็วขึ้น วิธีนี้ช่วยให้คุณลดปัญหาใหญ่ลงในการแก้ลำดับขั้นตอนที่ง่ายขึ้นตามลำดับ
ตัวเลือกอื่นหากคุณกำลังมองหาวิธีการ "เพิ่ม" สามารถพบได้ที่นี่ ...
ส่วนต่อขยายของ LIBLINEAR ซึ่งช่วยให้การเรียนรู้ที่เพิ่มขึ้น