Categorical-Encoding

究竟什麼是多熱編碼,它與單熱編碼有何不同?

  • May 21, 2020

在 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'這就是您為減少代表所付出的代價。

引用自:https://stats.stackexchange.com/questions/467633

comments powered by Disqus

相關問答