ชุดข้อมูลการแยกประเภทที่มีสัดส่วนคลาสที่เอียง เรียกว่าไม่สมดุล คลาสที่รวมกันเป็นชุดข้อมูลขนาดใหญ่จะเรียกว่าคลาสส่วนใหญ่ องค์ประกอบของจํานวนที่น้อยกว่าคือชนกลุ่มน้อย
อะไรที่ถือว่าไม่สมดุล คําตอบอาจมีตั้งแต่เล็กน้อยไปจนถึงรุนแรง ดังที่แสดงในตารางด้านล่าง
องศาของความไม่สมดุล | สัดส่วนของชนกลุ่มน้อย |
---|---|
ผ่อนปรน | 20-40% ของชุดข้อมูล |
ราคาปานกลาง | 1-20% ของชุดข้อมูล |
สูงสุด | <1% ของชุดข้อมูล |
ทําไมจึงต้องค้นหาข้อมูลที่ไม่สมดุล คุณอาจต้องใช้เทคนิคการสุ่มตัวอย่างบางอย่างหากคุณมีงานแยกประเภทซึ่งมีชุดข้อมูลที่ไม่สมดุล
ดูตัวอย่างรูปแบบที่ตรวจหาการฉ้อโกงต่อไปนี้ การฉ้อโกงเกิดขึ้น 1 ครั้งต่อ 200 ธุรกรรมในชุดข้อมูลนี้ ดังนั้นในการกระจายข้อมูลจริง ข้อมูลประมาณ 0.5% เป็นบวก
ทําไมสิ่งนี้จึงทําให้เกิดปัญหา เมื่อคิดบวกน้อย การ ฝึกฝึกโมเดลจะใช้เวลาส่วนใหญ่ไปกับตัวอย่างเชิงลบและไม่เรียนรู้จากตัวอย่างเชิงบวกมากพอ ตัวอย่างเช่น หากขนาดแบตช์ของคุณคือ 128 หลายๆ แบตช์จะไม่มีตัวอย่างเชิงบวก ดังนั้นการไล่สีจะให้ข้อมูลได้น้อยกว่า
หากมีชุดข้อมูลที่ไม่สมดุลกัน ก่อนอื่นให้ลองฝึกอบรมการกระจายจริง หากโมเดลทํางานได้ดีและแสดงให้เห็นโดยทั่วไป แค่นี้ก็เสร็จแล้ว! หากไม่มี ให้ลองทําตามเทคนิคการดาวน์เกรดและการเพิ่มน้ําหนักต่อไปนี้
การสุ่มตัวอย่างและการลงน้ําหนัก
วิธีที่มีประสิทธิภาพในการจัดการกับข้อมูลที่ไม่สมดุลคือการลดทรัพยากรและลดน้ําหนักของคลาส มาเริ่มด้วยการกําหนดคําศัพท์ใหม่ 2 คํานั้น
- การสุ่ม (ในบริบทนี้) หมายถึงการฝึกชุดย่อยของคลาสส่วนใหญ่ในสัดส่วนที่น้อยอย่างไม่สมส่วน
- การถ่วงน้ําหนักหมายถึงการเพิ่มน้ําหนักของคลาสคลาสแบบไม่สุ่มตัวอย่าง ซึ่งเท่ากับปัจจัยที่คุณสุ่มตัวอย่างลง
ขั้นตอนที่ 1: สุ่มตัวอย่างคลาสส่วนใหญ่ พิจารณาตัวอย่างชุดข้อมูลที่เป็นการฉ้อโกงอีกครั้ง โดยมีค่าติดลบ 1 ถึง 200 การลดลงทีละ 10 จะช่วยเพิ่ม ความสมดุลเป็น 1 เป็นลบ 20 (5%) แม้ว่าชุดการฝึกที่เป็นผลลัพธ์จะยังคงไม่สมดุลพอสมควร แต่สัดส่วนของผลบวกต่อเชิงลบจะดีกว่าสัดส่วนที่ไม่สมดุลอย่างมาก (0.5%)
ขั้นตอนที่ 2: ยกตัวอย่างคลาสที่มีการสุ่มตัวอย่างลง: ขั้นตอนสุดท้ายคือการเพิ่มน้ําหนักตัวอย่างไปยังคลาสแบบไม่สุ่มตัวอย่าง เนื่องจากเราสุ่มตัวอย่างลงจากปัจจัย 10 ตัวอย่างน้ําหนักควรเป็น 10
คุณอาจคุ้นเคยกับคําว่าน้ําหนักเมื่อพูดถึงพารามิเตอร์โมเดล เช่น การเชื่อมต่อในโครงข่ายระบบประสาทเทียม เรากําลังพูดถึงน้ําหนักของตัวอย่าง ซึ่งหมายถึงการนับตัวอย่างแต่ละรายการระหว่างการฝึก ตัวอย่างการถ่วงน้ําหนัก 10 หมายความว่าโมเดลถือว่าตัวอย่างมีความสําคัญเป็น 10 เท่า (เมื่อการคํานวณแบบสูญเสีย) เหมือนกับตัวอย่างที่ 1
น้ําหนักควรเท่ากับปัจจัยที่คุณใช้ในการสุ่มตัวอย่างลง:
\[\text{ \{example weight\} = \{original example weight\} × \{downsampling factor\} }\]
ทําไมจึงต้องลดภาระงานและเพิ่มน้ําหนัก
คงจะแปลกถ้าเพิ่มน้ําหนักตัวอย่างหลังจากสุ่มตัวอย่าง เราพยายามทําให้โมเดลของเราดีขึ้นในระดับชนกลุ่มน้อย -- ทําไมเราต้องเพิ่มน้ําหนักเป็นหลัก การเปลี่ยนแปลงที่เกิดขึ้นมีดังนี้
- มาบรรจบกันเร็วขึ้น: ในระหว่างการฝึก เราจะได้เห็นชนกลุ่มน้อยบ่อยกว่าเดิม ซึ่งจะช่วยให้รูปแบบมาบรรจบกันได้เร็วขึ้น
- พื้นที่ในดิสก์: เมื่อรวมคลาสส่วนใหญ่ให้เป็นตัวอย่างที่มีน้ําหนักมากกว่า เราก็จะใช้พื้นที่ดิสก์น้อยลงในการจัดเก็บ เงินออมนี้จะช่วยให้มีพื้นที่ดิสก์มากขึ้นสําหรับชนกลุ่มน้อย เพื่อให้เราเก็บตัวอย่างจํานวนมากจากช่วงดังกล่าวได้มากขึ้น
- การปรับเทียบ: การถ่วงน้ําหนักช่วยให้โมเดลของเรามีการปรับเทียบอยู่ ยังสามารถตีความเอาต์พุตเป็นความน่าจะเป็นได้