「維度」一詞是「特徵向量」中的元素數量的同義詞。部分類別特徵的維度較低。例如:
功能名稱 | 類別數量 | 範例類別 |
---|---|---|
snowed_today | 2 | True、False |
skill_level | 3 | 初學者、從業人員、專家 |
season | 4 | 冬季、春季、夏季、秋季 |
day_of_week | 7 | 週一、週二、週三 |
行星 | 8 | 水星、金星、地球 |
如果類別特徵的可能類別數量偏低,您可以將其編碼為字彙表。使用詞彙編碼時,模型會將每個可能的類別值視為個別特徵。在訓練期間,模型會學習各個類別的不同權重。
舉例來說,假設您要建立模型,以便根據部分名為 car_color
的分類特徵預測汽車價格。紅色汽車的價值可能高於綠色汽車。由於製造商提供的外觀顏色有限,car_color
是低維類別特徵。以下插圖為 car_color
的字彙 (可能值) 建議:
練習:檢查您的理解程度
索引編號
機器學習模型只能操作浮點數。因此,您必須將每個字串轉換為不重複的索引編號,如以下插圖所示:
將字串轉換為不重複的索引號碼後,您需要進一步處理資料,以便模型瞭解值之間的相關性。如果類別型特徵資料保留為索引整數,並載入模型,模型會將索引值視為連續浮點數。此時模型會認為「紫色」比「橘色」更有可能出現,比率是前者的六倍。
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 |
"Brown" | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
系統會將獨熱向量傳遞至特徵向量,而非字串或索引編號。模型會為特徵向量的每個元素學習個別權重。
下圖顯示詞彙表表示法中的各種轉換:
稀疏表示法
值主要為零 (或空白) 的特徵稱為稀疏特徵。許多類別特徵 (例如 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」、「walking」 |
US_postal_codes | ~42,000 | 「02114」和「90301」 |
last_names_in_Germany | ~850,000 | 「Schmidt」、「Schneider」 |
如果類別數量很多,通常不建議使用 one-hot 編碼。嵌入 (請參閱專屬的嵌入模組) 通常是更好的選擇。嵌入可大幅減少維度數量,為模型帶來兩項重要優勢:
- 模型通常會訓練得更快。
- 建構的模型通常會更快地推斷預測結果。也就是說,模型的延遲時間較短。
Hashing (也稱為 Hashing 技巧) 是較不常見的縮減維度數量方法。
按這裡瞭解雜湊處理