ข้อมูลเชิงหมวดหมู่: คำศัพท์และการเข้ารหัสแบบฮอตเดียว

คําว่ามิติข้อมูลเป็นคําพ้องกับจํานวนองค์ประกอบในเวกเตอร์องค์ประกอบ ฟีเจอร์เชิงหมวดหมู่บางรายการมีมิติข้อมูลต่ำ เช่น

ชื่อฟีเจอร์ จำนวนหมวดหมู่ ตัวอย่างหมวดหมู่
snowed_today 2 จริง เท็จ
skill_level 3 ผู้เริ่มต้น ผู้ปฏิบัติงาน ผู้เชี่ยวชาญ
season 4 ฤดูหนาว ฤดูใบไม้ผลิ ฤดูร้อน ฤดูใบไม้ร่วง
day_of_week 7 วันจันทร์ วันอังคาร วันพุธ
ดาวเคราะห์ 8 ดาวพุธ ดาวศุกร์ โลก

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

ตัวอย่างเช่น สมมติว่าคุณกําลังสร้างโมเดลเพื่อคาดการณ์ราคารถยนต์โดยอิงตามฟีเจอร์เชิงหมวดหมู่ชื่อ car_color เพียงบางส่วน รถยนต์สีแดงอาจมีมูลค่ามากกว่ารถยนต์สีเขียว เนื่องจากผู้ผลิตมีสีภายนอกให้เลือกไม่มากนัก car_color จึงถือเป็นฟีเจอร์เชิงหมวดหมู่แบบมิติต่ำ ภาพต่อไปนี้แสดงคลังคำศัพท์ (ค่าที่เป็นไปได้) สำหรับ car_color

รูปที่ 1 สีแต่ละสีในจานสีจะแสดงเป็นฟีเจอร์แยกกัน กล่าวคือ สีแต่ละสีคือองค์ประกอบแยกต่างหากในเวกเตอร์องค์ประกอบ
      เช่น "สีแดง" เป็นฟีเจอร์หนึ่ง "สีส้ม" เป็นฟีเจอร์แยกต่างหาก และอื่นๆ
รูปที่ 1 ฟีเจอร์ที่ไม่ซ้ำกันสำหรับแต่ละหมวดหมู่

แบบฝึกหัด: ทดสอบความเข้าใจ

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

ตัวเลขดัชนี

โมเดลแมชชีนเลิร์นนิงจะจัดการได้เฉพาะตัวเลขทศนิยม ดังนั้น คุณต้องแปลงสตริงแต่ละรายการเป็นหมายเลขดัชนีที่ไม่ซ้ำกัน ดังที่แสดงในภาพต่อไปนี้

รูปที่ 2 แต่ละสีจะเชื่อมโยงกับค่าจำนวนเต็มที่ไม่ซ้ำกัน เช่น "สีแดง" เชื่อมโยงกับจำนวนเต็ม 0, "สีส้ม" เชื่อมโยงกับจำนวนเต็ม 1 เป็นต้น
รูปที่ 2 องค์ประกอบที่จัดทําดัชนี

หลังจากแปลงสตริงเป็นตัวเลขดัชนีที่ไม่ซ้ำกัน คุณจะต้องประมวลผลข้อมูลเพิ่มเติมเพื่อแสดงข้อมูลในลักษณะที่ช่วยให้โมเดลเรียนรู้ความสัมพันธ์ที่มีความหมายระหว่างค่าต่างๆ หากปล่อยข้อมูลฟีเจอร์เชิงหมวดหมู่เป็นจำนวนเต็มที่มีการจัดทำดัชนีและโหลดลงในโมเดล โมเดลจะถือว่าค่าที่จัดทําดัชนีเป็นจํานวนทศนิยมต่อเนื่อง จากนั้นโมเดลจะพิจารณาว่า "สีม่วง" มีแนวโน้มมากกว่า "สีส้ม" 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 ไม่ใช่สตริงหรือหมายเลขดัชนีไปยังเวกเตอร์ลักษณะ โมเดลจะเรียนรู้น้ำหนักแยกกันสำหรับองค์ประกอบแต่ละรายการของเวกเตอร์ลักษณะ

