1. 程式人生 > >推薦系統實踐

推薦系統實踐

這樣的 info filename 新浪微博 的人 最簡 數量 strong 以及

推薦系統測評

實驗方法
  • 離線實驗:準備訓練數據測試數據並評估;
  • 用戶調查:問卷方式、和用戶滿意度調查
  • 在線實驗:AB測試:AB測試是一種很常用的在線評測算法的實驗方法。它通過一定的規則將用戶隨機分成幾組,
  • 並對不同組的用戶采用不同的算法,然後通過統計不同組用戶的各種不同的評測指標比較不同算
  • 法,比如可以統計不同組用戶的點擊率,通過點擊率比較不同算法的性能。
測評指標:
  • 用戶滿意度
  • 預測準確度:預測準確度度量一個推薦系統或者推薦算法預測用戶行為的能力。這個指標是最重要的推薦系統離線評測指標
  • 評分預測: 均方根誤差 RMSE 平均絕對誤差MAE
  • TopN推薦:網站在提供推薦服務時,一般是給用戶一個個性化的推薦列表,這種推薦叫做TopN推薦。TopN推薦的預測準確率一般通過準確率(precision)/召回率(recall)度量。
  • 覆蓋率:覆蓋率(coverage)描述一個推薦系統對物品長尾的發掘能力。覆蓋率有不同的定義方法,最簡單的定義為推薦系統能夠推薦出來的物品占總物品集合的比例。
  • 信息熵度量:這裏p(i)是物品i的流行度除以所有物品流行度之和。
  • 技術分享圖片

  • 基尼系數度量: ij是按照物品流行度p()從小到大排序的物品列表中第j個物品
  • 技術分享圖片
  • 多樣性:,推薦列表需要能夠覆蓋用戶不同的興趣領域,即推薦結果需要具有多樣性。
  • 新穎性:新穎的推薦是指給用戶推薦那些他們以前沒有聽說過的物品。
  • 驚喜度:,如果推薦結果和用戶的歷史興趣不相似,但卻讓用戶覺得滿意,那麽就可以說推薦結果的驚喜度很高
  • 信任度:讓用戶對推薦結果產生信任是非常重要的。同樣的推薦結果,以讓用戶信任的方式推薦給用戶就更能讓用戶產生購買欲,而以類似廣告形式的方法推薦給用戶就可能很難讓用戶產生購買的意願。
  • 實時性
  • 健壯性:而健壯性(即robust,魯棒性)指標衡量了一個推薦系統抗擊作弊的能力。
  • 商業目標:,網站評測推薦系統更加註重網站的商業目標是否達成,而商業目標和網站的盈利模式是息息相關的。
測評維度:
  • 用戶維度 主要包括用戶的人口統計學信息、活躍度以及是不是新用戶等。
  • 物品維度 包括物品的屬性信息、流行度、平均分以及是不是新加入的物品等。
  • 時間維度 包括季節,是工作日還是周末,是白天還是晚上等。

用戶行為數據

  • 用戶顯性反饋數據:顯性反饋行為包括用戶明確表示對物品喜好的行為。主要方式就是評分和喜歡/不喜歡。
  • 用戶隱性反饋數據:隱性反饋行為指的是那些不能明確反應用戶喜好的行為。最具代表性的隱性反饋行為就是頁面瀏覽行為。
用戶活躍度和物品流行度:長尾分布 一般來說,不活躍的用戶要麽是新用戶,要麽是只來過網站一兩次的老用戶。那麽,不同活躍度的用戶喜歡的物品的流行度是否有差別?一般認為,新用戶傾向於瀏覽熱門的物品,因為他們對網站還不熟悉,只能點擊首頁的熱門物品,而老用戶會逐漸開始瀏覽冷門的物品。 用戶行為數據設計的推薦算法
  • 基於鄰域的方法(neighborhood-based)
  • 隱語義模型(latent factor model)
  • 基於圖的隨機遊走算法(random walk on graph)
其中最主要的方法為基於鄰域的算法:
  • 基於用戶的協同過濾算法 這種算法給用戶推薦和他興趣相似的其他用戶喜歡的物品。
  • 基於物品的協同過濾算法 這種算法給用戶推薦和他之前喜歡的物品相似的物品。
基於用戶的協同過濾算法:
  • (1) 找到和目標用戶興趣相似的用戶集合。(相似性計算,基於距離)
  • (2) 找到這個集合中的用戶喜歡的,且目標用戶沒有聽說過的物品推薦給目標用戶
改進 1: 如果對用戶兩兩計算相似度,復雜度過高O(n*n) ,因此可以首先計算item-user的倒排表,然後計算用戶相似度,這樣可以過濾掉共同物品為0的用戶 改進 2: 考慮物品本身的流行度, 技術分享圖片

基於物品的協同過濾算法
  • (1) 計算物品之間的相似度。
  • (2) 根據物品的相似度和用戶的歷史行為給用戶生成推薦列表。
  • 技術分享圖片共現的概率
