การแปลงข้อมูลเชิงหมวดหมู่

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

ในหลายกรณี คุณควรแสดงฟีเจอร์ที่มีค่าจํานวนเต็มเป็นข้อมูลเชิงหมวดหมู่แทนที่จะเป็นข้อมูลตัวเลข เช่น ลองเลือกฟีเจอร์รหัสไปรษณีย์ ที่ค่าเป็นจํานวนเต็ม หากคุณแสดงตัวเลขนี้โดยผิดพลาด ก็ขอที่โมเดลค้นหาความสัมพันธ์เชิงตัวเลขระหว่างรหัสไปรษณีย์ต่างๆ เช่น คาดว่ารูปแบบจะกําหนดรหัสไปรษณีย์ 20004 เป็น 2 เท่า (หรือครึ่งหนึ่ง) ของสัญญาณเป็นรหัสไปรษณีย์ 10002 การแสดงรหัสไปรษณีย์เป็นข้อมูลเชิงหมวดหมู่จะช่วยให้โมเดลค้นหาสัญญาณของแต่ละรหัสไปรษณีย์แยกกันได้

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

แต่ละสีในจานสีจะแสดงเป็นฟีเจอร์แยกจากกัน
กล่าวคือแต่ละสีเป็นฟีเจอร์แยกกันในเวกเตอร์ฟีเจอร์
เช่น สีแดงเป็นจุดสนใจ สีส้ม
เป็นคนละคุณลักษณะ และอื่นๆ ภาพที่ 1: ฟีเจอร์เฉพาะของแต่ละหมวดหมู่

 

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

จากนั้นฟีเจอร์ดังกล่าวจะได้รับการจัดทําดัชนี

แต่ละสีในจานสีจะอยู่ในฟีเจอร์เดียวกัน 
กล่าวคือ สีเป็นฟีเจอร์เดียวในเวกเตอร์ของฟีเจอร์
แต่ละสีมีค่าที่ไม่ซ้ํากัน เช่น สีแดงมีค่า 0 ส่วนสีส้มมีค่า 1 เป็นต้น ภาพที่ 2: ฟีเจอร์ที่จัดทําดัชนี

 

การจับคู่ประเภทนี้เรียกว่าคําศัพท์

คำศัพท์

ในคําศัพท์ ค่าแต่ละค่าจะแสดงคุณลักษณะที่ไม่ซ้ํากัน

Index NumberCategory
0Red
1Orange
2Blue
......

โมเดลค้นหาดัชนีจากสตริง กําหนดให้ 1.0 สําหรับช่องที่เกี่ยวข้องในเวกเตอร์ฟีเจอร์ และ 0.0 สําหรับช่องอื่นๆ ทั้งหมดในเวกเตอร์ฟีเจอร์

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

หมายเหตุเกี่ยวกับการนําเสนอแบบกระจัดกระจาย

เช่น หากหมวดหมู่เป็นวันของสัปดาห์ เช่น คุณอาจเป็นตัวแทนของวันศุกร์ที่มีเวกเตอร์ฟีเจอร์ [0, 0, 0, 0, 1, 0, 0] อย่างไรก็ตาม การใช้งานระบบ ML ส่วนใหญ่จะแสดงเวกเตอร์นี้ในหน่วยความจําด้วยการนําเสนอแบบกระจัดกระจาย ค่าที่ระบบพบโดยทั่วไปคือรายการค่าที่ไม่ว่างเปล่าและดัชนีที่เกี่ยวข้อง เช่น 1.0 สําหรับค่าและ [4] สําหรับดัชนี ซึ่งช่วยให้คุณใช้หน่วยความจําน้อยลงในการจัดเก็บ 0 วินาทีจํานวนมหาศาล และเป็นการคูณเมทริกซ์ที่มีประสิทธิภาพมากขึ้น ในแง่ของคณิตศาสตร์พื้นฐาน [4] เทียบเท่ากับ [0, 0, 0, 0, 1, 0, 0]

ออกจาก Vocab (OOV)

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

การแฮช