ภาพประกอบต่อไปนี้แสดงการเปลี่ยนรูปแบบต่างๆ ในการแสดงคำศัพท์

รูปที่ 3 แผนภาพกระบวนการจากต้นจนจบในการแมปหมวดหมู่กับเวกเตอร์องค์ประกอบ ในแผนภาพ ฟีเจอร์อินพุตคือ "สีเหลือง",
      'สีส้ม", 'สีน้ำเงิน" และ "สีน้ำเงิน" อีกครั้ง  ระบบจะใช้คลังคำศัพท์ที่จัดเก็บไว้ ("แดง" คือ 0, "ส้ม" คือ 1, "น้ำเงิน" คือ 2, "เหลือง" คือ 3 และอื่นๆ) เพื่อจับคู่ค่าอินพุตกับรหัส ดังนั้น ระบบจะจับคู่ "สีเหลือง",
      'สีส้ม", 'สีน้ำเงิน" และ "สีน้ำเงิน" เป็น 3, 1, 2, 2 จากนั้นระบบจะแปลงค่าเหล่านั้นเป็นเวกเตอร์ฟีเจอร์แบบฮอตเวิร์ก ตัวอย่างเช่น ระบบที่มีสีให้เลือก 8 สี จะทำให้ 3 กลายเป็น 0, 0, 0, 1, 0, 0, 0, 0
รูปที่ 3 กระบวนการจากต้นจนจบในการแมปหมวดหมู่กับเวกเตอร์ฟีเจอร์

การนําเสนอแบบเบาบาง

ฟีเจอร์ที่มีค่าเป็น 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 วิธีสําคัญ ดังนี้

  • ซึ่งโดยทั่วไปแล้วโมเดลจะได้รับการเทรนเร็วขึ้น
  • โดยทั่วไปแล้ว โมเดลที่สร้างจะอนุมานการคาดการณ์ได้เร็วกว่า กล่าวคือ โมเดลมีเวลาในการตอบสนองต่ำกว่า

การแฮช (หรือที่เรียกว่าการแฮช เคล็ดลับ) เป็นวิธีที่ไม่ค่อยได้ใช้กันในการลดจํานวนมิติข้อมูล

กล่าวโดยย่อคือ การแฮชจะแมปหมวดหมู่ (เช่น สี) กับจำนวนเต็มขนาดเล็ก ซึ่งเป็นจํานวน "ที่เก็บข้อมูล" ที่จะเก็บหมวดหมู่นั้น

โดยรายละเอียดการใช้งานอัลกอริทึมการแฮชมีดังนี้

  1. กําหนดจํานวนกล่องในเวกเตอร์ของหมวดหมู่เป็น N โดยที่ N น้อยกว่าจํานวนหมวดหมู่ที่เหลือทั้งหมด สมมติว่า N = 100
  2. เลือกฟังก์ชันแฮช (โดยปกติแล้ว คุณจะต้องเลือกช่วงของค่าแฮชด้วย)
  3. ส่งแต่ละหมวดหมู่ (เช่น สีหนึ่งๆ) ผ่านฟังก์ชันแฮชนั้น ซึ่งจะสร้างค่าแฮช เช่น 89237
  4. กําหนดหมายเลขดัชนีของค่าแฮชเอาต์พุต modulo N ให้กับแต่ละช่อง ในกรณีนี้ N คือ 100 และค่าแฮชคือ 89237 ผลลัพธ์ของ modulo จะเท่ากับ 37 เนื่องจาก 89237 % 100 เท่ากับ 37
  5. สร้างการเข้ารหัสแบบฮอตเดียวสําหรับแต่ละกลุ่มโดยใช้หมายเลขดัชนีใหม่เหล่านี้

ดูรายละเอียดเพิ่มเติมเกี่ยวกับการแฮชข้อมูลได้ในส่วนการสุ่มของข้อบังคับระบบแมชชีนเลิร์นนิงเวอร์ชันที่ใช้งานจริง