ข้อมูลไม่สมดุล

ชุดข้อมูลการแยกประเภทที่มีสัดส่วนคลาสที่เอียง เรียกว่าไม่สมดุล คลาสที่รวมกันเป็นชุดข้อมูลขนาดใหญ่จะเรียกว่าคลาสส่วนใหญ่ องค์ประกอบของจํานวนที่น้อยกว่าคือชนกลุ่มน้อย

อะไรที่ถือว่าไม่สมดุล คําตอบอาจมีตั้งแต่เล็กน้อยไปจนถึงรุนแรง ดังที่แสดงในตารางด้านล่าง

องศาของความไม่สมดุล สัดส่วนของชนกลุ่มน้อย
ผ่อนปรน 20-40% ของชุดข้อมูล
ราคาปานกลาง 1-20% ของชุดข้อมูล
สูงสุด <1% ของชุดข้อมูล

ทําไมจึงต้องค้นหาข้อมูลที่ไม่สมดุล คุณอาจต้องใช้เทคนิคการสุ่มตัวอย่างบางอย่างหากคุณมีงานแยกประเภทซึ่งมีชุดข้อมูลที่ไม่สมดุล

ดูตัวอย่างรูปแบบที่ตรวจหาการฉ้อโกงต่อไปนี้ การฉ้อโกงเกิดขึ้น 1 ครั้งต่อ 200 ธุรกรรมในชุดข้อมูลนี้ ดังนั้นในการกระจายข้อมูลจริง ข้อมูลประมาณ 0.5% เป็นบวก

กราฟแท่งที่มีขีดสองขีด แถบหนึ่งจะแสดงธุรกรรมเชิงลบประมาณ 200 รายการ ในขณะที่อีกแถบหนึ่งแสดงธุรกรรมเชิงบวก 1 รายการ

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

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

การสุ่มตัวอย่างและการลงน้ําหนัก

วิธีที่มีประสิทธิภาพในการจัดการกับข้อมูลที่ไม่สมดุลคือการลดทรัพยากรและลดน้ําหนักของคลาส มาเริ่มด้วยการกําหนดคําศัพท์ใหม่ 2 คํานั้น

  • การสุ่ม (ในบริบทนี้) หมายถึงการฝึกชุดย่อยของคลาสส่วนใหญ่ในสัดส่วนที่น้อยอย่างไม่สมส่วน
  • การถ่วงน้ําหนักหมายถึงการเพิ่มน้ําหนักของคลาสคลาสแบบไม่สุ่มตัวอย่าง ซึ่งเท่ากับปัจจัยที่คุณสุ่มตัวอย่างลง

ขั้นตอนที่ 1: สุ่มตัวอย่างคลาสส่วนใหญ่ พิจารณาตัวอย่างชุดข้อมูลที่เป็นการฉ้อโกงอีกครั้ง โดยมีค่าติดลบ 1 ถึง 200 การลดลงทีละ 10 จะช่วยเพิ่ม ความสมดุลเป็น 1 เป็นลบ 20 (5%) แม้ว่าชุดการฝึกที่เป็นผลลัพธ์จะยังคงไม่สมดุลพอสมควร แต่สัดส่วนของผลบวกต่อเชิงลบจะดีกว่าสัดส่วนที่ไม่สมดุลอย่างมาก (0.5%)

กราฟแท่งที่มีขีดสองขีด แถบหนึ่งจะแสดงธุรกรรมเชิงลบ 20 รายการ ขณะที่อีกแถบแสดงธุรกรรมเชิงบวก 1 รายการ

ขั้นตอนที่ 2: ยกตัวอย่างคลาสที่มีการสุ่มตัวอย่างลง: ขั้นตอนสุดท้ายคือการเพิ่มน้ําหนักตัวอย่างไปยังคลาสแบบไม่สุ่มตัวอย่าง เนื่องจากเราสุ่มตัวอย่างลงจากปัจจัย 10 ตัวอย่างน้ําหนักควรเป็น 10

แผนภาพเชิงแนวคิดของการสุ่มและการเพิ่มน้ําหนัก ขั้นตอนที่ 1 การสุ่มเนื้อหา
จะสุ่มตัวอย่างที่เลือกไว้จากบล็อกที่แสดงถึงชุดข้อมูล
ของคลาสส่วนใหญ่ ขั้นตอนที่ 2 การถ่วงน้ําหนักจะเพิ่มน้ําหนักให้กับตัวอย่างที่เลือกแบบสุ่มแต่ละตัวอย่าง

คุณอาจคุ้นเคยกับคําว่าน้ําหนักเมื่อพูดถึงพารามิเตอร์โมเดล เช่น การเชื่อมต่อในโครงข่ายระบบประสาทเทียม เรากําลังพูดถึงน้ําหนักของตัวอย่าง ซึ่งหมายถึงการนับตัวอย่างแต่ละรายการระหว่างการฝึก ตัวอย่างการถ่วงน้ําหนัก 10 หมายความว่าโมเดลถือว่าตัวอย่างมีความสําคัญเป็น 10 เท่า (เมื่อการคํานวณแบบสูญเสีย) เหมือนกับตัวอย่างที่ 1

น้ําหนักควรเท่ากับปัจจัยที่คุณใช้ในการสุ่มตัวอย่างลง:

\[\text{ \{example weight\} = \{original example weight\} × \{downsampling factor\} }\]

ทําไมจึงต้องลดภาระงานและเพิ่มน้ําหนัก

คงจะแปลกถ้าเพิ่มน้ําหนักตัวอย่างหลังจากสุ่มตัวอย่าง เราพยายามทําให้โมเดลของเราดีขึ้นในระดับชนกลุ่มน้อย -- ทําไมเราต้องเพิ่มน้ําหนักเป็นหลัก การเปลี่ยนแปลงที่เกิดขึ้นมีดังนี้

  • มาบรรจบกันเร็วขึ้น: ในระหว่างการฝึก เราจะได้เห็นชนกลุ่มน้อยบ่อยกว่าเดิม ซึ่งจะช่วยให้รูปแบบมาบรรจบกันได้เร็วขึ้น
  • พื้นที่ในดิสก์: เมื่อรวมคลาสส่วนใหญ่ให้เป็นตัวอย่างที่มีน้ําหนักมากกว่า เราก็จะใช้พื้นที่ดิสก์น้อยลงในการจัดเก็บ เงินออมนี้จะช่วยให้มีพื้นที่ดิสก์มากขึ้นสําหรับชนกลุ่มน้อย เพื่อให้เราเก็บตัวอย่างจํานวนมากจากช่วงดังกล่าวได้มากขึ้น
  • การปรับเทียบ: การถ่วงน้ําหนักช่วยให้โมเดลของเรามีการปรับเทียบอยู่ ยังสามารถตีความเอาต์พุตเป็นความน่าจะเป็นได้