推薦系統概念介紹, 提到數據採集和處裡的一些觀念, 與工程上可能遇到的問題, 然後使用幾個實作範例來感受一下推薦功能的魅力常見的推薦演算法
- 基於內容的推薦(Content-based) : 根據用戶與產品的資訊推薦
- 人口統計式推薦(Demographic) : 使用者依照個人屬性如性別, 年齡, 教育, 居住地分類, 依分類做統計推薦
- 關聯規則(Association Rule) : 消費者買A, 那他買B的機率也很高, 如購物籃分析
- 協同過濾(Collaborative Filtering) : 根據所有使用者的點擊或評價, 來推斷每個使用者的喜好, 找出與你對產品的評價相近的使用者, 他喜歡的多半你也喜歡, 例如 : userA喜歡(A.B.C) userB喜歡(A.B), 就可以推薦給userB C產品
採集數據和處理數據的關鍵點
- 首先必須理解用戶的數據 : 比如說用戶點過哪個視頻, 到底是喜歡還是不喜歡? 解決方法為合理定義特徵值如用戶點擊, 停留時間, 中間有沒有跳放, 重複觀看, 點讚評分, 正面的label最大化, 負面的就最小化
- 合理看待缺失數據 : 比如說數據丟了, 或如年齡.地址等非必填數據, 如果太多非必填數據會缺失過多, 也可以建立其他如分群model來還原數據
- 打通個平台之關係 : 不同平台可以ID不同, 導致人員對不上, 解決方法為利用其他訊息如IP位置, 設備類型等特徵相近的地方把兩方面數據串起來, 更複雜視使用model將兩平台用戶配對. 另一種是去除ID, 有時用戶瀏覽行為不一定登錄, 聚焦在用戶行為上, 例如user1看過A又去看B, user2看過A也去看B, 就可以推測AB有關係, user3只看A, 很有可以可以推薦他B, 如國協同過濾的概念, 匿名有個好處是可以保護個資
- model除了考慮產品與用戶之間的關係, 還必須考慮如何年齡, label設定, 時效性等因素考慮進去, 例如報紙文章最新的比較有吸引力
模型使用工程上的問題
- model如何訓練 : 好的推薦系統必須有時效性, 數據更新過慢或model無法把最新用戶資料包含進去, 效果就會打折, 必須建立在線更新model機制, data要以streaming的方式進入DB與model
- model如何使用 : 必須低延遲, 需要大規模調度, 負載平衡, 壓力測試
- model如何制定評判標準 : 通常使用精確率(Precision)和召回率(Recall), 來做指標, 也有使用平均百分位數(Mean Percentile Rank)
- model如何上線 : 先給百分之一的user使用新model, 百分之一的人當對照組, 如果效果好, 可以逐漸增加到百分之五.百分之十.最終到百分之百, 判斷效果的指標盡量使用短期的, 長期指標如留存率就無法當成實驗結果, 因為等不到那天到來, 然而指標怎麼去除噪音, 怎麼處理稀疏數據, 怎麼描述統計顯著性, 怎麼樣找到好的短期指標需要花時間去探索和驗證
- 監控系統 : 指標異常檢測, 可結合異常檢測的機器學習model
實作範例 - 可參考下列文章或範例
>>[Recommend][Spark] 協同過濾
>> Spark官網 - 關聯規則範例>> Spark官網 - 關聯規則範例實作
>> 推薦系統介紹
市面上的推薦系統參考
實務上多半是使用多種推薦混合例如Spotify推薦系統, 當然就實作面難度很高囉~, 請參考下列文章>>揭秘 Spotify 三大核心演算法 :用 Python + AI 打造讓你上癮的「每週新發現」歌單!
Ref:
- 謝梁.魯潁.勞虹嵐 , Keras快速上手, 電子工業出版社
- Spark Document, https://spark.apache.org/docs/2.3.0/ml-collaborative-filtering.html
- 林大貴 著, Python+Spark2.0+Hadoop 機器學習與大數據分析實戰, 博碩
沒有留言:
張貼留言