「維度」一詞是特徵向量中元素數量的同義詞。部分類別特徵的維度是低維度。例如:
功能名稱 | 類別數量 | 範例類別 |
---|---|---|
snowed_today | 2 | True、False |
skill_level | 3 | 初學者、從業人員、專家 |
season | 4 | 冬季、春季、夏季、秋季 |
day_of_week | 7 | 週一、週二、週三 |
行星 | 8 | 水星、金星、地球 |
如果類別特徵的可能類別數量偏低,您可以將其編碼為字彙表。透過詞彙編碼,模型會將每個可能的類別值視為「獨立特徵」。在訓練期間,模型會學習各個類別的不同權重。
舉例來說,假設您要建立模型,依據名為 car_color
的類別特徵來預測汽車價格,部分結果就是其中。紅色汽車的價值可能高於綠色汽車。由於製造商提供的外觀顏色有限,因此 car_color
是低維度類別功能。以下插圖為 car_color
的字彙 (可能值) 建議:
練習:檢查你的直覺
"Red"
不是浮點數。您必須將 "Red"
等字串轉換為浮點數。索引編號
機器學習模型只能操作浮點數。因此,您必須將每個字串轉換為不重複的索引號碼,如下圖所示:
練習:檢查你的直覺
"Black"
(索引號 5) 對模型的意義是 "Orange"
(索引號 1) 的 5 倍。"Black"
(索引編號 5) 對模型的意義是 "Orange"
(索引編號 1) 的 5 倍。one-hot 編碼
建立詞彙表的下一個步驟,是將每個索引編號轉換為one-hot 編碼。在 one-hot 編碼中:
- 每個類別都由 N 個元素的向量 (陣列) 代表,其中 N 是類別數量。舉例來說,如果
car_color
有八個可能類別,則代表性的單熱向量就會有八個元素。 - one-hot 向量中只有 一個元素的值為 1.0;所有其他元素的值為 0.0。
例如,下表顯示 car_color
中每個項目的一對多編碼:
功能 | 紅色 | Orange | 藍色 | 黃色 | 綠色 | Black | 紫色 | 棕色的 |
---|---|---|---|---|---|---|---|---|
"Red" | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
「Orange」 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
"Blue" | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
"黃色" | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
"綠色" | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
"Black" | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
「紫色」 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
「棕色」 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
這是傳遞給特徵向量的 one-hot 向量,不是字串或索引號碼。模型會為特徵向量的每個元素學習個別權重。
下圖顯示詞彙表表示法中的各種轉換:
稀疏表示法
值為零 (或空白) 的特徵會終止為「稀疏特徵」。許多類別特徵 (例如 car_color
) 通常是稀疏特徵。稀疏表示法是指在稀疏向量中儲存 1.0 的位置。例如,"Blue"
的 one-hot 向量如下:
[0, 0, 1, 0, 0, 0, 0, 0]
由於 1
位於第 2 個位置 (從 0 開始計算),因此前一個 one-hot 向量的稀疏表示法為:
2
請注意,稀疏表示法比八元素單熱向量耗用得少得多。重要的是,模型必須以一對一向量訓練,而非稀疏表示法。
類別型資料中的離群值
就像數值資料,類別型資料也包含離群值。假設 car_color
不僅包含熱門顏色,也包含一些鮮少使用的異常顏色,例如 "Mauve"
或 "Avocado"
。您可以將這些異常顏色歸入單一「統一」類別,稱為字彙外 (OOV)。換句話說,所有異常顏色都會歸入單一異常值分組。系統會為該異常值值區學習單一權重。
為高維度類別特徵編碼
某些類別特徵的維度數量相當多,例如下表中的維度:
功能名稱 | 類別數量 | 範例類別 |
---|---|---|
words_in_english | ~500,000 | 「happy」、「步行」 |
US_postal_codes | ~42,000 | 「02114」、「90301」 |
last_names_in_Germany | ~850,000 | 「Schmidt」、「Schneider」 |
如果類別數量較多, one-hot 編碼通常會比較不理想。嵌入 (請參閱專屬的嵌入模組) 通常是更好的選擇。嵌入可大幅減少維度數量,為模型帶來兩項重要優勢:
- 模型通常會訓練得更快。
- 建構的模型通常會更快地推斷預測結果。也就是說,模型的延遲時間較短。
Hashing (也稱為「Hashing 技巧」) 是較不常見的縮減維度數量方法。