為什麼要用One-Hot編碼?
在資料集中,經常碰到離散型的特征,比如:國家∈{中國,英國,法國,德國…}
如果我們使用country=0表示中國,…,country=3表示德國,這樣的表示方法,無法在歐式空間裡計算出合理的樣本點之間的距離。
用自然數表示離散特征無法合理計算樣本點距離?
保持兩個樣本點的其他特征不變(以求友善用0表示),隻考慮國家這個特征(加粗,用自然數表示),那麼有3個樣本向量可以表示為:
person1 = [0, 0, 0, 0] (中國人)
person2 = [0, 0, 3, 0] (德國人)
person3 = [0, 0, 2, 0] (法國人)
而
dist(person1, person2) = 3
,
dist(person2, person3) = 1
,這顯然是不合理的。
用One-Hot?
其他同上,不過國家特征用one-hot編碼表示:
person1 = [0, 0, 1, 0, 0, 0, 0]
person2 = [0, 0, 0, 0, 0, 1, 0]
person3 = [0, 0, 0, 0, 1, 0, 0]
這樣,任意兩個樣本點的距離就相同了。
總結
使用one-hot編碼可以解決離散型特征值的尴尬,但是依然還是有它的缺陷,等我學會了再來寫部落格。