คําว่ามิติข้อมูลเป็นคําพ้องกับจํานวนองค์ประกอบในเวกเตอร์องค์ประกอบ ฟีเจอร์เชิงหมวดหมู่บางรายการมีมิติข้อมูลต่ำ เช่น
ชื่อฟีเจอร์ | จำนวนหมวดหมู่ | ตัวอย่างหมวดหมู่ |
---|---|---|
snowed_today | 2 | จริง เท็จ |
skill_level | 3 | ผู้เริ่มต้น ผู้ปฏิบัติงาน ผู้เชี่ยวชาญ |
season | 4 | ฤดูหนาว ฤดูใบไม้ผลิ ฤดูร้อน ฤดูใบไม้ร่วง |
day_of_week | 7 | วันจันทร์ วันอังคาร วันพุธ |
ดาวเคราะห์ | 8 | ดาวพุธ ดาวศุกร์ โลก |
เมื่อฟีเจอร์เชิงหมวดหมู่มีหมวดหมู่ที่เป็นไปได้จํานวนน้อย คุณสามารถเข้ารหัสเป็นคําศัพท์ได้ เมื่อใช้การเข้ารหัสคําศัพท์ โมเดลจะถือว่าค่าเชิงหมวดหมู่ที่เป็นไปได้แต่ละค่าเป็นฟีเจอร์แยกต่างหาก ในระหว่างการฝึกอบรม โมเดลจะเรียนรู้น้ำหนักที่แตกต่างกันสําหรับแต่ละหมวดหมู่
ตัวอย่างเช่น สมมติว่าคุณกําลังสร้างโมเดลเพื่อคาดการณ์ราคารถยนต์โดยอิงตามฟีเจอร์เชิงหมวดหมู่ชื่อ car_color
เพียงบางส่วน
รถยนต์สีแดงอาจมีมูลค่ามากกว่ารถยนต์สีเขียว
เนื่องจากผู้ผลิตมีสีภายนอกให้เลือกไม่มากนัก car_color
จึงถือเป็นฟีเจอร์เชิงหมวดหมู่แบบมิติต่ำ
ภาพต่อไปนี้แสดงคลังคำศัพท์ (ค่าที่เป็นไปได้) สำหรับ car_color
แบบฝึกหัด: ทดสอบความเข้าใจ
ตัวเลขดัชนี
โมเดลแมชชีนเลิร์นนิงจะจัดการได้เฉพาะตัวเลขทศนิยม ดังนั้น คุณต้องแปลงสตริงแต่ละรายการเป็นหมายเลขดัชนีที่ไม่ซ้ำกัน ดังที่แสดงในภาพต่อไปนี้
หลังจากแปลงสตริงเป็นตัวเลขดัชนีที่ไม่ซ้ำกัน คุณจะต้องประมวลผลข้อมูลเพิ่มเติมเพื่อแสดงข้อมูลในลักษณะที่ช่วยให้โมเดลเรียนรู้ความสัมพันธ์ที่มีความหมายระหว่างค่าต่างๆ หากปล่อยข้อมูลฟีเจอร์เชิงหมวดหมู่เป็นจำนวนเต็มที่มีการจัดทำดัชนีและโหลดลงในโมเดล โมเดลจะถือว่าค่าที่จัดทําดัชนีเป็นจํานวนทศนิยมต่อเนื่อง จากนั้นโมเดลจะพิจารณาว่า "สีม่วง" มีแนวโน้มมากกว่า "สีส้ม" 6 เท่า
การเข้ารหัสแบบฮอตเดียว
ขั้นตอนถัดไปในการสร้างคําศัพท์คือการแปลงหมายเลขดัชนีแต่ละรายการเป็นการเข้ารหัสแบบฮอตเวิร์ก ในการเข้ารหัสแบบฮอตเวิร์ก 1 รายการ
- แต่ละหมวดหมู่แสดงด้วยเวกเตอร์ (อาร์เรย์) ขององค์ประกอบ N โดยที่ N คือจํานวนหมวดหมู่ เช่น หาก
car_color
มีหมวดหมู่ที่เป็นไปได้ 8 หมวดหมู่ เวกเตอร์ One-Hot ที่แสดงจะมีองค์ประกอบ 8 รายการ - องค์ประกอบในเวกเตอร์แบบฮอตเวกเตอร์ 1 รายการมีค่าเป็น 1.0 ส่วนองค์ประกอบที่เหลือทั้งหมดมีค่าเป็น 0.0
เช่น ตารางต่อไปนี้แสดงการเข้ารหัสแบบฮอตเดียวสำหรับแต่ละรายการในcar_color
ฟีเจอร์ | แดง | ส้ม | น้ำเงิน | เหลือง | เขียว | ดำ | ม่วง | สีน้ำตาล |
---|---|---|---|---|---|---|---|---|
"Red" | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
"Orange" | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
"Blue" | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
"Yellow" | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
"Green" | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
"Black" | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
"Purple" | 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 องค์ประกอบ สิ่งสำคัญคือโมเดลต้องฝึกด้วยเวกเตอร์แบบฮอตเวิร์ก ไม่ใช่การนำเสนอแบบเบาบาง
ค่าผิดปกติในข้อมูลเชิงหมวดหมู่
ข้อมูลเชิงหมวดหมู่ก็มีค่าผิดปกติเช่นเดียวกับข้อมูลเชิงตัวเลข สมมติว่า 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 มักเป็นตัวเลือกที่ไม่เหมาะ การฝัง ซึ่งจะแสดงรายละเอียดในโมดูลการฝังแยกต่างหาก มักเป็นตัวเลือกที่ดีกว่ามาก การฝังจะลดจํานวนมิติข้อมูลลงอย่างมาก ซึ่งจะเป็นประโยชน์ต่อโมเดลใน 2 วิธีสําคัญ ดังนี้
- ซึ่งโดยทั่วไปแล้วโมเดลจะได้รับการเทรนเร็วขึ้น
- โดยทั่วไปแล้ว โมเดลที่สร้างจะอนุมานการคาดการณ์ได้เร็วกว่า กล่าวคือ โมเดลมีเวลาในการตอบสนองต่ำกว่า
การแฮช (หรือที่เรียกว่าการแฮช เคล็ดลับ) เป็นวิธีที่ไม่ค่อยได้ใช้กันในการลดจํานวนมิติข้อมูล
คลิกที่นี่เพื่อดูข้อมูลเกี่ยวกับการแฮช