ฟีเจอร์บางอย่างของคุณอาจมีแยกต่างหากจากค่าที่ไม่เกี่ยวข้อง เช่น พันธุ์สุนัข คํา หรือรหัสไปรษณีย์ ฟีเจอร์เหล่านี้เรียกว่าหมวดหมู่ และค่าแต่ละค่าเรียกว่าหมวดหมู่ คุณแทนค่าเชิงหมวดหมู่เป็นสตริงหรือตัวเลขได้ แต่จะเปรียบเทียบตัวเลขเหล่านี้หรือนํามาแทนที่กันเองไม่ได้
ในหลายกรณี คุณควรแสดงฟีเจอร์ที่มีค่าจํานวนเต็มเป็นข้อมูลเชิงหมวดหมู่แทนที่จะเป็นข้อมูลตัวเลข เช่น ลองเลือกฟีเจอร์รหัสไปรษณีย์ ที่ค่าเป็นจํานวนเต็ม หากคุณแสดงตัวเลขนี้โดยผิดพลาด ก็ขอที่โมเดลค้นหาความสัมพันธ์เชิงตัวเลขระหว่างรหัสไปรษณีย์ต่างๆ เช่น คาดว่ารูปแบบจะกําหนดรหัสไปรษณีย์ 20004 เป็น 2 เท่า (หรือครึ่งหนึ่ง) ของสัญญาณเป็นรหัสไปรษณีย์ 10002 การแสดงรหัสไปรษณีย์เป็นข้อมูลเชิงหมวดหมู่จะช่วยให้โมเดลค้นหาสัญญาณของแต่ละรหัสไปรษณีย์แยกกันได้
หากช่องข้อมูลมีหมวดหมู่น้อย เช่น วันของสัปดาห์หรือชุดสีที่มีจํากัด คุณก็สร้างฟีเจอร์เฉพาะสําหรับแต่ละหมวดหมู่ได้ เช่น
ภาพที่ 1: ฟีเจอร์เฉพาะของแต่ละหมวดหมู่
โมเดลจะเรียนรู้น้ําหนักที่แยกกันสําหรับแต่ละสีได้ ตัวอย่างเช่น บางรุ่นอาจเรียนรู้ว่ารถยนต์สีแดงมีราคาแพงกว่ารถสีเขียว
จากนั้นฟีเจอร์ดังกล่าวจะได้รับการจัดทําดัชนี
ภาพที่ 2: ฟีเจอร์ที่จัดทําดัชนี
การจับคู่ประเภทนี้เรียกว่าคําศัพท์
คำศัพท์
ในคําศัพท์ ค่าแต่ละค่าจะแสดงคุณลักษณะที่ไม่ซ้ํากัน
Index Number | Category |
---|---|
0 | Red |
1 | Orange |
2 | Blue |
... | ... |
โมเดลค้นหาดัชนีจากสตริง กําหนดให้ 1.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 จะไม่ทําให้เสียเวลากับการฝึกสีหายากแต่ละสี
การแฮช
อีกทางเลือกหนึ่งคือแฮชทุกสตริง (หมวดหมู่) ไว้ในพื้นที่ดัชนีที่ใช้ได้ การแฮชมักเกิดการชนกัน แต่คุณจะต้องอาศัยโมเดลที่เรียนรู้จากการแชร์หมวดหมู่ต่างๆ ในดัชนีเดียวกัน ซึ่งทํางานได้ดีสําหรับโจทย์ดังกล่าว
สําหรับคําสําคัญ การแฮชอาจแย่กว่าการเลือกคําศัพท์เพราะการชนกัน ในทางกลับกัน การแฮชไม่ได้บังคับให้คุณรวบรวมคําศัพท์ ซึ่งมีข้อดีในกรณีที่การกระจายฟีเจอร์มีการเปลี่ยนแปลงอย่างมากเมื่อเวลาผ่านไป
ภาพที่ 4: การจับคู่รายการกับคําศัพท์
การแฮชชิงและการคําศัพท์
คุณสามารถใช้วิธีการแบบผสมและผสมผสานการแฮชกับคําศัพท์ได้ ใช้คําศัพท์สําหรับหมวดหมู่ที่สําคัญที่สุดในข้อมูลของคุณ แต่แทนที่ที่เก็บข้อมูล OOV ด้วยที่เก็บข้อมูล OOV หลายรายการ และใช้การแฮชเพื่อกําหนดหมวดหมู่ให้กับที่เก็บข้อมูล
หมวดหมู่ในที่เก็บข้อมูลแฮชต้องใช้ดัชนีร่วมกัน และโมเดลน่าจะคาดการณ์ได้ไม่ดี แต่มีการจัดสรรหน่วยความจําจํานวนหนึ่งเพื่อพยายามเรียนรู้หมวดหมู่ที่อยู่นอกคําศัพท์ของเรา
รูปที่ 5: วิธีการแบบผสมทั้งคําศัพท์และการแฮช
หมายเหตุเกี่ยวกับการฝัง
เรียกคืนจากหลักสูตรแมชชีนเลิร์นนิงว่าการฝังเป็นฟีเจอร์ตามหมวดหมู่ซึ่งทําหน้าที่เป็นฟีเจอร์ที่เน้นคุณค่าต่อไป โมเดลเชิงลึกมักแปลงดัชนีจากดัชนีเป็นการฝัง
ภาพที่ 6: เวกเตอร์ฟีเจอร์เสริมผ่านการฝัง
การแปลงแบบอื่นๆ ที่เราได้คุยกันอาจมีการจัดเก็บอยู่ในดิสก์ แต่การฝังจะแตกต่างกัน เนื่องจากการฝังได้รับการฝึกมา จึงไม่ใช่การแปลงข้อมูลทั่วไป แต่เป็นส่วนหนึ่งของรูปแบบ โดยจะมีการฝึกด้วยน้ําหนักรูปแบบอื่นๆ และทําหน้าที่เหมือนกับชั้นน้ําหนัก
แล้วการฝังไฟล์ที่ฝัง การฝังแบบฝึกหัดโดยทั่วไปจะปรับแต่งได้ในระหว่างการฝึกอบรม แม้ว่าจะยังเป็นแนวคิดของโมเดลก็ตาม