---
title: "頻率編碼（Frequency Encoding）"
slug: frequency-encoding
language: zh-TW
source: https://aiterms.tw/learning/what-is-frequency-encoding
updated_at: 2026-07-04
tags: [機器學習, 資料處理, 特徵工程, 模型訓練, source:ipas]
ipas_term: true
type: deep-dive
---

# 頻率編碼 是什麼？

> 將類別特徵轉換為其在資料集中出現的頻率或計數，以捕捉資訊並降低維度。

## 核心概念
頻率編碼（Frequency Encoding）是一種將類別型特徵轉換為數值型特徵的技術。在機器學習中，許多模型無法直接處理非數值資料，因此需要將類別特徵轉換為數值形式。當類別特徵具有高基數（即許多不同的唯一值）時，傳統的獨熱編碼（One-Hot Encoding）會產生大量的稀疏特徵列，導致維度災難，增加模型訓練的複雜度和記憶體消耗。頻率編碼的目標是利用每個類別值在資料集中出現的頻率或計數來表示該類別，從而捕捉其在整體分佈中的重要性或稀有性。這種方法假設類別的出現頻率本身就攜帶了對模型有用的資訊，例如，一個城市名稱出現的頻率可能與其人口規模或經濟活動水平相關。

## 運作原理
頻率編碼的運作原理相對直接。首先，對於給定的類別特徵，計算每個唯一類別值在整個資料集（通常是訓練集）中出現的次數（計數）或其佔總數的比例（頻率）。
具體步驟如下：
1.  **識別唯一類別值**：從目標類別特徵中找出所有獨特的類別值。例如，在「城市」特徵中，可能會有「台北」、「台中」、「高雄」等唯一值。
2.  **計算頻率或計數**：
    *   **計數編碼 (Count Encoding)**：計算每個唯一類別值在資料集中出現的絕對次數。例如，如果「城市」特徵中「台北」出現了500次，「台中」出現了300次，那麼「台北」的計數值就是500，「台中」就是300。這種方法直接反映了類別的絕對數量。
    *   **頻率編碼 (Frequency Encoding)**：計算每個唯一類別值出現的次數佔總樣本數的比例。例如，如果總樣本數是1000，那麼「台北」的頻率值就是500/1000 = 0.5，「台中」就是300/1000 = 0.3。這種方法將計數標準化到0到1之間，使其對資料集大小不敏感。
3.  **替換類別值**：將原始類別特徵中的每個類別值替換為其對應的計數或頻率值。例如，所有「台北」的實例都會被替換為0.5（如果使用頻率編碼）。
這種轉換將一個類別特徵轉換為一個數值特徵，模型可以直接使用。對於測試集或新資料，應使用在訓練集上計算得到的頻率或計數映射來進行轉換，以避免數據洩漏，並確保一致性。這意味著，如果在訓練集中未見過的類別值出現在測試集中，它將被賦予一個預設值（例如0或訓練集中最常見類別的頻率）。

## 實際應用
頻率編碼在多種機器學習應用中都非常有用，尤其是在處理高基數類別特徵時：
*   **推薦系統**：用戶ID、商品ID等通常具有極高的基數。將其編碼為頻率可以幫助模型理解某些用戶或商品的流行程度，從而影響推薦結果。例如，熱門商品或活躍用戶的頻率會更高，這可能是一個重要的推薦因子。
*   **詐欺檢測**：某些交易模式、IP地址或用戶行為可能具有特定的頻率分佈。異常低的頻率可能指示潛在的詐欺行為，而異常高的頻率可能指示常見的合法行為。例如，一個從未出現過的IP地址進行的交易可能更可疑。
*   **自然語言處理 (NLP)**：詞頻（Term Frequency, TF）是NLP中的一個基本概念，與頻率編碼密切相關。它用於衡量一個詞在文檔中的重要性，是TF-IDF等技術的基礎。高頻詞可能具有較低的資訊量，而中等頻率的詞可能更具區分度。
*   **客戶流失預測**：客戶的購買頻率、互動頻率等都可以作為重要的預測特徵。例如，購買頻率低的客戶可能更容易流失。
*   **廣告點擊率 (CTR) 預測**：廣告ID、用戶特徵、上下文特徵等的高基數類別可以通過頻率編碼來捕捉其流行度或相關性。例如，點擊率高的廣告或用戶群體的頻率可能更高。
在這些應用中，頻率編碼能夠有效地將類別資訊壓縮到一個數值特徵中，同時避免了維度膨脹的問題，有助於提高模型的訓練效率和預測效能。

## 常見誤區
儘管頻率編碼具有優勢，但在使用時也存在一些常見誤區和需要注意的點：
1.  **資訊洩漏 (Data Leakage)**：如果在計算頻率或計數時使用了整個資料集（包括訓練集和測試集），則會發生資訊洩漏。正確的做法是只在訓練集上計算頻率或計數，然後將這些映射應用於訓練集和測試集。否則，模型可能會從測試集中「偷看」資訊，導致過度樂觀的評估結果。
2.  **過擬合 (Overfitting)**：如果某些類別值在訓練集中出現頻率極高，模型可能會過度依賴這些頻率資訊，導致在測試集上表現不佳。尤其是在訓練集中頻率高的類別，其頻率值可能與目標變數高度相關，但這種相關性在測試集中可能不成立。這類似於模型記住了訓練集的特定模式而非泛化能力。
3.  **處理稀有類別 (Handling Rare Categories)**：對於在訓練集中出現次數非常少的類別（稀有類別），其頻率值可能不穩定或不具代表性。這些稀有類別可能會被賦予相同的低頻率值，導致模型無法區分它們。可以考慮將稀有類別合併為一個「其他」類別，或者使用平滑技術（例如，為所有類別添加一個小的常數計數）來調整其頻率，使其更具魯棒性。
4.  **區分度不足 (Lack of Discrimination)**：如果兩個不同的類別具有相同的頻率或計數，頻率編碼將無法區分它們。這會導致資訊損失，因為模型會將它們視為同一個實體。在這種情況下，可能需要結合其他編碼方法或特徵來提供更多區分資訊，例如，結合獨熱編碼或目標編碼。
5.  **對時間序列資料的處理**：在時間序列資料中，頻率可能會隨時間變化。如果簡單地計算全局頻率，可能會忽略時間動態性。此時，可能需要採用基於時間窗的頻率計算（例如，過去7天的頻率）或使用更複雜的時序特徵工程方法，以捕捉時間相關的頻率變化。

