https://www.imooc.com/article/35900
參考上面大神的原文,說的非常透徹。非常便於理解。感謝 感謝
自己做個小筆記,便於自己學習
特征值是離散的,無序的。
如:
-
性別特征:["男","女"]
-
祖國特征:["中國","美國,"法國"]
-
運動特征:["足球","籃球","羽毛球","乒乓球"]
假如某個樣本(某個人),他的特征是這樣的["男","中國","乒乓球"],我們完全可以用 [0,0,4] 來表示。
但是這樣的特征處理並不能直接放入機器學習算法中。因為類別之間是無序的(運動數據就是任意排序的)。不理解沒關系。
怎么轉化成獨熱碼呢?
用獨熱碼來表示就是
男 => 10
女 => 01
祖國特征:["中國","美國,"法國"](這里N=3):
中國 => 100
美國 => 010
法國 => 001
運動特征:["足球","籃球","羽毛球","乒乓球"](這里N=4):
足球 => 1000
籃球 => 0100
羽毛球 => 0010
乒乓球 => 0001
所以,當一個樣本為["男","中國","乒乓球"]的時候,完整的特征數字化的結果為:
[1,0,1,0,0,0,0,0,1]
下圖可能會更好理解:
這樣做的優勢 是什么呢?
對於祖國特征:["中國","美國,"法國"]
重點 重點 重點!
如果按照 中國 0 ,美國 1,法國2 普通編碼的話
那么 中國和法國之間的距離是2,中國和美國的距離是1,美國和法國的距離是1,但是實際上,這種距離是因為我們編碼的順序導致的。中國和法國並不是真的 距離是2 。
而在機器學習中需要計算兩者之間的距離(歐氏距離)。這種普通的編碼方式並不能表示清楚距離。
而如果用獨熱碼來編碼
中國 1 0 0
美國 0 1 0
法國 0 0 1
相當於我搭建了一個三維的空間
那么 任意兩國的距離都是 sqrt(2),距離都是相等的! 這才是關鍵 關鍵!
相當於 中國在 x+點處,美國 在y+點處,法國在 z+點處。那么三者之間的距離是不是相等呢?
關於機器學習
在one hot representation編碼的每個單詞都是一個維度,彼此獨立。
這里我們可以看到One hot方式處理的數據
1、會產生大量冗余的稀疏矩陣
2、維度(單詞)間的關系,沒有得到體現
要是one hot encoding的類別數目不太多,建議優先考慮
最后再次感謝 NateHuang