วิธีที่ดีที่สุดในการจัดการชุดข้อมูลมัลติคลาสที่ไม่สมดุลด้วย SVM


9

ฉันกำลังพยายามสร้างแบบจำลองการทำนายด้วย SVM บนข้อมูลที่ไม่สมดุล เลเบล / เอาต์พุตของฉันมีสามคลาส, บวก, เป็นกลางและลบ ฉันจะบอกว่าตัวอย่างบวกทำประมาณ 10 - 20% ของข้อมูลของฉันเป็นกลางประมาณ 50 - 60% และลบประมาณ 30 - 40% ฉันพยายามที่จะสร้างความสมดุลให้กับชั้นเรียนเนื่องจากค่าใช้จ่ายที่เกี่ยวข้องกับการทำนายที่ไม่ถูกต้องในชั้นเรียนนั้นไม่เหมือนกัน วิธีหนึ่งคือการสุ่มข้อมูลการฝึกอบรมซ้ำและสร้างชุดข้อมูลที่มีความสมดุลเท่ากันซึ่งใหญ่กว่าแบบเดิม ที่น่าสนใจเมื่อฉันทำเช่นนั้นฉันมักจะได้รับการคาดการณ์ที่ดีกว่าสำหรับชั้นเรียนอื่น (เช่นเมื่อฉันสร้างความสมดุลให้กับข้อมูลฉันเพิ่มจำนวนตัวอย่างสำหรับชั้นเรียนที่เป็นบวก แต่จากการคาดการณ์ตัวอย่าง ทุกคนสามารถอธิบายได้โดยทั่วไปว่าทำไมสิ่งนี้เกิดขึ้น ถ้าฉันเพิ่มจำนวนตัวอย่างสำหรับคลาสลบฉันจะได้อะไรที่คล้ายกับคลาสบวกจากการคาดการณ์ตัวอย่าง (เช่นการคาดคะเนที่ดีขึ้น)

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

คำตอบ:


6

การมีบทลงโทษที่แตกต่างกันสำหรับตัวแปรเผื่อขอบสำหรับรูปแบบของแต่ละชั้นเรียนเป็นวิธีที่ดีกว่าการสุ่มข้อมูลใหม่ มันเท่ากับ asymptotically เทียบกับ resampling อยู่แล้ว แต่ esier นำไปใช้และต่อเนื่องแทนที่จะแยกกันดังนั้นคุณจึงสามารถควบคุมได้มากขึ้น

อย่างไรก็ตามการเลือกน้ำหนักไม่ตรงไปตรงมา ในหลักการคุณสามารถคำนวณน้ำหนักตามทฤษฎีที่คำนึงถึงต้นทุนการแยกประเภทและความแตกต่างระหว่างการฝึกอบรมกำหนดความน่าจะเป็นระดับปฏิบัติการก่อนหน้านี้ แต่จะไม่ให้ประสิทธิภาพที่ดีที่สุด สิ่งที่ดีที่สุดที่จะทำคือการเลือกบทลงโทษ / น้ำหนักสำหรับแต่ละชั้นเรียนด้วยการลดการสูญเสียให้น้อยที่สุด (โดยคำนึงถึงค่าใช้จ่ายในการจำแนกประเภท) โดยการตรวจสอบข้าม


มีวิธีอัตโนมัติในการทำเช่นนั้นหรือมีผู้เรียนที่มีฟังก์ชั่นนี้รวมอยู่ด้วยหรือไม่?
Vam

ฉันมักจะเขียนฟังก์ชั่น matlab เพื่อประเมินการสูญเสียสำหรับชุดของการลงโทษที่เฉพาะเจาะจงและลดให้น้อยที่สุดโดยใช้อัลกอริทึม Nelder-Mead simplex ฉันไม่รู้เกี่ยวกับห้องสมุดใด ๆ ที่สร้างสิ่งนี้มา
Dikran Marsupial

@DikranMarsupial การค้นหากริดของตัวแปรระยะเผื่อสองอันในปัญหาสองระดับจะเทียบเท่ากับสิ่งที่คุณกำลังทำกับอัลกอริทึมแบบซิมเพล็กซ์หรือไม่?
Spacey

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