one-hot編碼理解


one-hot是比較常用的文本特征特征提取的方法。

one-hot編碼,又稱“獨熱編碼”。其實就是用N位狀態寄存器編碼N個狀態,每個狀態都有獨立的寄存器位,且這些寄存器位中只有一位有效,說白了就是只能有一個狀態。

下面舉例說明:

有四個樣本,每個樣本有三種特征:

      feature1   feature2   feature3
sample1   1      4     3
sample2   2      3     2
sample3   1      2     2
sample4   2      1     1
上圖用十進制數對每種特征進行了編碼,feature1有兩種可能的取值,feature2有4種可能的取值,feature3有3種可能的取值。比如說feature3有3種取值,或者說有3種狀態,那么就用3個狀態位來表示,以保證每個樣本中的每個特征只有1位處於狀態1,其他都是0。

1->001

2->010

3->100

其他的特征也都這么表示:

      feature1   feature2   feature3
sample1   01     1000    100
sample2   10     0100    010
sample3   01     0010    010
sample4   10     0001    001
這樣,4個樣本的特征向量就可以這么表示:

sample1 -> [0,1,1,0,0,0,1,0,0]

sample2 -> [1,0,0,1,0,0,0,1,0]

sample3 -> [0,1,0,0,1,0,0,1,0]

sample4 -> [1,0,0,0,0,1,0,0,1]

 

 

接下來看看怎么應用one-hot:

one-hot在特征提取上屬於詞袋模型(bag of words),假設語料庫中有三句話:

我愛中國
爸爸媽媽愛我
爸爸媽媽愛中國
首先,將語料庫中的每句話分成單詞,並編號:

1:我      2:愛      3:爸爸      4:媽媽      5:中國

然后,用one-hot對每句話提取特征向量:(圖來源於網絡)

 

所以最終得到的每句話的特征向量就是:

我愛中國 -> 1,1,0,0,1
爸爸媽媽愛我 -> 1,1,1,1,0
爸爸媽媽愛中國 -> 0,1,1,1,1
那么這樣做的優點和缺點都有什么?

優點:

解決了分類器處理離散數據困難的問題
一定程度上起到了擴展特征的作用(上例中從3擴展到了9)
缺點:

one-hot是一個詞袋模型,不考慮詞與詞之間的順序問題,而在文本中,次的順序是一個很重要的問題
one-hot是基於詞與詞之間相互獨立的情況下的,然而在多數情況中,詞與詞之間應該是相互影響的
one-hot得到的特征是離散的,稀疏的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM