SVM สำหรับข้อมูลที่ไม่สมดุล


15

ฉันต้องการใช้ Support Vector Machines (SVMs) ในชุดข้อมูลของฉัน ก่อนที่ฉันจะพยายามแก้ปัญหาฉันได้รับคำเตือนว่า SVM ไม่ทำงานได้ดีกับข้อมูลที่ไม่สมดุลอย่างยิ่ง ในกรณีของฉันฉันสามารถมีได้มากถึง 95-98% 0 และ 2-5% 1

ฉันพยายามค้นหาทรัพยากรที่พูดคุยเกี่ยวกับการใช้ SVM ในข้อมูลที่กระจัดกระจาย / ไม่สมดุล แต่สิ่งที่ฉันพบคือ 'sparseSVMs' (ซึ่งใช้เวกเตอร์สนับสนุนจำนวนเล็กน้อย)

ฉันหวังว่าบางคนสามารถอธิบายสั้น ๆ :

  1. SVM คาดว่าจะทำอย่างไรกับชุดข้อมูลดังกล่าว
  2. ซึ่งหากมีการปรับเปลี่ยนจะต้องทำกับอัลกอริทึม SVM
  3. แหล่งข้อมูล / เอกสารใดที่กล่าวถึงเรื่องนี้

คำตอบ:


15

การประยุกต์ใช้ SVM จำนวนมากแก้ไขปัญหานี้โดยกำหนดน้ำหนักที่แตกต่างให้กับอินสแตนซ์บวกและลบ โดยพื้นฐานแล้วคุณจะต้องชั่งน้ำหนักตัวอย่างเพื่อให้ผลรวมของน้ำหนักสำหรับผลบวกจะเท่ากับน้ำหนักเชิงลบ แน่นอนว่าในการประเมิน SVM ของคุณคุณต้องจำไว้ว่าถ้า 95% ของข้อมูลเป็นลบมันเป็นเรื่องเล็กน้อยที่จะได้รับความแม่นยำ 95% โดยการทำนายเชิงลบเสมอ ดังนั้นคุณต้องตรวจสอบให้แน่ใจว่าตัวชี้วัดการประเมินของคุณนั้นมีน้ำหนักเพื่อให้สมดุล

โดยเฉพาะในlibsvmที่คุณเพิ่มเป็นแท็กมีธงที่ช่วยให้คุณกำหนดน้ำหนักของชั้นเรียน ( -wฉันเชื่อ แต่ตรวจสอบเอกสาร )

ในที่สุดจากประสบการณ์ส่วนตัวฉันสามารถบอกคุณได้ว่าฉันมักจะพบว่า SVM จะให้ผลลัพธ์ที่คล้ายกันมากโดยมีหรือไม่มีการแก้ไขน้ำหนัก


เอาชนะฉันได้เลย :-)
Marc Claesen

@ Bitwise ฉันมีปัญหาเดียวกันกับข้อมูลที่ไม่สมดุลและฉันได้รับความแม่นยำ 99% ฉันใช้น้ำหนักเป็น libsvm คุณบอกว่าต้องมีการถ่วงน้ำหนักตัวชี้วัดการประเมินด้วย ฉันอยากรู้ว่าเราจะวัดค่าการประเมินได้อย่างไร
Hani Goc

1
90/100=0.90.5(0/10+90/90)=0.5

7

SVM ทำงานได้ดีกับข้อมูลที่กระจัดกระจายและไม่สมดุล SVM แบบถ่วงน้ำหนักในชั้นเรียนได้รับการออกแบบมาเพื่อจัดการกับข้อมูลที่ไม่สมดุลโดยการกำหนดบทลงโทษการจัดชั้นที่สูงขึ้นให้กับอินสแตนซ์การฝึกอบรมของชนชั้นน้อย


5

ในกรณีที่ข้อมูลเบาบางเช่น SVM นั้นจะทำงานได้ดี

ตามที่ระบุไว้โดย @Bitwise คุณไม่ควรใช้ความแม่นยำในการวัดประสิทธิภาพของอัลกอริทึม

แต่คุณควรคำนวณความแม่นยำการเรียกคืนและF-Scoreของอัลกอริทึม


คุณช่วยขยายเหตุผลของคุณได้ไหม นอกจากนี้คุณจะวัดคะแนน F อย่างไรเมื่อการจำแนกประเภท (ในชุดทดสอบ) เสร็จสมบูรณ์แล้ว ขอบคุณ
Spacey

ในการวัด FScore บนชุดทดสอบคุณจะต้องจัดประเภทด้วยตนเองแล้วคำนวณการเรียกคืนและความแม่นยำโดยใช้ข้อมูลด้วยตนเองเทียบกับข้อมูลที่คาดการณ์ไว้ คุณต้องการให้ฉันขยายอะไรทำไม SVM ทำงานได้ดีกับข้อมูลที่กระจัดกระจาย
alexandrekow

ใช่ทำไม SVM ทำงานกับข้อมูลที่กระจัดกระจายจะดีเช่นกัน ขอบคุณ
Spacey

"การมีคุณสมบัติแบบกระจัดกระจายไม่มีปัญหาใด ๆ สำหรับ SVM วิธีหนึ่งในการดูสิ่งนี้คือคุณสามารถทำการหมุนแบบสุ่มของแกนพิกัดซึ่งจะทำให้ปัญหาไม่เปลี่ยนแปลงและให้วิธีแก้ปัญหาแบบเดียวกัน แต่จะทำให้ ข้อมูลไม่กระจัดกระจายอย่างสมบูรณ์ (นี่เป็นส่วนหนึ่งของการคาดการณ์แบบสุ่มทำงาน "( stats.stackexchange.com/questions/23470/… )
alexandrekow
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.