推薦系統陳開江 - C11 關鍵模塊

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
    建議選擇細粒度工具,將他們集成為自己的推薦系統
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。