การเข้ารหัสความร้อนแบบเดี่ยวเป็นคําศัพท์ทั่วไปในการวิเคราะห์ข้อมูล การเรียนรู้ของเครื่อง และปัญญาประดิษฐ์ ใช้เพื่ออธิบายวิธีการแปลงข้อมูลตามหมวดหมู่เป็นการแสดงตัวเลข กล่าวอีกนัยหนึ่งบทบาทของ Solo Hot Coding คือการแปลงป้ายกํากับหมวดหมู่ที่เดิมไม่สามารถมีส่วนร่วมในการคํานวณเชิงตัวเลขได้โดยตรงเป็นรูปแบบเวกเตอร์ที่โมเดลสามารถประมวลผลได้
หากแท็กหมวดหมู่เดิมตอบว่า "อยู่ในหมวดหมู่ใด" รหัสความร้อนที่ไม่ซ้ํากันจะตอบว่า "หมวดหมู่นี้แสดงด้วยชุดตัวเลขมาตรฐานอย่างไร" ดังนั้นการเข้ารหัสความร้อนจึงมักใช้ในวิศวกรรมคุณลักษณะการสร้างแบบจําลองการจําแนกประเภทการแสดงข้อความและการประมวลผลข้อมูลล่วงหน้าและดํารงตําแหน่งพื้นฐานในปัญญาประดิษฐ์
1. แนวคิดพื้นฐาน: หลักการ Heat Monocoding คืออะไร
การเข้ารหัสแบบ One-Hot เป็นวิธีการแปลงตัวแปรคลาสเป็นเวกเตอร์ไบนารี แนวคิดหลักนั้นง่ายมาก: กําหนดตําแหน่งเฉพาะให้กับแต่ละหมวดหมู่ที่เป็นไปได้ และสําหรับแต่ละหมวดหมู่ ให้บันทึกตําแหน่งที่เกี่ยวข้องเป็น 1 และส่วนที่เหลือเป็น 0
ตัวอย่างเช่น หากตัวแปร "color" มีค่าที่เป็นไปได้เพียงสามค่า:
• สีแดง
• สีเขียว
• สีน้ําเงิน
การเข้ารหัสโมโนเทอร์มอลสามารถเขียนได้ดังนี้:
• สีแดง: [1, 0, 0]
• สีเขียว: [0, 1, 0]
• สีน้ําเงิน: [0, 0, 1]
คุณจะเห็นว่าการแสดงนี้มีคุณสมบัติที่ชัดเจนมาก: ในแต่ละเวกเตอร์มีเพียงตําแหน่งเดียวคือ 1 ในขณะที่ตําแหน่งอื่น ๆ ทั้งหมดเป็น 0
นี่คือที่มาของชื่อ "Dure":"ร้อน" สามารถเข้าใจได้ว่าเป็นการเปิดใช้งานหรือแสงสว่าง"Dukere" หมายถึงจุดเดียวที่สว่างขึ้น
จากมุมมองง่ายๆ รหัส Duke สามารถเข้าใจได้ว่า: แต่ละหมวดหมู่จะได้รับที่นั่งเฉพาะเมื่อใดก็ตามที่หมวดหมู่ปรากฏขึ้น หมวดหมู่นั้นจะนั่งในที่นั่งของตัวเอง ในขณะที่ส่วนที่เหลือยังคงว่างเปล่า
ตัวอย่างเช่น หากเราพิจารณาว่า "วันธรรมดา" เป็นตัวแปรหมวดหมู่ ให้ทําดังนี้
星期日
จากนั้น "วันพุธ" สามารถแสดงเป็นเวกเตอร์เจ็ดมิติ โดยที่เฉพาะตําแหน่งที่สอดคล้องกับ "วันพุธ" คือ 1 และตําแหน่งอื่นๆ คือ 0
โดยทั่วไปหากตัวแปรคลาสมีค่าที่เป็นไปได้ n ความยาวเวกเตอร์หลังจากการเข้ารหัสมักจะเป็น n
ให้ชุดคลาสเป็น:
จากนั้นการเข้ารหัสความร้อนที่เป็นเอกลักษณ์ของคลาส c_i สามารถเข้าใจได้ว่าเป็นเวกเตอร์ที่มีความยาว n:
เมื่อตําแหน่ง i สอดคล้องกับหมวดหมู่ก่อนหน้า x_i = 1 ตําแหน่งอื่นๆ ทั้งหมดเป็น 0
ตัวอย่างเช่น หากมีสี่ประเภท:
D
ดังนั้น:
D → [0, 0, 0, 1]
นี่แสดงให้เห็นว่าสาระสําคัญของ Solo Hot Coding ไม่ได้เกี่ยวกับ "การคํานวณความสัมพันธ์ระหว่างหมวดหมู่" แต่เกี่ยวกับการเปลี่ยนหมวดหมู่ให้เป็นเวกเตอร์ตัวเลขในลักษณะที่ไม่แนะนําลําดับขนาด นี่เป็นสิ่งสําคัญมาก เพราะหลายหมวดหมู่เองไม่มีความสัมพันธ์กับขนาดตามธรรมชาติ
ตัวอย่างเช่น:
• แดง เขียว น้ําเงิน
• แมว สุนัข นก
• ปักกิ่ง เซี่ยงไฮ้ กวางโจว
หากคุณเข้ารหัสโดยตรงเป็น:
• สีแดง = 1
• สีเขียว = 2
• สีน้ําเงิน = 3
ดังนั้นแบบจําลองอาจเข้าใจผิดคิดว่า "สีน้ําเงินใหญ่กว่าสีเขียว" หรือ "สีเขียวเล็กกว่าสีแดง" ซึ่งเห็นได้ชัดว่าไม่มีความหมายในทางปฏิบัติ ข้อดีของ Solo Hot Coding คือไม่ได้สร้างกฎขนาดที่ไม่มีอยู่จริงดังกล่าว
2. ความสําคัญของการเข้ารหัสความร้อนและสถานการณ์การใช้งานทั่วไป
1. ความสําคัญของการเข้ารหัสความร้อนเดี่ยว
การเข้ารหัสความร้อนมีความสําคัญเนื่องจากโมเดลแมชชีนเลิร์นนิงมักต้องการอินพุตเชิงตัวเลข ในขณะที่ข้อมูลในโลกแห่งความเป็นจริงมักมีตัวแปรตามหมวดหมู่จํานวนมาก
ตัวอย่างเช่น:
邮件类型
ตัวแปรเหล่านี้ไม่ใช่ค่าต่อเนื่องและไม่สามารถใช้โดยตรงสําหรับการคํานวณหลายค่าได้ การเข้ารหัสความร้อนเป็นหนึ่งในวิธีการแปลงพื้นฐานและใช้กันทั่วไป
ประการแรก การเข้ารหัสความร้อนที่ไม่ซ้ํากันช่วยให้ข้อมูลหมวดหมู่สามารถเข้าสู่แบบจําลองได้
มันแปลง "ป้ายกํากับ" เป็นเวกเตอร์ ทําให้โมเดลสามารถประมวลผลข้อมูลตามหมวดหมู่ควบคู่ไปกับคุณลักษณะตัวเลขอื่นๆ
ประการที่สอง การเข้ารหัสความร้อนเดี่ยวจะหลีกเลี่ยงการเรียงลําดับขนาดที่ไม่ถูกต้อง
หากหมวดหมู่ถูกกําหนดหมายเลขโดยตรงด้วยจํานวนเต็ม แบบจําลองอาจเข้าใจรูปแบบขนาดของตัวเลขเหล่านี้ผิด การเข้ารหัสความร้อนไม่ได้แนะนําข้อมูลลําดับที่ผิดพลาดนี้
ประการที่สาม รูปแบบการเข้ารหัสความร้อนแบบสแตนด์อโลนนั้นเรียบง่าย ใช้งานง่าย และใช้งานง่าย
สําหรับผู้เริ่มต้น เป็นหนึ่งในจุดเริ่มต้นที่ดีที่สุดในการทําความเข้าใจว่าข้อมูลตามหมวดหมู่ถูกวัดปริมาณอย่างไร สําหรับโมเดลพื้นฐานหลายรุ่น มันยังเป็นวิธีการประมวลผลล่วงหน้าที่ใช้งานได้จริง
โดยสรุป: ป้ายกํากับหมวดหมู่เดิมระบุว่า "เป็นของหมวดหมู่ใด"; การเข้ารหัสโมโนเทอร์มอลอธิบาย "วิธีแปลงคลาสนี้เป็นเวกเตอร์ตัวเลขปกติ"
2. สถานการณ์การใช้งานทั่วไป
(1) ในการเรียนรู้ของเครื่อง การเข้ารหัสความร้อนมักใช้สําหรับคุณสมบัติคลาสก่อนการประมวลผล
ในงานต่างๆ เช่น การจัดประเภทและการถดถอย ข้อมูลอินพุตมักมีทั้งคุณลักษณะเชิงตัวเลขและประเภท
ตัวอย่างเช่น ตารางข้อมูลผู้ใช้อาจประกอบด้วย
性别
ที่นี่ "เมือง" และ "เพศ" เป็นคุณลักษณะของหมวดหมู่ ซึ่งมักจะต้องมีการเข้ารหัสความร้อนเฉพาะก่อนป้อนแบบจําลอง
(2) ในการประมวลผลข้อความ การเข้ารหัส Dureh สามารถใช้สําหรับการแสดงคําพื้นฐานที่สุด
ในวิธีการประมวลผลภาษาธรรมชาติในยุคแรก ๆ บางครั้งคําก็ถูกแสดงเป็นเวกเตอร์ความร้อนเฉพาะของความยาวของรายการคํา
ตัวอย่างเช่น หากรายการคํามีคํา 10,000 คํา แต่ละคําสามารถสอดคล้องกับเวกเตอร์ที่มีความยาว 10,000 โดยมีเพียงตําแหน่งเดียวที่เป็น 1
แม้ว่าการแสดงนี้มักจะถูกแทนที่ด้วยวิธีการเวกเตอร์คําขั้นสูงในภายหลัง แต่ก็ยังคงเป็นรากฐานที่สําคัญสําหรับการทําความเข้าใจการแสดงข้อความเชิงตัวเลข
(3) ในการเรียนรู้เชิงลึก ป้ายกํากับคลาสมักจะถูกแปลงเป็นการเข้ารหัสความร้อนเดี่ยวก่อน
ในงานหลายหมวดหมู่ ฉลากมักจะถูกประมวลผลเป็นรูปแบบการเข้ารหัสความร้อนเดียว
ตัวอย่างเช่น ถ้าตัวอย่างอยู่ในหมวดหมู่ 3 ป้ายชื่ออาจเป็น:
[0, 0, 1, 0, 0]
ทําให้ง่ายต่อการเปรียบเทียบกับผลลัพธ์ของแบบจําลองและคํานวณการสูญเสีย
(4) ในระบบคําแนะนําและการวิเคราะห์ธุรกิจการเข้ารหัสความร้อนแบบสแตนด์อโลนก็เป็นเรื่องปกติเช่นกัน
ตัวอย่างเช่น:
访问来源渠道
หมวดหมู่ที่ไม่ต่อเนื่องเหล่านี้มักต้องเข้ารหัสก่อนที่จะเข้าสู่แบบจําลองการวิเคราะห์หรือระบบคําแนะนํา
(5) ในการวิเคราะห์ตาราง การเข้ารหัสความร้อนที่ไม่ซ้ํากันมักใช้เพื่อขยายคอลัมน์การจําแนกประเภทออกเป็นหลายคอลัมน์
ในเครื่องมือประมวลผลข้อมูลที่ใช้งานได้จริง การเข้ารหัสความร้อนเดี่ยวมักแสดงเป็น "การขยายฟิลด์หมวดหมู่เป็นคอลัมน์ 0/1 หลายคอลัมน์" นี่เป็นเรื่องปกติสําหรับการแสดงภาพ การสร้างแบบจําลองทางสถิติ และวิศวกรรมคุณลักษณะแบบตาราง
โดยสรุป: ตัวแปรหมวดหมู่ระบุว่า "วัตถุนี้เป็นของหมวดหมู่ใด"; การเข้ารหัสความร้อนเดี่ยวอธิบาย "วิธีที่หมวดหมู่นี้ขยายไปสู่ตําแหน่งไบนารีที่คํานวณได้หลายตําแหน่ง"
3. ความแตกต่างระหว่างการเข้ารหัสความร้อนเดี่ยวและการเข้ารหัสจํานวนเต็ม
เหตุผลสําคัญประการหนึ่งที่มักเน้นการเข้ารหัสความร้อนเดี่ยวก็คือโดยพื้นฐานแล้วแตกต่างจาก "การกําหนดหมายเลขโดยตรง"
1. การเข้ารหัสจํานวนเต็มแนะนําความสัมพันธ์ขนาดเท็จ
ตัวอย่างเช่น ถ้าสีถูกเข้ารหัสเป็น:
蓝色 = 3
ดังนั้นสําหรับหลายรุ่นดูเหมือน:
蓝色 > 绿色 > 红色
แต่สีเองไม่มีลําดับตัวเลขดังกล่าว
2. รหัสความร้อนอิสระระบุเฉพาะ "ไม่ว่าจะอยู่ในหมวดหมู่หรือไม่"
ตัวอย่างเช่น:
蓝色 → [0, 0, 1]
รุ่นนี้ไม่เห็นว่าตัวเลขใดมากกว่า แต่เฉพาะ "ตําแหน่งใดเปิดใช้งาน"
3. วิธีใดเหมาะสมกว่านั้นขึ้นอยู่กับว่าตัวแปรอยู่ในลําดับหรือไม่
หากหมวดหมู่มีลําดับที่ชัดเจน เช่น
大
ในบางกรณี การกําหนดหมายเลขโดยตรงอาจไม่เหมาะสม
อย่างไรก็ตาม สําหรับตัวแปรคลาสที่ไม่ได้เรียงลําดับส่วนใหญ่ (ตัวแปรที่กําหนด) การเข้ารหัสความร้อนเดี่ยวมักจะมีความน่าเชื่อถือมากกว่า
ดังนั้นจึงสามารถสรุปได้ง่ายๆ ดังนี้: หมวดหมู่ที่ไม่ได้เรียงลําดับ: มักจะเหมาะสําหรับการเข้ารหัสความร้อนเดี่ยวมากกว่า หมวดหมู่ที่สั่งซื้อ: บางครั้งคุณสามารถพิจารณาเก็บข้อมูลการสั่งซื้อไว้ได้
4. ประเด็นที่ควรทราบเมื่อใช้การเข้ารหัสความร้อนแบบสแตนด์อโลน
แม้ว่าการเข้ารหัส Duke จะเรียบง่ายและใช้กันทั่วไป แต่ก็มีหลายประเด็นที่ต้องใส่ใจเมื่อทําความเข้าใจและใช้งาน
1. ยิ่งหมวดหมู่มากเท่าไหร่ มิติการเข้ารหัสก็จะยิ่งสูงขึ้น
หากตัวแปรหมวดหมู่มีค่าเพียง 3 ค่าการเข้ารหัสความร้อนที่ไม่ซ้ํากันนั้นง่ายมาก
แต่ถ้าตัวแปรมีหมวดหมู่ที่แตกต่างกัน 1,000 หรือ 10,000 หมวดหมู่เวกเตอร์ที่เข้ารหัสโดยความร้อนแต่ละตัวจะยาวมาก
สิ่งนี้ทําให้เกิดคําถามสองข้อ:
• ขนาดคุณสมบัติเพิ่มขึ้นอย่างรวดเร็ว
•ข้อมูลจะเบาบางมาก
ดังนั้นสําหรับคุณสมบัติหมวดหมู่คาร์ดินาลลิตี้สูงการเข้ารหัสความร้อนที่ไม่ซ้ํากันจึงไม่ใช่ตัวเลือกที่เหมาะสมที่สุดเสมอไป
2. การเข้ารหัสความร้อนไม่ได้แสดงความคล้ายคลึงกันระหว่างคลาส
ในวิธีการ Monocoding ความร้อน:
蓝色 → [0, 0, 1]
หมวดหมู่เหล่านี้เป็นตัวเลข "ห่างกันเท่า ๆ กัน" ทําให้ไม่สามารถบอกได้ว่าหมวดหมู่ใดอยู่ใกล้กับใครมากกว่า
ซึ่งหมายความว่าการเข้ารหัสแบบความร้อนเดี่ยวสามารถแยกแยะได้เฉพาะหมวดหมู่เท่านั้น และมักจะไม่สามารถแสดงความสัมพันธ์ทางความหมายที่สมบูรณ์กว่าได้
นี่เป็นเหตุผลว่าทําไมในการประมวลผลภาษาธรรมชาติการเข้ารหัสความร้อนมักถูกแทนที่ด้วยวิธีการต่างๆเช่นการฝังคํา
3. การแมปหมวดหมู่ของชุดการฝึกอบรมและชุดทดสอบต้องสอดคล้องกัน
หากในระหว่างการฝึกอบรม "สีแดง" สอดคล้องกับคอลัมน์แรกและ "สีเขียว" สอดคล้องกับคอลัมน์ที่สอง จะต้องรักษากฎเดียวกันในระหว่างการทดสอบ มิฉะนั้นโมเดลจะถือว่าหมวดหมู่เดียวกันเป็นอินพุตที่แตกต่างกันส่งผลให้ผลลัพธ์ไม่ถูกต้อง
4. ให้ความสนใจว่ามี "หมวดหมู่ที่ไม่เห็น" หรือไม่
ในการใช้งานจริง หมวดหมู่ใหม่อาจปรากฏในชุดทดสอบหรือข้อมูลใหม่ที่ไม่เห็นระหว่างการฝึกอบรม
หากกฎการเข้ารหัสไม่คํานึงถึงสิ่งนี้ อาจไม่สามารถประมวลผลข้อมูลนี้ได้อย่างถูกต้อง ดังนั้นในระบบจริงจึงมักจําเป็นต้องจัดการกับปัญหา "หมวดหมู่ที่ไม่รู้จัก" เพิ่มเติม
5. การเข้ารหัสความร้อนแบบเดี่ยวเหมาะสําหรับผู้เริ่มต้นและการสร้างแบบจําลองขั้นพื้นฐาน แต่ไม่ใช่ทางออกที่ดีที่สุดเสมอไป
การเข้ารหัสความร้อนเป็นพื้นฐานและสําคัญมาก แต่ในสถานการณ์ที่เบาบางในมิติสูง อาจไม่มีประสิทธิภาพมากนัก
ดังนั้นในงานที่ซับซ้อนมากขึ้นผู้คนยังพิจารณา:
• การเข้ารหัสเป้าหมาย
• การเข้ารหัสความถี่
• การฝัง
อย่างไรก็ตาม จากมุมมองระดับเริ่มต้น Solo Hot Coding ยังคงเป็นหนึ่งในจุดเริ่มต้นที่ดีที่สุดสําหรับการทําความเข้าใจการนับของข้อมูลที่จัดหมวดหมู่
5. ตัวอย่าง Python
ด้านล่างนี้คือตัวอย่างง่ายๆ สองตัวอย่างเพื่อแสดงแนวคิดพื้นฐานของการเข้ารหัสความร้อนและรูปแบบทั่วไปในการประมวลผลข้อมูล
ตัวอย่างที่ 1: การใช้การเข้ารหัสความร้อนเดี่ยวอย่างง่ายด้วยตนเอง
ตัวอย่างนี้แสดงให้เห็นถึงแนวคิดพื้นฐานของการเข้ารหัสความร้อนเดี่ยว: แต่ละหมวดหมู่สอดคล้องกับตําแหน่งคงที่ และหมวดหมู่เป็นของตําแหน่งที่ตั้งค่าเป็น 1
ตัวอย่างที่ 2: การใช้แพนด้าสําหรับการเข้ารหัสความร้อนเดี่ยว
ตัวอย่างนี้แสดงให้เห็นถึงวิธีการที่พบบ่อยที่สุดในการประมวลผลตาราง: คอลัมน์เดียวของตัวแปรประเภทถูกขยายเป็นหลายคอลัมน์ของคอลัมน์คุณลักษณะ 0/1 สิ่งนี้ทําให้ข้อมูลเหมาะสมยิ่งขึ้นสําหรับการป้อนเข้าสู่โมเดลแมชชีนเลิร์นนิ่ง
สรุป
การเข้ารหัสความร้อนเป็นวิธีพื้นฐานในการแปลงข้อมูลตามหมวดหมู่เป็นเวกเตอร์ไบนารี ด้วยการนําหลักการที่ว่า "หมวดหมู่หนึ่งสอดคล้องกับตําแหน่ง ให้ความกระจ่างแก่ตําแหน่งสําหรับหมวดหมู่ใดก็ตาม" จะเปลี่ยนป้ายกํากับหมวดหมู่ที่ไม่สามารถคํานวณได้โดยตรงให้เป็นการแสดงตัวเลขที่สามารถใช้สําหรับการประมวลผลแบบจําลองได้ ในการเรียนรู้ของเครื่อง การประมวลผลข้อความ และวิศวกรรมคุณลักษณะ การเข้ารหัสความร้อนเป็นเรื่องปกติมาก สําหรับผู้เริ่มต้น สามารถเข้าใจได้ว่า: ฉลากเดิมระบุว่า "เป็นของคลาสใด" ในขณะที่รหัสความร้อนที่ไม่ซ้ํากันอธิบายว่า "หมวดหมู่นี้แสดงด้วยชุด 0 และ 1 ที่เป็นมาตรฐานได้อย่างไร"