商品推薦算法比一比! KNN vs ALS vs BPR vs SVD

mz bai
Jul 13, 2020

--

來源網址

業務架式十足地拿起電話,帶著親切的口氣,開口道: 「陳太太呀~~」。這是每日電銷中心的寶貴早晨,每通電話都至關重要,可能關係到月底的獎金是能大吃大喝還是底薪全都付房租。

每一通電話都是寶貴的機會,與其花時間思考推薦何種商品,更多時候業務會根據經驗推薦會員對應的商品,尤其是熱門商品或者是會員最常購買的前幾項商品,打安全牌雖然避免很多犯錯的成本,不過也限縮公司商品的擴展性,於是資料部門便提出推薦系統來協助業務部門。

這次製作的推薦系統著重在推薦會員不同於以往購買紀錄的商品,而不只是可能購買的,因為有很高的可能性會推薦到過去購買最多的商品。

KNN based approach

我們首先將會員是否購買的評分矩陣拆解成不同購買集合的會員們,再計算不同集合的會員特徵間的cosine相似度,獲得距離矩陣。以KNN建立搜尋樹後,將最受相似會員歡迎的產品推薦給會員。

KNN 推薦概念圖

比較和驗證

我們以當月的歷史購買紀錄為資料集,計算top-5 mask accuracy,並且推薦尚未購買過的商品。本次比較的演算法包括 implicit 的ALS、BPR;explicit 的SVD;上述的KNN方法;其他類的NMF、LightFM。

比較不同模型的準確率與訓練、推論時間,訓練時間單位為分鐘

可見矩陣分解在解決推薦問題上,仍然是數一數二的算法,在scikit-learn的加速下更顯出優勢,不過以處理implicit資料為主的ALS和BPR和我們的KNN方法都位居最高的準確度,由此可見資料本身的特性確實深深地影響著演算法的選擇,而lightFM的無論速度或準確度皆最後一名。

結語

期待未來能再加入NCF、LambdaMART、GNN等算法的比較,以及改進KNN方法的效能(目前是純python實作,從最初七分鐘的訓練+推論,現在只有兩秒鐘即能完成推論)。推薦系統已經在網路世界裡佔據極為重要的角色,幾乎所有的大型網路商城或平台上都有推薦系統的存在,不過在脫離網路的線下世界裡,推薦系統在零售業、服務業的使用並不多,我覺得這次是個很不錯的嘗試,利用推薦系統連結線下的人與商品。

附錄:

Alternative Least Square, ALS

R~UI

Least square + L2 regularization

輪流固定U和I,再對I和U計算最小平方減少損失函數,其中加入L2正則化可以處理稀疏性和過擬合的問題。

Singular Value Decomposition, SVD

R~U*Sigma*I

將矩陣拆解成三個不同的矩陣,中間的Sigma扮演潛在因素矩陣,可以用來解釋各component的重要性,畢竟SVD是一種降維的計算方法。

Non-negative Matrix Factorization, NMF

R~UI U>=0, I>=0

將矩陣分解為user矩陣和item矩陣且限制元素恆為非負,雖然有論文使用NMF作為推薦系統,但對我們的資料效果不是很好。

Bayesian personalization ranking, BPR

P(i>j)=logistic

不同於矩陣分解視推薦為用戶矩陣與商品矩陣的交互作用,而是利用排序的方式,視正負樣本間的偏好是由logistic function決定,相似於樹相關的算法概念。

Hybrid latent representation model, LightFM

LightFM 的模型可包含用戶的多個特徵及商品的多個特徵,利用嵌入(embedding)層產生高維的豐富特徵,並解決冷啟動問題。

--

--

mz bai
mz bai

Written by mz bai

Math is math, math is universal Code is code, code is horrifying unique.

No responses yet