類別資料:詞彙和 one-hot 編碼

「維度」一詞是一組元素中元素數量的同義詞。 「特徵向量」。 部分類別特徵的維度是低維度。例如:

功能名稱 類別數量 範例類別
snowed_today 2 是、否
skill_level 3 初學者、從業人員、專家
season 4 冬季、春季、夏季、秋季
day_of_week 7 週一、週二、週三
行星 8 水星、金星、地球

如果類別地圖項目的可能類別數量偏低,您可以 將其編碼為詞彙透過詞彙編碼,模型 可能的類別值做為獨立特徵。在訓練期間 就會針對每個類別學習不同的權重

舉例來說,假設您要建立模型來預測汽車的價格 也就是 car_color 的類別特徵上。 也許紅車的價值比綠車更重要。 由於製造商提供的外觀顏色有限,因此 car_color 是 這是提供低維度類別特徵的 下方插圖列出了 car_color:

圖 1. 調色盤中的每種顏色都會以個別的
      而不是每個特徵的分數也就是每個顏色在特徵向量中是獨立的地圖項目。
      例如「紅色」是地圖項目,「橘色」是獨立功能
      依此類推
圖 1:每個類別特有的特徵。

練習:檢查您的直覺

是非題:機器學習模型可以「直接」訓練 原始字串值 (例如 "Red""Black"),不含 將這些值轉換成數值向量
在訓練期間,模型只能操控浮點數。 字串 "Red" 不是浮點數。個人中心 必須將 "Red" 之類的字串轉換為浮點數。
機器學習模型只能透過下列特徵訓練: 因此,您需要將這些字串轉換為 浮點值

索引號碼

機器學習模型只能操控浮點數。 因此,您必須將每個字串轉換為不重複的索引號碼,如 如下圖所示:

圖 2:每個顏色都會與一個不重複的整數值建立關聯。適用對象
      例如「紅色」與整數 0, "Orange' 相關聯使用
      整數 1 等。
圖 2 已建立索引的特徵。

檢視您的直覺

您的模型應直接根據顯示的索引號碼進行訓練 如圖 2 所示?
如果以索引編號訓練模型 誤將每個項目視為數值 "Black" (索引號碼 5) 是更有意義的 5 倍 比 "Orange" 還差 (索引號碼 1)。
模型不應以索引號碼進行訓練。 如果確實如此,模型會將每個索引號碼視為數值 值,並將 "Black" (索引號碼 5) 視為 對模型來說意義是比"Orange"更有意義的 5 倍 (索引號碼 1)。

one-hot 編碼

建立詞彙的下一步是將每個索引號碼轉換為 one-hot 編碼。 在 one-hot 編碼中:

  • 每個類別都會由 N 個元素的向量 (陣列) 表示,其中 N 是類別數量。舉例來說,如果 car_color 可能 則代表的 one-hot 向量會有八個元素。
  • 在單熱向量中,恰好有「一個」元素的值是 1.0; 其餘所有元素的值均為 0.0。

舉例來說,下表顯示 car_color:

功能 紅色 Orange 藍色 黃色 綠色 Black 紫色 棕色的
「紅色」 1 0 0 0 0 0 0 0
「橘色」 0 1 0 0 0 0 0 0
「藍色」 0 0 1 0 0 0 0 0
「黃色」 0 0 0 1 0 0 0 0
"綠色" 0 0 0 0 1 0 0 0
「黑色」 0 0 0 0 0 1 0 0
「紫色」 0 0 0 0 0 0 1 0
「棕色」 0 0 0 0 0 0 0 1

是單熱向量,而非字串或索引號碼 加入特徵向量模型會學習 特徵向量

下圖說明 Google Cloud Storage 中的各種轉換 詞彙表表示法:

圖 3. 將類別對應至端對端流程的圖表
      特徵向量圖表中的輸入特徵為「黃色」
      「Orange」、「Blue」和「Blue」第二次。系統會使用儲存的
      詞彙 (「紅色」為 0,「橘色」為 1,「藍色」代表 2,「黃色」代表 3),
      依此類推。因此,系統會將「黃色」
      「Orange」、「Blue」和「Blue」至 3、1、2、2接著,系統就會
      將這些值轉換成 one-hot 特徵向量舉例來說
      有 8 種可能的顏色,3 會變為 0、0、0、1、0、0、0、0。
圖 3. 將類別對應至地圖項目向量的端對端程序。

稀疏表示法

屬性值通常為零 (或空白) 的特徵會視為 稀疏特徵:多個 類別特徵 (例如 car_color) 往往是稀疏的特徵。 稀疏表示法 意味著會儲存 1.0 的「位置」 建立第一個 Pod例如,"Blue" 的 one-hot 向量為:

[0、0、1、0、0、0、0、0]

由於 1 位於第 2 名 (當計數起始為 0 時), 前一個 one-hot 向量的稀疏表示法如下:

2

請注意,稀疏表示法消耗的記憶體 八元素中的單熱向量重要的是,模型必須訓練 one-hot 向量,而非稀疏表示法。

類別型資料中的離群值

就像數值資料,類別型資料也包含離群值。假設 car_color 不僅包含熱門的顏色,也有一些很少使用 離群顏色,例如 "Mauve""Avocado"。 您不需要為每個離群顏色分別指定類別 就能將他們整合成單一的「貓咪」項目稱為超出詞彙範圍的類別 (OOV)。換句話說,所有離群值會繫結至單一顏色 離群值值區。系統會學習該離群值區的單一權重。

為高維度類別特徵編碼

有些類別特徵的維度數量較多 請使用下表中的應用程式 ID 操作:

功能名稱 類別數量 範例類別
words_in_english 約 50 萬個 「happy」、「步行」
US_postal_codes 約 42,000 人 「02114」、「90301」
last_names_in_Germany ~850,000 次 「Schmidt」、「Schneider」

如果類別數量較多, one-hot 編碼通常會比較不理想。 嵌入「嵌入」模組通常為 更好的選擇嵌入會大幅降低 對模型有兩大好處:

  • 模型的訓練速度通常比較快。
  • 建構的模型通常會更快地推論出預測。也就是說, 能縮短延遲時間

雜湊 (也稱為雜湊 是減少維度數量的常見做法。

,瞭解如何調查及移除這項存取權。