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