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

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

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

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

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

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

แบบฝึกหัด: ตรวจสอบสัญชาติญาณของคุณ

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

หมายเลขดัชนี

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

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

ตรวจสอบสัญชาติญาณของคุณ

ควรฝึกโมเดลโดยตรงกับตัวเลขดัชนีที่แสดงหรือไม่ ในรูปที่ 2
ใช่
หากโมเดลมีการฝึกตัวเลขดัชนี ถือว่าแต่ละเมตริกเป็นค่าตัวเลขอย่างไม่ถูกต้องและ "Black" (หมายเลขดัชนี 5) ให้มีความหมายมากขึ้น 5 เท่า เป็นโมเดลมากกว่า "Orange" (ดัชนีหมายเลข 1)
ไม่ได้
โมเดลของคุณไม่ควรฝึกกับตัวเลขดัชนี หากใช่ โมเดลของคุณจะถือว่าหมายเลขดัชนีแต่ละรายการเป็นตัวเลข และถือว่า "Black" (หมายเลขดัชนี 5) เป็น มีความหมายต่อโมเดลมากกว่า "Orange" ถึง 5 เท่า (หมายเลขดัชนี 1)

การเข้ารหัสแบบ One-hot

ขั้นตอนถัดไปในการสร้างคำศัพท์คือการแปลงหมายเลขดัชนีแต่ละตัวเป็น การเข้ารหัสแบบฮอตเดียว ในการเข้ารหัสแบบ One-hot

  • แต่ละหมวดหมู่จะแสดงด้วยเวกเตอร์ (อาร์เรย์) ขององค์ประกอบ N โดยที่ N คือจำนวนหมวดหมู่ เช่น ถ้า car_color มี 8 รายการที่เป็นไปได้ เวกเตอร์ร้อนๆ ที่แสดงแทนจะมี 8 องค์ประกอบ
  • องค์ประกอบรายการใดรายการหนึ่งในเวกเตอร์เดียวมีค่า 1.0 องค์ประกอบที่เหลือทั้งหมดจะมีค่า 0.0

ตัวอย่างเช่น ตารางต่อไปนี้แสดงการเข้ารหัสแบบหนึ่งแบบฮอตสำหรับแต่ละ car_color:

ฟีเจอร์ แดง Orange น้ำเงิน เหลือง เขียว ดำ ม่วง สีน้ำตาล
"แดง" 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 0
"น้ำตาล" 0 0 0 0 0 0 0 1

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

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

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

การนำเสนอข้อมูลน้อย

คุณลักษณะที่มีค่าเป็น 0 (หรือว่างเปล่า) อย่างเห็นได้ชัดจะเรียกว่า ฟีเจอร์บางส่วน หลายหน้า ฟีเจอร์ตามหมวดหมู่ เช่น car_color มักเป็นฟีเจอร์ที่ไม่ครอบคลุม การนำเสนอแบบคร่าวๆ หมายถึงการจัดเก็บตำแหน่งของ 1.0 ในเวกเตอร์บางส่วน ตัวอย่างเช่น เวกเตอร์หนึ่งฮอตสำหรับ "Blue" คือ

[0, 0, 1, 0, 0, 0, 0, 0]

เนื่องจาก 1 อยู่ในตำแหน่ง 2 (เมื่อเริ่มนับที่ 0) การนำเสนอแบบคร่าวๆ สำหรับเวกเตอร์ร้อนเดียวที่อยู่ก่อนหน้าคือ

2

โปรดสังเกตว่าการนำเสนอแบบคร่าวๆ จะใช้หน่วยความจำน้อยกว่า เวกเตอร์ร้อนเดียวที่มี 8 องค์ประกอบ และที่สำคัญ โมเดลจะต้องฝึก เวกเตอร์ร้อนเดียว ไม่ใช่รูปแบบที่กระจัดกระจาย

ค่าผิดปกติในข้อมูลเชิงหมวดหมู่

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

การเข้ารหัสฟีเจอร์เชิงหมวดหมู่ที่มีมิติสูง

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

ชื่อฟีเจอร์ # ของหมวดหมู่ หมวดหมู่ตัวอย่าง
words_in_english ประมาณ 500,000 คน "มีความสุข", "เดิน"
US_postal_codes ประมาณ 42,000 คน "02114", "90301"
last_names_in_Germany ประมาณ 850,000 คน "ชมิดช์" "ชไนเดอร์"

เมื่อมีหมวดหมู่สูง การเข้ารหัสแบบ Hot มักเป็นตัวเลือกที่ไม่เหมาะสม การฝัง ซึ่งจะมีรายละเอียดแยกต่างหาก โมดูลการฝังมักจะ เป็นทางเลือกที่ดีกว่ามาก การฝังช่วยลดจำนวนของ ซึ่งมีประโยชน์ต่อการสร้างรูปแบบที่สำคัญ 2 ประการดังนี้

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

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