獨熱編碼 是什麼?
One-hot Encoding — 獨熱編碼 的完整解釋
獨熱編碼是一種將類別資料轉換為二元向量的方法,為每個類別建立獨立欄位,存在時標記為 1,其餘為 0
容易混淆
獨熱編碼 vs 標籤編碼
標籤編碼像給類別編號(紅=0, 綠=1, 藍=2),獨熱編碼像給每個類別一個獨立的二元開關,獨熱編碼避免了模型誤認為數字大小有意義的問題,更適合沒有順序關係的類別。
最關鍵的區別:一個展開成多欄,一個只用單欄編號。
獨熱編碼 vs 標籤編碼
獨熱編碼把每個類別拆成獨立開關,標籤編碼只是給一個編號
最關鍵的區別:有沒有把類別順序偷偷塞進去。
記住這句就好
沒有順序的類別,就給它們各自一個開關
實際案例
案例 1:把水果類別展開成蘋果、香蕉、橘子三個欄位
這種情況下,獨熱編碼 會幫你把原本手工或靠直覺的步驟變得更穩。
案例 2:把城市名稱轉成獨立欄位,讓模型不把台北當成比台中更大
另一個常見場景也能看出 獨熱編碼 的價值,因為它處理的是同一種核心問題。
算法與應用
核心意思就是:沒有順序的類別,就給它們各自一個開關。
類別少時很直觀,類別很多時向量會變得又寬又稀疏
遇到高基數類別時,常會改看 embedding 或其他編碼方式
情境判斷
Q1(直覺題): 把水果類別展開成蘋果、香蕉、橘子三個欄位 這種情況,會先想到 獨熱編碼 嗎?
→ 會,因為它正好在處理這件事的核心問題,只是還要看資料乾不乾淨、流程穩不穩。
Q2(判斷題): 類別數很多時,還適合直接用嗎?
→ 看情況,類別一多維度會爆,常改用 embedding 或其他壓縮表示
相關術語
常見問題
獨熱編碼後的向量長度是多少?
獨熱編碼後的向量長度等於類別型特徵中不同類別的總數。 例如,如果一個特徵有 5 個不同的類別,那麼經過獨熱編碼後,每個類別都會被轉換成一個長度為 5 的向量。
獨熱編碼會增加模型的複雜度嗎?
是的,獨熱編碼會增加模型的複雜度,特別是在類別數量非常多的情況下。 維度增加會導致計算量增加,並可能導致過擬合。 因此,在使用獨熱編碼時,需要權衡其優缺點。
除了獨熱編碼,還有哪些處理類別型資料的方法?
除了獨熱編碼,還有標籤編碼、順序編碼、詞嵌入和目標編碼等方法。 選擇哪種方法取決於具體的應用場景和資料特性。 例如,詞嵌入通常用於自然語言處理,而目標編碼通常用於推薦系統。