天天看點

獨熱編碼(One-Hot)最簡潔了解

目錄

背景

One-Hot編碼

使用one-hot編碼原因

四 、獨熱編碼優缺點

五、什麼情況下(不)用獨熱編碼?

六、 什麼情況下(不)需要歸一化?

七、one-hot編碼為什麼可以解決類别型資料的離散值問題

八、Tree Model不太需要one-hot編碼

背景

在機器學習算法中,我們經常會遇到分類特征,例如:人的性别有男女,祖國有中國,美國,法國等。

這些特征值并不是連續的,而是離散的,無序的。通常我們需要對其進行特征數字化。

考慮以下三個特征:

["male", "female"]

["from Europe", "from US", "from Asia"]

["uses Firefox", "uses Chrome", "uses Safari", "uses Internet Explorer"]

如果将上述特征用數字表示,效率會高很多。例如:

["male", "from US", "uses Internet Explorer"] 表示為[0, 1, 3]

["female", "from Asia", "uses Chrome"]表示為[1, 2, 1]

但是,轉化為數字表示後,上述資料不能直接用在我們的分類器中。因為,分類器往往預設資料資料是連續的,并且是有序的。但按上述表示的數字并不有序的,而是随機配置設定的。

One-Hot編碼

One-Hot編碼,又稱為一位有效編碼,主要是采用N位狀态寄存器來對N個狀态進行編碼,每個狀态都由他獨立的寄存器位,并且在任意時候隻有一位有效。

One-Hot編碼是分類變量作為二進制向量的表示。這首先要求将分類值映射到整數值。然後,每個整數值被表示為二進制向量,除了整數的索引之外,它都是零值,它被标記為1。

性别特征:["男","女"],按照N位狀态寄存器來對N個狀态進行編碼的原理,咱們處理後應該是這樣的(這裡隻有兩個特征,是以N=2):

男  =>  10

女  =>  01

獨熱編碼(One-Hot)最簡潔了解

使用one-hot編碼原因

使用one-hot編碼,将離散特征的取值擴充到了歐式空間,離散特征的某個取值就對應歐式空間的某個點。

将離散特征通過one-hot編碼映射到歐式空間,是因為,在回歸,分類,聚類等機器學習算法中,特征之間距離的計算或相似度的計算是非常重要的,而我們常用的距離或相似度的計算都是在歐式空間的相似度計算,計算餘弦相似性,基于的就是歐式空間将離散型特征使用one-hot編碼,确實會讓特征之間的距離計算更加合理。

比如,有一個離散型特征,代表工作類型,該離散型特征,共有三個取值,不使用one-hot編碼,其表示分别是x_1 = (1), x_2 = (2), x_3 = (3)。兩個工作之間的距離是,(x_1, x_2) = 1, d(x_2, x_3) = 1, d(x_1, x_3) = 2。那麼x_1和x_3工作之間就越不相似嗎?顯然這樣的表示,計算出來的特征的距離是不合理。那如果使用one-hot編碼,則得到x_1 = (1, 0, 0), x_2 = (0, 1, 0), x_3 = (0, 0, 1),那麼兩個工作之間的距離就都是sqrt(2).即每兩個工作之間的距離是一樣的,顯得更合理

四 、獨熱編碼優缺點

優點:獨熱編碼解決了分類器不好處理屬性資料的問題,在一定程度上也起到了擴充特征的作用。它的值隻有0和1,不同的類型存儲在垂直的空間。

缺點:當類别的數量很多時,特征空間會變得非常大。在這種情況下,一般可以用PCA來減少次元。而且one hot encoding+PCA這種組合在實際中也非常有用。

五、什麼情況下(不)用獨熱編碼?

用:獨熱編碼用來解決類别型資料的離散值問題

不用:将離散型特征進行one-hot編碼的作用,是為了讓距離計算更合理,但如果特征是離散的,并且不用one-hot編碼就可以很合理的計算出距離,那麼就沒必要進行one-hot編碼。有些基于樹的算法在處理變量時,并不是基于向量空間度量,數值隻是個類别符号,即沒有偏序關系,是以不用進行獨熱編碼。 Tree Model不太需要one-hot編碼: 對于決策樹來說,one-hot的本質是增加樹的深度。

六、 什麼情況下(不)需要歸一化?

需要: 基于參數的模型或基于距離的模型,都是要進行特征的歸一化。

不需要:基于樹的方法是不需要進行特征的歸一化,例如随機森林,bagging 和 boosting等。

七、one-hot編碼為什麼可以解決類别型資料的離散值問題

首先,one-hot編碼是N位狀态寄存器為N個狀态進行編碼的方式 eg:高、中、低不可分,→ 用0 0 0 三位編碼之後變得可分了,并且成為互相獨立的事件 類似 SVM中,原本線性不可分的特征,經過project之後到高維之後變得可分了 GBDT處理高維稀疏矩陣的時候效果并不好,即使是低維的稀疏矩陣也未必比SVM好

八、Tree Model不太需要one-hot編碼

對于決策樹來說,one-hot的本質是增加樹的深度 tree-model是在動态的過程中生成類似 One-Hot + Feature Crossing 的機制  一個特征或者多個特征最終轉換成一個葉子節點作為編碼 ,one-hot可以了解成三個獨立事件 決策樹是沒有特征大小的概念的,隻有特征處于他分布的哪一部分的概念 one-hot可以解決線性可分問題 但是比不上label econding  one-hot降維後的缺點: 降維前可以交叉的降維後可能變得不能交叉

推薦:https://www.cnblogs.com/zongfa/p/9305657.html寫的很好

 參考部落格:連結:https://www.jianshu.com/p/cb344e1c860a

繼續閱讀