1. 程式人生 > >【資料建模 特徵編碼】one-hot encoding以及運用

【資料建模 特徵編碼】one-hot encoding以及運用

主要內容:
1、什麼是one_hot編碼
2、one-hot在提取文字特徵上的應用
3、one_hot編碼優缺點分析

一、什麼是one_hot編碼

one-hot 和 TF-IDF是目前最為常見的用於提取文字特徵的方法。下面我們介紹下one_hot編碼。

什麼是one-hot編碼?one-hot編碼,又稱獨熱編碼、一位有效編碼。其方法是使用N位狀態暫存器來對N個狀態進行編碼,每個狀態都有它獨立的暫存器位,並且在任意時候,其中只有一位有效。舉個例子,假設我們有四個樣本(行),每個樣本有三個特徵(列),如圖:
這裡寫圖片描述

      
上圖中我們已經對每個特徵進行了普通的數字編碼:我們的feature_1有兩種可能的取值,比如是男/女,這裡男用1表示,女用2表示。那麼one-hot編碼是怎麼搞的呢?我們再拿feature_2來說明:
這裡寫圖片描述

這裡feature_2 有4種取值(狀態),我們就用4個狀態位來表示這個特徵,one-hot編碼就是保證每個樣本中的單個特徵只有1位處於狀態1,其他的都是0。

對於2種狀態、三種狀態、甚至更多狀態都是這樣表示,所以我們可以得到這些樣本特徵的新表示:
這裡寫圖片描述

one-hot編碼將每個狀態位都看成一個特徵。對於前兩個樣本我們可以得到它的特徵向量分別為

這裡寫圖片描述

二、 one-hot在提取文字特徵上的應用

  one hot在特徵提取上屬於詞袋模型(bag of words)。關於如何使用one-hot抽取文字特徵向量我們通過以下例子來說明。假設我們的語料庫中有三段話:

 我愛中國

 爸爸媽媽愛我

 爸爸媽媽愛中國

我們首先對預料庫分離並獲取其中所有的詞,然後對每個此進行編號:

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

然後使用one hot對每段話提取特徵向量:
這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述
因此我們得到了最終的特徵向量為

    我愛中國  ->   1,1,0,0,1

    爸爸媽媽愛我  ->  1,1,1,1,0

    爸爸媽媽愛中國  ->  0,1,1,1,1

三、優缺點分析

優點:一是解決了分類器不好處理離散資料的問題,二是在一定程度上也起到了擴充特徵的作用(上面樣本特徵數從3擴充套件到了9)

缺點:在文字特徵表示上有些缺點就非常突出了。首先,它是一個詞袋模型,不考慮詞與詞之間的順序(文字中詞的順序資訊也是很重要的);其次,它假設詞與詞相互獨立(在大多數情況下,詞與詞是相互影響的);最後,它得到的特徵是離散稀疏的。