---
title: "因子分解機（Factorization Machines）"
slug: factorization-machines
language: zh-TW
source: https://aiterms.tw/terms/factorization-machines
updated_at: 2026-07-30
tags: [推薦系統, 機器學習, 深度學習]
ipas_term: false
---

# 因子分解機（Factorization Machines）

用低秩因子向量建模特徵間的二階交互作用，兼具線性模型的效率和特徵交互學習的能力。

## 完整說明

因子分解機（FM）推廣了矩陣分解，將其從單純的用戶-物品互動擴展到任意特徵空間。FM 用低秩因子向量 v_i（維度 k）代表特徵 i，特徵 i 和 j 的交互作用表示為 <v_i, v_j>（向量內積）。通過因子向量共享，FM 能有效學習高維特徵空間中的二階交互，計算複雜度為 O(nk)，遠低於直接列舉所有交互項的 O(n^2)。

## 常見問題

### 為什麼因子分解機能在稀疏高維特徵空間中有效學習特徵交互，而普通的二階多項式模型則不行？

普通二階多項式模型為每個特徵對 (i,j) 分配獨立的交互參數 w_ij，總數達到 O(n^2)。在稀疏數據中，大多數特徵對幾乎不會同時出現，導致對應參數無法有效學習，參數值隨機波動。FM 則為每個特徵分配因子向量 v_i，交互通過 <v_i, v_j> 計算。關鍵是參數共享：即使特徵 i 和 j 無共同樣本，它們分別與其他特徵 k 的交互信號（<v_i, v_k>、<v_j, v_k>）也能幫助估計 v_i 和 v_j，進而推斷 <v_i, v_j>。這是低秩近似的威力：高維交互矩陣可由低秩因子乘積逼近，參數複雜度從 O(n^2) 降至 O(nk)，使稀疏數據也能有效訓練。

### 因子分解機的因子維度 k 如何選擇？維度太小或太大會有什麼後果？

k 的選擇是 FM 的關鍵超參數，直接影響特徵交互建模的精度。k 過小時，因子向量表達能力不足，無法充分捕捉特徵間的複雜交互，導致模型欠擬合，預測精度低。k 過大時，模型參數增多（O(nk)），在稀疏數據上易過擬合，學習到噪聲而非真實交互模式。選擇 k 通常透過交叉驗證進行，在小範圍（如 2-128）內測試，選擇測試集精度最高的值。實務經驗表明：k 取值範圍通常為 4-16（用於文本、稀疏特徵），或 20-100（用於密集特徵或大規模數據）。此外，可根據特徵維度和數據量調整，特徵數多或數據量大時適當提高 k。監測驗證集精度，當 k 增加不再改善時停止，避免不必要的計算開銷。

### 深度因子分解機（DeepFM）相比普通 FM 有什麼改進，為什麼需要結合深度學習？

普通 FM 顯式學習二階特徵交互，難以捕捉更高階的複雜非線性互動。例如，用戶偏好可能取決於多個特徵（年齡、地點、時間、設備類型）的共同作用，不僅是兩兩交互。DeepFM 結合 FM 和深度神經網路：FM 部分保留對淺層二階交互的建模，神經網路部分則通過多層隱藏層學習高階交互。兩部分共享底層特徵嵌入，聯合訓練。這樣既保留了 FM 對二階交互的顯式建模和計算高效性，又獲得了深度網路對複雜非線性互動的學習能力。實驗表明 DeepFM 在 CTR 預測上明顯優於單純 FM 或單純深度模型，代表了淺層和深層方法的有機結合。

---

來源：https://aiterms.tw/terms/factorization-machines
快查頁：https://aiterms.tw/terms/factorization-machines
最後更新：2026/07/30
深度解說：https://aiterms.tw/learning/what-is-factorization-machines