## 與相關技術的比較
頻率編碼與其他類別特徵編碼方法各有優劣，適用於不同的場景：
*   **與獨熱編碼 (One-Hot Encoding) 比較**：
    *   **優勢**：頻率編碼在高基數特徵上能顯著減少維度，避免維度災難，降低模型複雜度和記憶體消耗。它還能捕捉類別的流行度資訊，這本身可能就是一個強大的預測因子。
    *   **劣勢**：獨熱編碼能完全保留原始類別資訊，不會引入序數關係，且每個類別都有獨立的特徵列，不會有頻率相同導致區分度不足的問題。但對於高基數特徵，獨熱編碼會產生大量稀疏特徵，導致計算效率低下。
    *   **適用場景**：低基數特徵或需要保留完整類別區分度時，獨熱編碼較優；高基數特徵且頻率資訊有意義時，頻率編碼較優。
*   **與標籤編碼 (Label Encoding) 比較**：
    *   **優勢**：標籤編碼將每個類別映射為一個唯一的整數，維度最低。頻率編碼也只產生一個數值特徵。頻率編碼引入的是基於頻率的數值關係，這可能是有意義的。
    *   **劣勢**：標籤編碼引入了隨機的序數關係，這對許多對距離敏感的模型（如線性模型、支持向量機）來說是誤導性的，除非類別本身就具有序數關係。頻率編碼則避免了這種隨機的序數假設。
    *   **適用場景**：標籤編碼僅適用於具有內在序數關係的類別，或用於樹模型（它們對序數關係不敏感）。頻率編碼適用於頻率資訊有價值的場景，且不引入任意序數關係。
*   **與目標編碼 (Target Encoding) 比較**：
    *   **優勢**：目標編碼將類別替換為其對應目標變數的平均值（或其他統計量），直接利用了目標資訊，通常效果很好。頻率編碼不直接使用目標變數，因此資訊洩漏風險較低。
    *   **劣勢**：目標編碼極易導致資訊洩漏和過擬合，需要嚴格的交叉驗證或平滑技術來緩解。頻率編碼相對較少資訊洩漏風險（只要在訓練集上計算頻率），且更為穩健。
    *   **適用場景**：目標編碼在分類和迴歸任務中表現強勁，但需要謹慎處理過擬合。頻率編碼是一個更保守且穩健的選擇，尤其是在探索性分析或作為目標編碼的補充，或者當目標變數資訊不易獲取時。
總體而言，頻率編碼是一種實用且相對穩健的特徵工程方法，尤其適合處理高基數類別特徵，並能為模型提供有價值的頻率分佈資訊。

## iPAS 考試出題分析

屬於未分類考範圍。

## 常見問題

### 頻率編碼與獨熱編碼有何不同？

頻率編碼與獨熱編碼的主要區別在於維度削減和資訊保留方式。獨熱編碼為每個唯一類別創建一個新的二進位特徵列，在高基數特徵時會導致維度爆炸，生成大量稀疏特徵。而頻率編碼將類別替換為其出現的頻率或計數，只生成一個數值特徵，顯著降低了維度。獨熱編碼完全保留了類別的獨立性，而頻率編碼則將類別的流行度資訊融入其中。選擇哪種方法取決於特徵的基數、模型對維度的敏感度以及頻率資訊是否對預測有益。

### 頻率編碼如何處理未曾見過的類別值？

在頻率編碼中，處理未曾見過的類別值（即在訓練集中未出現但在測試集或新資料中出現的類別）是一個重要考量。常見的做法是將這些未知類別賦予一個預設值。這個預設值可以是0、訓練集中所有類別的平均頻率、或者訓練集中最常見類別的頻率。另一種策略是將所有稀有或未知類別合併到一個「其他」類別中，並計算該「其他」類別的頻率。關鍵在於確保在訓練集上建立的頻率映射能夠一致地應用於所有新資料，避免資訊洩漏。

### 使用頻率編碼時有哪些潛在風險？

使用頻率編碼時存在幾個潛在風險。首先是資訊洩漏，如果在計算頻率時使用了測試集資料，會導致模型評估過於樂觀。其次是過擬合，模型可能過度依賴訓練集中某些高頻類別的特定模式，導致泛化能力差。再者是區分度不足，如果多個不同的類別具有相同的頻率，模型將無法區分它們，可能導致資訊損失。此外，對於稀有類別，其頻率值可能不穩定或不具代表性。建議使用交叉驗證來評估模型，並考慮結合其他編碼方法來緩解這些風險。

---

深度解說頁：https://aiterms.tw/learning/what-is-frequency-encoding
快查頁：https://aiterms.tw/terms/frequency-encoding
最後更新：2026/07/04