1 日志收集
- 需要的元素
必要:用戶ID,物品ID,事件名稱和時間
其他:從什么事件來,從什么頁面來,事件發(fā)生時用戶的相關(guān)屬性,事件發(fā)生時物品的相關(guān)屬性 - 推薦系統(tǒng)需要的矩陣
UserProfile,ItemProfile,Relation,Event
2 實時推薦
- 三個層次
給得及時,推薦100ms返回
用得及時,用戶物品特征及時更新
學(xué)得及時,推薦模型的及時更新 - 要點
實時數(shù)據(jù)kafka,流計算storm,在線學(xué)習(xí)梯度下降或者RDA和綜合FTRL,互動實時推薦通過Bandit算法
3 AB實驗
- 實驗框架
域,層,桶,發(fā)布層 - 流量分配
隨機(jī),cookie+層ID,用戶ID+層ID,cookie+時間 - 數(shù)據(jù)分析
- 基本
假設(shè)檢驗,確定可信度,然后確定置信區(qū)間 - 樣本量
估算需要的樣本量 - 顯著性
構(gòu)建統(tǒng)計量,如果在置信區(qū)間以外可以否定原假設(shè)
- 基本
- 弊端
會造成不好的體驗,需要較長時間測試,下線的實驗組不會再測試
使用Bandit算法替代流量劃分的方式
4 推薦服務(wù)
- 服務(wù) 數(shù)據(jù)庫和API
- 存儲
特征數(shù)據(jù):正排索引(以用戶ID或者物品ID為主鍵)(Cassandra(讀寫性能更高)或者h(yuǎn)base(強(qiáng)一致性)),倒排索引(以標(biāo)簽ID為主鍵)(Redis,Memecached)
模型數(shù)據(jù):大型PS worker分布式參數(shù)服務(wù)器,小型直接模型文件
召回數(shù)據(jù):全局召回,用戶召回,JSON序列化存入Redis - 數(shù)據(jù)錄入API
用戶錄入,物品錄入,關(guān)系錄入,事件錄入 - 推薦服務(wù)API
猜你喜歡 /Recommend
相關(guān)推薦 /Relative
熱門排行榜 /Hot
信息流(與前面的區(qū)別要加一個展現(xiàn)過濾,用緩存來實現(xiàn)冪等) - 注意
要有唯一曝光ID
商定合適的推薦數(shù)量,不可過?。ㄔ黾臃?wù)壓力)或者過大(物品浪費)
5 開源工具
- 內(nèi)容分析:非結(jié)構(gòu)化文本轉(zhuǎn)換為結(jié)構(gòu)化文本
主題模型LightLDA,PLDA;詞向量Word2vec,DMWE,F(xiàn)astText;文本分類FastText - 協(xié)同過濾和矩陣分解
KNN:Faiss,KGraph
SVD:LightFM
SVD++:
ALS:QMF
BFR: - 模型融合
LightGBM
XGBoost
Wide and deep
libffm - Web服務(wù)框架
Spring boot
Tornado
Flask/Django
Proxygen - 完整系統(tǒng)
PredictionIO
recommendationRaccooon
easyrec
hapiger
建議選擇細(xì)粒度工具,將他們集成為自己的推薦系統(tǒng)