อีกทางเลือกหนึ่งคือแฮชทุกสตริง (หมวดหมู่) ไว้ในพื้นที่ดัชนีที่ใช้ได้ การแฮชมักเกิดการชนกัน แต่คุณจะต้องอาศัยโมเดลที่เรียนรู้จากการแชร์หมวดหมู่ต่างๆ ในดัชนีเดียวกัน ซึ่งทํางานได้ดีสําหรับโจทย์ดังกล่าว

สําหรับคําสําคัญ การแฮชอาจแย่กว่าการเลือกคําศัพท์เพราะการชนกัน ในทางกลับกัน การแฮชไม่ได้บังคับให้คุณรวบรวมคําศัพท์ ซึ่งมีข้อดีในกรณีที่การกระจายฟีเจอร์มีการเปลี่ยนแปลงอย่างมากเมื่อเวลาผ่านไป

แผนภาพแสดงคํา 2 คํา ซึ่งประกอบด้วย 10 คํา อีกรายการจะแสดงคํา 10 คําซึ่งแบ่งออกเป็นแฮช 8 รายการ ดังนั้น ที่เก็บข้อมูลแฮช 6 รายการมี 1 คํา ในขณะที่ที่เก็บข้อมูลของแฮช 2 รายการมีคํา 2 คํา  ที่เก็บข้อมูลแฮชแต่ละรายการจะระบุเป็นตัวเลขตั้งแต่ 1 ถึง 8 ภาพที่ 4: การจับคู่รายการกับคําศัพท์

การแฮชชิงและการคําศัพท์

คุณสามารถใช้วิธีการแบบผสมและผสมผสานการแฮชกับคําศัพท์ได้ ใช้คําศัพท์สําหรับหมวดหมู่ที่สําคัญที่สุดในข้อมูลของคุณ แต่แทนที่ที่เก็บข้อมูล OOV ด้วยที่เก็บข้อมูล OOV หลายรายการ และใช้การแฮชเพื่อกําหนดหมวดหมู่ให้กับที่เก็บข้อมูล

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

แผนภาพแสดงรายการคํา 3 คํา โดยรายการจะประกอบด้วยคํา 10 คําเพื่อจัดหมวดหมู่ อีก 2 รายการจะแมป 10 คําเหล่านั้นลงในคําศัพท์และแฮช ซึ่งหมายความว่า 5 คําจะจับคู่กับคําศัพท์โดยตรง ในขณะที่อีก 5 คําจะแมปกับที่เก็บข้อมูลแฮช 2 รายการ ที่เก็บข้อมูลแฮช 1 รายการประกอบด้วย 2 คํา ส่วนแฮชแฮชอื่นประกอบด้วย 3 คํา  คําศัพท์ประกอบด้วยคําทั่วไป ส่วนแฮชจะมีคําที่ไม่ค่อยพบ รูปที่ 5: วิธีการแบบผสมทั้งคําศัพท์และการแฮช

หมายเหตุเกี่ยวกับการฝัง

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

แผนภาพแสดงกระบวนการครบวงจรสําหรับหมวดหมู่การแมปในการแสดงเวกเตอร์ผ่านการฝัง ตารางแบบฝังจะประกอบไปด้วยชุดแถวที่มีลําดับตัวเลข แต่ละแถวจะประกอบด้วยชุดของค่าทศนิยมระหว่าง 0.0 ถึง 1.0 หากต้องการแปลงหมวดหมู่ ระบบจะคัดลอกแถวที่เกี่ยวข้องจากตารางการฝัง
เช่น หากหมวดหมู่อินพุตเป็น 0 ระบบจะคัดลอกแถวแรกของตารางการฝังไปยังเวกเตอร์ฟีเจอร์ หากหมวดหมู่อินพุตคือ 1 ระบบจะคัดลอกแถวที่สองของตารางการฝังไปยังเวกเตอร์ฟีเจอร์ ภาพที่ 6: เวกเตอร์ฟีเจอร์เสริมผ่านการฝัง

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

แล้วการฝังไฟล์ที่ฝัง การฝังแบบฝึกหัดโดยทั่วไปจะปรับแต่งได้ในระหว่างการฝึกอบรม แม้ว่าจะยังเป็นแนวคิดของโมเดลก็ตาม