🎯 推薦系統一般會回傳前 N 個排名的物品清單給用戶,稱為 Top‑N 推薦。 遇到推薦模型須要訓練及評估時,習慣先蒐集用戶與物品的互動資料,再將資料拆分成沒有重疊的訓練集及測試集。 模型在訓練時只看得到訓練集,評估時則拿測試集作為驗證的標準答案,以免作弊。
通常,在評估推薦模型時,和一般機器學習的模型評估不同,會採用逐用戶等比例切割 (userwise stratified split) 評估法。 即針對每個用戶的喜好物品,等比例拆分成訓練集及測試集,請模型利用全體訓練集作出該用戶的 Top‑N 推薦,然後利用其個人測試集作核對,計算該用戶的得分指標。 因為模型未看過測試集,所以最後全體用戶的指標平均值就是模型的客觀表現,可供比較之用。
上述作法在實際計算得分指標時,常遇到測試集數量和推薦數量 N 不匹配,造成得分指標尺規不一致的困擾。以下進行問題,原理,及解法說明。
❓ 問題介紹
在 逐用戶等比例切割 的設定下,每位用戶的測試集互動數量不一樣。 當使用固定的 Top‑N 推薦清單做評估時,就會出現「測試集大小與 Top‑N 回傳數量不匹配」的情況:
- 👤 輕度互動的用戶:測試集互動數
|Rᵤ| < N - 👥 重度互動的用戶:測試集互動數
|Rᵤ| > N
這會讓 回傳數量 N 的精確率 Precision@N,及回傳數量 N 的召回率 Recall@N 產生尺規上限受限的現象, 影響不同用戶之間評比的尺規公平性。
🔍 原理說明(為什麼會不公平)
若使用 Top‑N 評估,指標的分母固定或依用戶而變:
- Precision@N = 命中數 / N,其分母固定為
N, 輕度互動用戶的精確率最大值會受此尺規「天花板」限制,達不到 1.0。 - Recall@N = 命中數 / |Rᵤ|,其分母為
|Rᵤ|, 重度互動用戶的召回率最大值會受此尺規「天花板」限制,達不到 1.0。
這並非「計算錯誤」,而是 Top‑N 回傳量的本質所導致的評估上限不一致。
相比之下,✨正規化打折累積增益 NDCG@N 指標會以用戶理想排序的 理想打折累積增益 IDCG 進行正規化,
而 IDCG 的長度是 min(|Rᵤ|, N)。因此每位用戶都能達到 1.0 的尺規滿分,
不會因為測試集大小不同而被系統性壓低。
💡 實務解法
以下是最常見的三種解決做法:
- ✅ 接受個別用戶的指標尺規上限不同:只要所有模型都在相同的尺規限制下比較,排名仍有參考價值。 因為各模型可在相同受限指標尺規範圍內求好表現,所以不影響依據指標平均值所作的模型排名比較。
- 📋 粗糙解法:改用留1筆 Leave‑One‑Out(LOO)分割法,每位用戶只保留一筆測試互動,再搭配 命中率 Hit Rate (HR@N) = 命中數 指標作評估, 其值為 0 或 1。
- ⭐ 精細解法:改以 NDCG@N 作為主指標,並輔以 Precision/Recall/HR, 讓輕重度互動的用戶都能公平比較。
沒有留言:
張貼留言