คุณใช้ SMOTE กับการจำแนกข้อความได้อย่างไร


14

Oversampling เทคนิคการสังเคราะห์ของผู้ถือหุ้นส่วนน้อย (SMOTE) เป็นเทคนิคการ oversampling ที่ใช้ในปัญหาชุดข้อมูลที่ไม่สมดุล จนถึงตอนนี้ฉันมีความคิดว่าจะใช้กับข้อมูลทั่วไปที่มีโครงสร้างได้อย่างไร แต่เป็นไปได้หรือไม่ที่จะใช้กับปัญหาการจำแนกข้อความ? ส่วนใดของข้อมูลที่คุณจำเป็นต้องใช้ในการดูตัวอย่าง มีอีกคำถามหนึ่งเกี่ยวกับเรื่องนี้ แต่ไม่มีคำตอบ ฉันสามารถเรียนรู้ที่จะเริ่มต้นกับสิ่งนี้ได้ที่ไหน?

คำตอบ:


11

อันที่จริง NLP เป็นหนึ่งในพื้นที่ที่พบมากที่สุดที่จำเป็นต้องมีการ resampling ข้อมูลเนื่องจากมีงานการจำแนกข้อความจำนวนมากที่จัดการกับปัญหาที่ไม่สมดุล (คิดว่าเป็นตัวกรองสแปม แต่ SMOTE ดูเหมือนจะมีปัญหาที่นี่ด้วยเหตุผลบางประการ:

  • SMOTE ทำงานในพื้นที่คุณลักษณะ หมายความว่าเอาต์พุตของ SMOTE ไม่ใช่ข้อมูลสังเคราะห์ซึ่งเป็นตัวแทนที่แท้จริงของข้อความในพื้นที่คุณลักษณะ
  • ในด้านหนึ่ง SMOTE ทำงานร่วมกับ KNN และในอีกทางหนึ่งพื้นที่ของฟีเจอร์สำหรับปัญหา NLP นั้นมีขนาดใหญ่มาก KNN จะล้มเหลวอย่างง่ายดายในมิติขนาดใหญ่เหล่านั้น

ดังนั้นฉันสามารถเสนอคุณสองวิธี:

  1. ไม่สนใจเกี่ยวกับการแสดงข้อความจริงของตัวอย่างสังเคราะห์ใหม่ซึ่งฉันคิดว่าควรจะดี คุณต้องสมดุลการกระจายสำหรับลักษณนามของคุณไม่ได้สำหรับผู้อ่านข้อมูลข้อความ ดังนั้นใช้ SMOTE เป็นแบบดั้งเดิม (แต่ฉันมักจะใช้วิธีแก้ปัญหา 2 ร้องดังนั้นฉันไม่รับประกันผล!) กับขั้นตอนการลดขนาด

1) ให้สมมติว่าคุณต้องการสร้างตัวอย่างข้อมูลจากคลาสรองโดยใช้ 3-NN ละเว้นคลาสหลัก (es) และเก็บเฉพาะตัวอย่างคลาสย่อยเท่านั้น

2) สำหรับแต่ละจุดตัวอย่างในพื้นที่คุณลักษณะให้เลือก 5 เพื่อนบ้านที่ใกล้ที่สุด จากนั้นเลือกแบบสุ่ม 3 อัน (มันไม่จำเป็นไม่ซับซ้อนใช่ไหมถ้าฉันไม่ต้องการอธิบายอัลกอริทึมดั้งเดิมที่ฉันจะบอกก็แค่เลือก 3 ประเทศ!)

3) สำหรับแต่ละมิติคำนวณระยะห่างระหว่างตัวอย่างและเพื่อนบ้านและคูณด้วยตัวเลขสุ่มระหว่าง 0-1 และเพิ่มไปยังค่าดั้งเดิมของตัวอย่างในมิตินั้น (ย่อหน้าที่ซับซ้อนนี้หมายถึงแต่ละมิติเลือกค่าสุ่มระหว่างตัวอย่างดั้งเดิมกับเพื่อนบ้านนั้น!)

  1. แต่ฉันมักจะทำการสุ่มตัวอย่างอีกครั้งซึ่งอยู่ในข้อความ (ง่ายกว่านี้มาก) และเป็น SMOTE

1) ละเว้นคลาสที่สำคัญ รับการแจกแจงความยาวของเอกสารทั้งหมดในระดับรองเพื่อให้เราสร้างตัวอย่างใหม่ตามความยาวเอกสารจริง (จำนวนคำ / วลี) เราคิดว่าเราต้องการสร้างขนาดของคลาสทริปเปิลk=2 เอกสารสังเคราะห์ต่อเอกสารต้นฉบับ)

2) สร้างลำดับของ nจำนวนเต็มแบบสุ่มตามการแจกแจงนั้น ใช้สำหรับกำหนดความยาวของเอกสารสังเคราะห์ใหม่

3) สำหรับแต่ละเอกสาร: เลือกหนึ่งจำนวนเต็มจากลำดับความยาวแบบสุ่มและ mเอกสารสุ่มที่มีความยาวใกล้เคียงกับจำนวนเต็ม ใส่โทเค็นของทั้งหมดm เอกสารในชุดและเลือกแบบสุ่ม n ราชสกุล kครั้ง นี่คือของคุณk เอกสารใหม่


ขอบคุณสำหรับคำตอบ แต่ SMOTE สามารถนำไปใช้กับตัวอย่างได้หรือไม่หากพวกเขาแสดงด้วยการเข้ารหัสแบบร้อนแรง? หรือพวกเขาควรจะเป็นตัวแทนในอีกทางหนึ่ง?
adnanmuttaleb

สวัสดี Kasra คุณสามารถแบ่งปันการดำเนินการบางอย่างที่เกี่ยวข้องกับขั้นตอนที่คุณกล่าวถึง
Payal Bhatia

2

หากคุณต้องการเพิ่มข้อมูลการฝึกอบรมข้อความ / ประโยคเพิ่มเติมคุณสามารถใช้ embeddings คำก่อนการฝึกอบรม แบบจำลองที่ผ่านการฝึกอบรมเช่นการให้คำเป็นตัวแทนของคำในพจนานุกรมทุกคำ นอกจากนี้ยังมีคำว่า 'Most_sm คุ้นเคย'

คุณสามารถใช้ประโยคตัวอย่างและสร้างตัวอย่างใหม่โดยทำการเรียงสับเปลี่ยนของแต่ละคำและทุกคำด้วยคำที่คล้ายกันมากที่สุดของ TOP_N

เช่นถ้าประโยคของคุณมี 3 คำและถ้าคุณเลือก 3 คำที่คล้ายกันมากที่สุดสำหรับแต่ละคำคุณสามารถเพิ่มได้ 27 ครั้ง


สวัสดี Yashodhan เราจะใช้กระบวนการนี้ได้อย่างไรหากเป็นโดเมนเฉพาะ ขอบคุณ
Payal Bhatia
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.