推薦系統 — 演算法筆記
最近剛好要參加推薦系統的Hackthon,簡單整理一下之前在極客APP聽了推薦36式專欄的相關資訊:
由於是參加比賽,主要關注離線模型,且對於運算的負擔比較不關心,先找些開源能夠馬上開發的來用:
- 內容分析:
for hack: 1. job 2. company 3. personal
recall: 全部的點擊, 我猜到幾個
主要針對文章,將非結構化的文章轉為結構化如:
a. 主題模型 ex. LDA
b. 詞嵌入 ex. word2vec, doc2vec 把文章轉成向量
c. 文本分類
Python Package: gensim, tensorflow, FastText
2. 協同過濾(CF) & 矩陣分解(SVD):
建構一個用戶與物品的矩陣,row 是用戶column 是物品,用這個矩陣算相似度,有多種算法
a. KNN相似度計算
b. SVD++ (加入用戶屬性,而非單純行為)
c. ALS
d. BPR矩陣分解
Python Package:
(a)KNN: kgraph, annoy, faiss, nmslib
(b)CF: Spark.RowMatrix.columnSimilarities
(c)SVD: lightfm
(d)都有: implicit, QMF
3. 模型融合: 這邊就是Kaggle比較常見的模型
(a)GBDT: LightGM, XGBoost
(b)Tensorflow-wide and deep: 結合了可解釋性強的線性模型,如logistic和神經網路的特徵提取功能,簡單說就是把隱藏層當作特徵,凝聚許多的稀疏特徵。
(c)LibFFM: 因子分解機
(d)vowpal_wabbit: 線性模型