คำว่ามิติข้อมูลเป็นคำพ้องความหมายของจำนวนองค์ประกอบในเวกเตอร์ฟีเจอร์ ฟีเจอร์เชิงหมวดหมู่บางรายการมีมิติข้อมูลต่ำ เช่น
ชื่อฟีเจอร์ | # หมวดหมู่ | หมวดหมู่ตัวอย่าง |
---|---|---|
snowed_today | 2 | จริง เท็จ |
skill_level | 3 | ผู้เริ่มต้น ผู้ปฏิบัติงาน ผู้เชี่ยวชาญ |
season | 4 | ฤดูหนาว ฤดูใบไม้ผลิ ฤดูร้อน ฤดูใบไม้ร่วง |
day_of_week | 7 | วันจันทร์ วันอังคาร วันพุธ |
ดาวเคราะห์ | 8 | ดาวพุธ ดาวศุกร์ โลก |
เมื่อฟีเจอร์เชิงหมวดหมู่มีจำนวนหมวดหมู่ที่เป็นไปได้น้อย คุณจะ เข้ารหัสเป็นคำศัพท์ได้ เมื่อใช้การเข้ารหัสคำศัพท์ โมเดลจะถือว่าค่าหมวดหมู่ที่เป็นไปได้แต่ละค่าเป็นฟีเจอร์แยกกัน ในระหว่างการฝึก โมเดลจะเรียนรู้ค่าถ่วงน้ำหนักที่แตกต่างกันสำหรับแต่ละหมวดหมู่
ตัวอย่างเช่น สมมติว่าคุณกำลังสร้างโมเดลเพื่อคาดการณ์ราคารถยนต์โดยอิง
ส่วนหนึ่งจากฟีเจอร์เชิงหมวดหมู่ชื่อ car_color
บางทีรถสีแดงอาจมีมูลค่ามากกว่ารถสีเขียว
เนื่องจากผู้ผลิตมีสีภายนอกให้เลือกจำนวนจำกัด car_color
จึงเป็น
ฟีเจอร์เชิงหมวดหมู่ที่มีมิติข้อมูลต่ำ
ภาพต่อไปนี้แสดงคำศัพท์ (ค่าที่เป็นไปได้) สำหรับ
car_color
แบบฝึกหัด: ทดสอบความเข้าใจ
"Red"
ไม่ใช่จำนวนจุดลอยตัว คุณ
ต้องแปลงสตริง เช่น "Red"
เป็นตัวเลขทศนิยม
หมายเลขดัชนี
โมเดลแมชชีนเลิร์นนิงจะจัดการได้เฉพาะตัวเลขทศนิยม ดังนั้นคุณต้องแปลงสตริงแต่ละรายการเป็นหมายเลขดัชนีที่ไม่ซ้ำกัน ดังตัวอย่างต่อไปนี้
หลังจากแปลงสตริงเป็นหมายเลขอินเด็กซ์ที่ไม่ซ้ำกันแล้ว คุณจะต้องประมวลผลข้อมูลเพิ่มเติมเพื่อแสดงข้อมูลในลักษณะที่จะช่วยให้โมเดลเรียนรู้ความสัมพันธ์ที่มีความหมายระหว่างค่าต่างๆ หากปล่อยให้ข้อมูลฟีเจอร์เชิงหมวดหมู่เป็นจำนวนเต็มที่จัดทำดัชนีและโหลดลงในโมเดล โมเดลจะถือว่าค่าที่จัดทำดัชนีเป็นตัวเลขทศนิยมต่อเนื่อง จากนั้นโมเดลจะพิจารณาว่า "สีม่วง" มีแนวโน้มมากกว่า "สีส้ม" 6 เท่า
การเข้ารหัสแบบ One-hot
ขั้นตอนถัดไปในการสร้างคำศัพท์คือการแปลงหมายเลขดัชนีแต่ละหมายเลขเป็นการเข้ารหัสแบบ One-hot ในการเข้ารหัสแบบ One-hot
- แต่ละหมวดหมู่จะแสดงด้วยเวกเตอร์ (อาร์เรย์) ขององค์ประกอบ N โดยที่ N
คือจำนวนหมวดหมู่ เช่น หาก
car_color
มีหมวดหมู่ที่เป็นไปได้ 8 หมวดหมู่ เวกเตอร์แบบ One-Hot ที่แสดงหมวดหมู่ดังกล่าวจะมี 8 องค์ประกอบ - องค์ประกอบในเวกเตอร์แบบ One-Hot 1 รายการมีค่า 1.0 องค์ประกอบที่เหลือทั้งหมดมีค่า 0.0
ตัวอย่างเช่น ตารางต่อไปนี้แสดงการเข้ารหัสแบบ One-Hot สำหรับแต่ละสีใน
car_color
ฟีเจอร์ | แดง | ส้ม | น้ำเงิน | เหลือง | เขียว | ดำ | ม่วง | สีน้ำตาล |
---|---|---|---|---|---|---|---|---|
"แดง" | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
"Orange" | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
"สีน้ำเงิน" | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
"เหลือง" | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
"เขียว" | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
"ดำ" | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
"สีม่วง" | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
"น้ำตาล" | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
ระบบจะส่งเวกเตอร์แบบ One-hot ไม่ใช่สตริงหรือหมายเลขดัชนี ไปยังเวกเตอร์ฟีเจอร์ โมเดลจะเรียนรู้น้ำหนักแยกกันสำหรับแต่ละองค์ประกอบของเวกเตอร์ฟีเจอร์
ภาพต่อไปนี้แสดงการแปลงรูปแบบต่างๆ ใน การแสดงคำศัพท์
การแทนค่าแบบกระจัดกระจาย
ฟีเจอร์ที่มีค่าเป็น 0 (หรือว่างเปล่า) เป็นส่วนใหญ่เรียกว่าฟีเจอร์แบบกระจัดกระจาย ฟีเจอร์เชิงหมวดหมู่หลายรายการ เช่น car_color
มักจะเป็นฟีเจอร์แบบกระจัดกระจาย
การแสดงแบบกระจัดกระจาย
หมายถึงการจัดเก็บตำแหน่งของ 1.0
ในเวกเตอร์แบบกระจัดกระจาย ตัวอย่างเช่น เวกเตอร์ One-hot สำหรับ "Blue"
คือ
[0, 0, 1, 0, 0, 0, 0, 0]
เนื่องจาก 1
อยู่ในตำแหน่งที่ 2 (เมื่อเริ่มนับที่ 0) การแสดงแบบกระจัดกระจายสำหรับเวกเตอร์แบบ One-Hot ก่อนหน้าจึงเป็นดังนี้
2
โปรดทราบว่าการแสดงแบบกระจัดกระจายใช้หน่วยความจำน้อยกว่าเวกเตอร์แบบ One-Hot ที่มี 8 องค์ประกอบมาก ที่สำคัญ โมเดลต้องฝึกในเวกเตอร์แบบ One-Hot ไม่ใช่การแสดงแบบกระจัดกระจาย
ค่าผิดปกติในข้อมูลเชิงหมวดหมู่
เช่นเดียวกับข้อมูลเชิงตัวเลข ข้อมูลเชิงหมวดหมู่ก็มีค่าผิดปกติเช่นกัน สมมติว่า car_color
ไม่ได้มีเพียงสีที่ได้รับความนิยม แต่ยังมีสีที่ใช้ไม่บ่อย
ซึ่งเป็นสีที่อยู่นอกกลุ่ม เช่น "Mauve"
หรือ "Avocado"
แทนที่จะกำหนดหมวดหมู่แยกต่างหากสำหรับสีที่อยู่นอกเหนือจากนี้ คุณ
สามารถรวมสีเหล่านี้ไว้ในหมวดหมู่ "ครอบคลุมทั้งหมด" หมวดหมู่เดียวที่เรียกว่านอกคำศัพท์
(OOV) กล่าวอีกนัยหนึ่งคือ สีที่อยู่นอกค่าปกติทั้งหมดจะถูกจัดกลุ่มไว้ในที่เก็บข้อมูลสำหรับค่าที่อยู่นอกค่าปกติเดียว ระบบจะเรียนรู้น้ำหนักเดียวสำหรับกลุ่มค่าผิดปกตินั้น
การเข้ารหัสฟีเจอร์เชิงหมวดหมู่ที่มีมิติข้อมูลสูง
ฟีเจอร์เชิงหมวดหมู่บางอย่างมีมิติข้อมูลจํานวนมาก เช่น ฟีเจอร์ในตารางต่อไปนี้
ชื่อฟีเจอร์ | # หมวดหมู่ | หมวดหมู่ตัวอย่าง |
---|---|---|
words_in_english | ~500,000 | "happy", "walking" |
US_postal_codes | ~42,000 | "02114", "90301" |
last_names_in_Germany | ~850,000 | "Schmidt", "Schneider" |
เมื่อจำนวนหมวดหมู่สูง การเข้ารหัสแบบ One-Hot มักเป็นตัวเลือกที่ไม่ดี การฝังซึ่งอธิบายไว้ใน โมดูลการฝังแยกต่างหากมักเป็น ตัวเลือกที่ดีกว่ามาก Embedding ช่วยลดจำนวน มิติข้อมูลได้อย่างมาก ซึ่งเป็นประโยชน์ต่อโมเดลใน 2 ด้านที่สำคัญ ดังนี้
- โดยปกติแล้วโมเดลจะฝึกได้เร็วกว่า
- โดยปกติแล้ว โมเดลที่สร้างขึ้นจะอนุมานการคาดการณ์ได้เร็วกว่า กล่าวคือ โมเดลมีเวลาในการตอบสนองต่ำกว่า
การแฮช (หรือที่เรียกว่าเทคนิคการแฮช) เป็นวิธีที่ใช้กันน้อยกว่าในการลดจำนวนมิติข้อมูล