神經網路中一個常見的題目就是要做「分類」,而如何將類別資訊(Categorical Data)轉換成數值資訊(Numerical Data)讓模型能夠理解,進而執行訓練,就要來探討如何對資料進行編碼(Encoding)。
網路上已經有其他寫得滿清楚的部落格文章,可以直接參考(皆附程式碼):
這邊僅簡單做個白話的整理和比較,也可以直接看最後Take Home Message的部分。
常用的方式主要有以下兩種方法:
將類別變量利用一位來呈現。不同類別,分別有對應的一個整數。
將類別變量用二進制的向量來呈現。有n類,向量長度就是n維。屬於該類的話就註記1、不屬於就註記0。
針對三個類別來舉例的話:
Integer Encoding會這樣轉換:
金牌 > 1
銀牌 > 2
銅牌 > 3
(可以留意一下,金銀銅牌這三類是「有序類別變量」,類別之間具有順序關係)
One-Hot Encoding會這樣轉換:
紅色 > 1 0 0
綠色 > 0 1 0
藍色 > 0 0 1
兩種方式使用時機的差異在於:
如果有任何問題歡迎留言討論,文中錯誤的地方還請不吝指正,謝謝!
Why One-Hot Encode Data in Machine Learning?