改進 1 :user-item倒排表 改進 2 用戶活躍度的影響 技術分享圖片

技術分享圖片

技術分享圖片

隱語義模型

隱語義模型是最近幾年推薦系統領域最為熱門的研究話題,它的核心思想是通過隱含特征(latent factor)聯系用戶興趣和物品。 隱含語義分析技術從誕生到今天產生了很多著名的模型和方法,其中和該技術相關且耳熟能詳的名詞有pLSA、LDA、隱含類別模型(latent class model)、隱含主題模型(latent topic model)、矩陣分解(matrix factorization)。這些技術和方法在本質上是相通的,其中很多方法都可以用於個性化推薦系統。 技術分享圖片 技術分享圖片 隱性反饋數據中,沒有負樣本 只有正樣本;在隱性反饋數據集上應用LFM解決TopN推薦的第一個關鍵問題就是如何給每個用戶生成負樣本。
  • 對於一個用戶,用他所有沒有過行為的物品作為負樣本。
  • 對於一個用戶,從他沒有過行為的物品中均勻采樣出一些物品作為負樣本。
  • 對於一個用戶,從他沒有過行為的物品中采樣出一些物品作為負樣本,但采樣時,保證每個用戶的正負樣本數目相當。
  • 對於一個用戶,從他沒有過行為的物品中采樣出一些物品作為負樣本,但采樣時,偏重采樣不熱門的物品。
對於第一種方法,它的明顯缺點是負樣本太多,正負樣本數目相差懸殊,因而計算復雜度很高,最終結果的精度也很差。對於另外3種方法,Rong Pan在文章中表示第三種好於第二種,而第二種好於第四種。
  • 對每個用戶,要保證正負樣本的平衡(數目相似)。
  • 對每個用戶采樣負樣本時,要選取那些很熱門,而用戶卻沒有行為的物品。
LFM和基於鄰域的方法的比較
  • 理論基礎 LFM具有比較好的理論基礎,它是一種學習方法,通過優化一個設定的指標建立最優的模型。基於鄰域的方法更多的是一種基於統計的方法,並沒有學習過程。
  • 離線計算的空間復雜度 :LFM大量節省了訓練過程中的內存
  • 離線計算的時間復雜度:在一般情況下,LFM的時間復雜度要稍微高於UserCF和ItemCF,這主要是因為該算法需要多次叠代。但總體上,這兩種算法在時間復雜度上沒有質的差別。
  • 在線實時推薦: UserCF和ItemCF在線服務算法需要將相關表緩存在內存中,然後可以在線進行實時的預測。
  • 推薦解釋: ItemCF算法支持很好的推薦解釋,它可以利用用戶的歷史行為解釋推薦結果。但LFM無法提供這樣的解釋,它計算出的隱類雖然在語義上確實代表了一類興趣和物品,卻很難用自然語言描述並生成解釋展現給用戶。

推薦系統冷啟動問題

  • 用戶冷啟動
  • 物品冷啟動
  • 系統冷啟動
利用用戶註冊信息
  • 人口統計學信息 包括用戶的年齡、性別、職業、民族、學歷和居住地。
  • 用戶興趣的描述 有一些網站會讓用戶用文字描述他們的興趣。
  • 從其他網站導入的用戶站外行為數據 比如用戶通過豆瓣、新浪微博的賬號登錄,就可以在得到用戶同意的情況下獲取用戶在豆瓣或者新浪微博的一些行為數據和社交網絡數據。
選擇合適的物品啟動用戶的興趣 一般來說,能夠用來啟動用戶興趣的物品需要具有以下特點
  • 比較熱門
  • 具有代表性和區分性
  • 啟動物品集合需要有多樣性
利用物品的內容信息 發揮專家的作用

利用用戶標簽數據

用戶用標簽來描述對物品的看法,因此標簽是聯系用戶和物品的紐帶,也是反應用戶興趣的重要數據源,如何利用用戶的標簽數據提高個性化推薦結果的質量是推薦系統研究的重要課題 技術分享圖片

技術分享圖片

數據稀疏性 對於新的物品或者用戶,標簽數量非常少,此時需要對標簽進行擴展 ---基於標簽的相似性 標簽清理:除去詞頻很高的停止詞、同義詞 等;類比自然語言處理

## 利用上下文信息

時間上下文信息
  • 用戶興趣是變化的
  • 物品也是有生命周期的
  • 季節效應
系統時間特性的分析:
  • 數據集每天獨立用戶數的增長情況
  • 系統的物品變化情況 :網站新聞增長情況,商品增長情況等
  • 用戶訪問情況: 用戶的平均活躍天數
時間上下文推薦算法:
  • 最近熱門推薦
  • 時間上下文itemCF算法: 最常用的是基於物品的個性化推薦系統
    • 物品相似度
    • 在線推薦 : 用戶近期行為更關鍵
  • 時間上下文相關的userCF算法
    • 用戶興趣相似度
    • 相似興趣用戶最近行為
  • 地點上下文

推薦系統實踐