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