Categorical-Encoding
究竟什麼是多熱編碼,它與單熱編碼有何不同?
在 one-hot 編碼中,為我們希望編碼的每個單詞保留一位。
多熱編碼與單熱編碼有何不同?在什麼情況下使用它而不是 one-hot 是有意義的?
想像一下,您有五個不同的課程,例如
['cat', 'dog', 'fish', 'bird', 'ant']
。如果您使用單熱編碼,您將在五維二進制向量中表示“狗”的存在,例如[0,1,0,0,0]
. 如果您要使用多熱編碼,您將首先對您的類進行標籤編碼,因此只有一個數字表示類的存在(例如,1 表示“狗”),然後將數字標籤轉換為大小的二進制向量 $ \lceil\text{log}_25\rceil = 3 $ .例子:
'cat' = [0,0,0] 'dog' = [0,0,1] 'fish' = [0,1,0] 'bird' = [0,1,1] 'ant' = [1,0,0]
這種表示基本上是標籤編碼之間的中間方式,在這裡你引入了錯誤的類關係(
0 < 1 < 2 < ... < 4
,因此'cat' < 'dog' < ... < 'ant'
),但只需要一個值來表示類的存在和單熱編碼,你需要一個大小的向量 $ n $ (可能很大!)代表所有類但沒有錯誤的關係。注意:多熱編碼引入了錯誤的加法關係,例如
[0,0,1] + [0,1,0] = [0,1,1]
.'dog' + 'fish' = 'bird'
這就是您為減少代表所付出的代價。