天天看點

資料處理之one-hot

分類方法,通常需要把資料的各個屬性轉換為一個向量表示,這樣每條資料的特征就是一個向量,向量上的每個次元就表示了一個特征屬性。
           

但是如果要轉換的資料包含了3種屬性,比如身高,體重,年齡。A是女,168cm,70kg,30歲;B是男,180cm,90kg,20歲,那麼直接用數值做向量就變成了,0,168,70,30;1,180,90,20。而168和70或者30是不同的屬性,更明顯的是0或1表示的性别和其他次元差距更大。

有一種是對每個次元的數值進行無量綱的歸一化,也就是說每個次元的數值都歸一化處理到0-1或者-0.5-+0.5之間。

但是這樣依然不好,比如表示性别的0,1與其他次元依然關聯不大,是以有一種叫one-hot的編碼方式,就是表示一項屬性的特征編碼,同一時間隻有一個激活點(不為0)。這樣A的性别變為【1,0】,B的性别編碼為【0,1】。年齡,體重,身高等可以用更多數量的enum表示(數量不是一定要滿足所有枚舉,而是滿足實際資料出現的類别就可以了,比如隻有三種身高,那麼身邊表示的隻需要[0,0,1]就可以)

然後将各個屬性,串聯起來,建構了一個非常稀疏的特征向量,比如性别和身高串聯為【0,1,0,0,1】,保證了各種資料的離散性。

相關參考:

http://blog.csdn.net/google19890102/article/details/44039761

繼續閱讀