轉換類別資料

您的某些功能可能是不屬於順序關係的離散值。例如:犬隻品種、字詞或郵遞區號。這些功能稱為「類別」,每個值都稱為類別。您可以將類別值表示為字串或偶數,但您無法比較這些值或將其減去。

一般來說,應將包含整數值的特徵做為類別資料,而非數字資料。例如,假設有一個值是整數的郵遞區號功能。如果您誤將這項功能表示為數字,則表示要求模型找出不同郵遞區號之間的數字關係;舉例來說,您預期模型會判斷郵遞區號 20004 是郵遞區號 10002 的兩倍 (或一半)。只要將郵遞區號表示為類別資料,即可讓模型為每個個別郵遞區號尋找不同的信號。

如果資料欄位的類別數量較少 (例如星期幾或顏色有限),則可以為每個類別建立專屬功能。例如:

調色盤中的每種顏色都會表示為獨立的功能。也就是說,每個顏色在功能向量中都是獨立的功能。舉例來說,紅色是功能,橘色是獨立的功能,以此類推。 圖 1:每個類別的獨特功能。

 

接著,模型可以瞭解每個顏色的權重。舉例來說,模型可能會發現綠色汽車的成本比綠色車輛高。

然後就可以為這些功能建立索引。

調色盤中的每個顏色現在都屬於同一功能。
因此,顏色現在只是特徵向量中的單一特徵。每種顏色都有專屬值。舉例來說,紅色的值為 0,橘色的值為 1,依此類推。 圖 2:已建立索引的功能。

 

這類對應稱為「詞彙」

詞彙

字彙中的每個值都代表一個不重複的功能。

Index NumberCategory
0Red
1Orange
2Blue
......

模型會從字串查詢索引,將 1.0 指派給功能向量中的對應運算單元,0.0 指派給功能向量中的所有其他運算單元。

將類別對應至特徵向量的端對端程序。在圖表中,輸入功能為黃色、橘色、藍色和藍色。系統會使用已儲存的詞彙 (紅色為 0,橘色為 1,藍色為 2,黃色為 3,依此類推) 將輸入值對應至 ID。因此,系統會將黃色、橘色、藍色、藍色對應至 3、1、2、2。然後,系統會將這些值轉換為一次性資料向量。舉例來說,如果系統提供 7 種顏色,3 會變成 0.0、0.0、0.0、1.0、0.0、0.0、0.0。 圖 3:將類別對應至特徵向量的端對端程序。

稀疏表示法的注意事項

如果您的類別是一週中的某天,則可能會以特徵向量 [0, 0, 0, 0, 1, 0, 0] 代表。不過,大多數機器學習系統實作在記憶體中會以向量呈現這種向量。常見的表示法是非空白值及其對應的索引,例如,1.0 代表值,[4] 代表索引。這樣就能減少儲存大量 0 的記憶體用量,並允許更有效率的矩陣乘法。以基礎數學計算而言,[4] 相當於 [0, 0, 0, 0, 1, 0, 0]。

非詞彙 (OOV)

就像數值資料一樣,類別資料中也包含離群值。 舉例來說,假設資料集包含車輛說明。這個資料集的其中一項功能可以是車輛的顏色。假設這個資料集使用了常見的汽車顏色 (黑色、白色、灰色等),您就可將每種顏色分別歸入一個類別,以瞭解這些不同顏色對價值的影響。然而,假設這個資料集包含少數具有微色顏色的汽車 (紅酒、立陶宛、酪梨等)。與其為這些顏色個別提供類別,不如將類別全部串連為「Out of Vocab」 (OOV) 的通用類別。使用 OOV 時,系統不會浪費每個罕見顏色的訓練。

雜湊

另一個選項是將每個字串 (類別) 雜湊處理為可用的索引空間。雜湊往往會引發衝突,但您應運用模型學習相同索引中的一些共用類別,以表明特定問題。

就重要詞彙來說,由於衝突,雜湊可能會比選擇詞彙更差。另一方面,雜湊處理作業並不需要由特定組件組合,如果功能分佈情況會隨著時間改變而特別實用。

顯示兩個字詞清單的圖表。一份清單包含 10 個字詞。另一個清單則會顯示 10 個字詞,並分成 8 個雜湊值區。因此,有 6 個雜湊值區含有一個字詞,而 2 個雜湊值區含有 2 個字詞。每個雜湊值區會以 1 到 8 (含) 之間的數字來識別。 圖 4:將項目對應至詞彙表。

混合雜湊和詞彙

您可以採用混合做法,將雜湊與詞彙結合。請使用詞彙來滿足資料中最重要的類別,但將 OOV 值區換成多個 OOV 值區,並使用雜湊功能將類別指派給值區。

雜湊值區的類別必須共用一個索引,而模型可能無法充分預測,但我們已分配一些記憶體來嘗試解讀詞彙以外的類別。

顯示三份字詞清單的圖表。一份清單包含 10 個要分類的字詞,另外兩個清單會將這 10 個字詞對應至詞彙和雜湊值區。這表示 5 個字詞會直接對應至詞彙,而另外 5 個字則對應至兩個雜湊值區。一個雜湊值區含有兩個字詞,另一個雜湊值區含有三個字詞。詞彙包括常見字詞;雜湊值區包含罕見字詞。 圖 5:結合詞彙和雜湊的混合方法。

嵌入註意事項

來自機器學習速成課程的喚回度,即嵌入是連續值特徵的類別特徵。深度學習模型通常會將索引從索引轉換為嵌入。

這張圖表顯示了透過嵌入功能將類別對應至特徵向量的端對端程序。嵌入資料表是由一組資料列組成,每列由一組介於 0.0 和 1.0 之間的浮點值組成。如要轉換類別,系統會從嵌入資料表複製對應的資料列。舉例來說,如果輸入類別為 0,系統會將嵌入資料表的第一列複製到特徵向量。如果輸入類別為 1,系統會將嵌入資料表的第二列複製到特徵向量。 圖 6:透過嵌入功能剖析特徵向量

我們討論的其他轉換可以儲存在磁碟上,但嵌入方式不同。由於嵌入是經過訓練的,因此不是一般的資料轉換,屬於模型的一部分。使用其他模型權重訓練,且功能相當於權重層。

預先訓練的嵌入功能會受到什麼影響?不過,預先訓練的嵌入在訓練期間仍可修改,因此在概念上仍是模型的一部分。