1. 程式人生 > >1.13《推薦系統實踐》筆記(上)

1.13《推薦系統實踐》筆記(上)

兩天一口氣看完《推薦系統實踐》,非常的爽,收穫非常的大。作者不僅是技術性介紹,更是結合自己的商業理解。加上作者長時間的競賽工作第一手經驗,本書價值非常大!!!

《推薦系統實踐》筆記
作者:項亮
出版社: 人民郵電出版社
圖靈原創

筆記作者:jinwangjoshua(Github歡迎加星)

第一章 好的推薦系統

  1. 應用:
    • 電子商務,電影視訊,音樂電臺,社交網路,閱讀,基於位置(外賣,打車),個性化郵件,個性化廣告
  2. 推薦系統評測
    • 實驗方法:離線實驗,使用者調查,線上實驗(AB test)
    • 評價指標:
      ○ 使用者滿意度:問卷調查
      ○ 預測準確度:評分RMSE, MAE; TopN推薦
      ○ 覆蓋率:發現長尾物品
      ○ 多樣性:覆蓋使用者不同興趣
      ○ 新穎性(流行度反過來)
      ○ 驚喜度,信任度,實時性,健壯性(Robust)
      ○ 商業目標(廣告盈利)
    • 評價維度:使用者維度,物品維度,時間維度

第二章 利用使用者行為資料

  1. 使用者行為資料一般以日誌儲存; 一般分散式儲存:離線分析hadoop hive, 線上分析google dremel

  2. 使用者行為在個性化推薦系統中一般分兩種——顯性反饋行為(explicit feedback)和隱性反饋 行為(implicit feedback)。顯性反饋行為包括使用者明確表示對物品喜好的行為

  3. 這裡寫圖片描述

  4. 這裡寫圖片描述

  5. 使用者行為長尾分佈zipf; 長尾分佈的雙對數曲線是直線

  6. 常用資料集delicious, citeUlike原始資料; netflix,movielens人工清洗過來

  7. 使用者越活躍, 越傾向於瀏覽冷門物品

  8. 協同過濾演算法:如基於鄰域的方法(neighborhood-based基於使用者和基於物品)、隱語義模型 (latent factor model)、基於圖的隨機遊走演算法(random walk on graph)

  9. 評測方法: 離線實驗, 使用者調查, 線上實驗

  10. 實驗例子:本章著重 研究隱反饋資料集中的TopN推薦問題,因此忽略了資料集中的評分記錄。也就是說,TopN推薦 的任務是預測使用者會不會對某部電影評分,而不是預測使用者在準備對某部電影評分的前提下會給 電影評多少分。

    • 資料集:movielense
    • 實驗設計:劃分資料集,測量評測指標
    • 評測指標:
      ○ 召回率描述有多少比例的使用者—物品評分記錄包含在最終的推薦列表中
      ○ 準確率描述最終 的推薦列表中有多少比例是發生過的使用者—物品評分記錄。
      ○ 覆蓋率反映了推薦演算法發掘長尾的 能力,覆蓋率越高,說明推薦演算法越能夠將長尾中的物品推薦給使用者。覆蓋率表示最終的推薦列表中包含多大比例的物品
      ○ 推薦的新穎度,這裡用推薦列表中物品的平均流行度度量推薦結果的新穎度; 越不流行越新穎
  11. 基於使用者的協同過濾演算法(UerCF演算法):基於使用者相似的興趣和口味

    • 計算使用者興趣相似度:很多使用者相互之間並沒有對同樣的物品產生過行為,為此,可以首先建立物品到使用者的倒排表,對於每個物品都儲存對該物品產生過行為的使用者 列表;然後,建立一個4×4的使用者相似度矩陣W,對於物品a,將W[A][B]和W[B][A]加1,對 於物品b,將W[A][C]和W[C][A]加1,以此類推。掃描完所有物品後,我們可以得到最終的W矩陣。 這裡的W是餘弦相似度中的分子部分,然後將W除以分母可以得到最終的使用者興趣相似度。
    • 得到使用者之間的興趣相似度後,UserCF演算法會給使用者推薦和他興趣最相似的K個使用者喜歡的 物品。
    • Random演算法每次都隨機挑選10個使用者沒有產生過行為的物品推薦給當前使用者,MostPopular演算法 則按照物品的流行度給使用者推薦他沒有產生過行為的物品中最熱門的10個物品
  12. 改進User-IIF演算法(John S. Breese改進): 計算興趣相似度時候,懲罰了使用者u和使用者v共同興趣列表中熱門物品對他們相 似度的影響。

  13. UserCF應用:不多,比如Digg

    • 缺點:當用戶數量太大,使用者相似度計算量(時間複雜度和空間複雜度)太大;
  14. 基於物品的協同過濾(ItemCF演算法):)給使用者推薦那些和他們之前喜歡的物品相似的物品

    • 並不利用物品內容屬性計算物品相似度,????它主要通過分析使用者的行為記錄計算物品之間的 相似度
    • 給出推薦理由:根據你購買/喜歡/收藏的XX推薦;Customers Who Bought This Item Also Bought
  15. ItemCF步驟:計算物品相似度;根據物品相似度和使用者的歷史行為進行推薦

    • 計算物品相似度:
      這裡寫圖片描述
      ○ 首先建立使用者—物品倒排表,而不是基於內容屬性
      這裡寫圖片描述
    • 評價:精度(準確度,召回率);流行度;覆蓋率
  16. 改進ItemCF:(ItemCF-IUF)

    • 為IUF(Inverse User Frequence),即使用者活躍度對數的 倒數的引數; 活躍使用者對物品相似度的貢獻應該小於不活躍的使用者, John S. Breese提出應該增加IUF 引數來修正物品相似度的計算公式
    • 過於活躍使用者直接忽略,比如在噹噹進貨的實體店店主
    • 相似度矩陣進行最大值歸一化,(提高準確度,覆蓋率,多樣性)
      ○ 消除類別內部之間相似度差異,可以提高推薦的多樣性。
      ○ 不進行歸一化,就會推薦 比較熱門的類裡面的物品,而這些物品也是比較熱門的。因此,推薦的覆蓋率就比較低
    • 哈利波特問題(極度熱門商品):修改相似度,引入懲罰係數Alpha(通常0.5),加大懲罰
  17. UserCF和ItemCF的綜合比較

    • UserCF的推薦結果著重於反映和使用者興趣相似的小群體的熱點,而ItemCF 的推薦結果著重於維繫使用者的歷史興趣。換句話說,UserCF的推薦更社會化,反映了使用者所在的 小型興趣群體中物品的熱門程度,而ItemCF的推薦更加個性化,反映了使用者自己的興趣傳承。 為什麼Digg使用UserCF,而亞馬遜網使用ItemCF呢?
      ○ 內容上:在新聞網站中,使用者的興趣不是特別細化,絕大多數使用者都喜歡看熱門的新聞。即使是個性 化,也是比較粗粒度的,比如有些使用者喜歡體育新聞,有些喜歡社會新聞,而特別細粒度的個性 化一般是不存在的。
      ○ 技術上實效性:Item難以實現快速更新,因為需要維護物品相關度矩陣(書中說一天一更),而新聞注重實效性; 但是電子商務和圖書電影方面,使用者興趣一般比較固定和持久
      ○ 計算上: 使用者很多,那麼維護使用者興趣相似度矩陣需要很大的空間,
      這裡寫圖片描述
    • 都是基於使用者對物品行為,不涉及物品的內容資料,這是與LFM隱語義模型區別所在
    • 選擇:先滿足產品需求(比如解釋的需要);其次看實現代價(技術能力)
  18. 隱語義模型(LFM,latent factor model )

    • 核心思想是通過隱含特徵 (latent factor)聯絡使用者興趣和物品.對書和物品的興趣進行分類。對於某個使用者,首先得到他的興趣分類, 然後從分類中挑選他可能喜歡的物品
    • 總結一下,這個基於興趣分類的方法大概需要解決3個問題。
      ○ 如何給物品進行分類?
      § 編輯分類難點:和使用者分類有出入;難以控制顆粒度;難以給出多分類;很難多維度分類(內容,作者,出版社等等);難決定物品在分類中權重
      § 解決:LFM讓使用者分類;自動多分類;自動計算物品屬於每個類別權重和一個物品在某個分類中的權重;制定分類->數字越大,分類越細
      ○ 如何確定使用者對哪些類的物品感興趣,以及感興趣的程度?
      ○ 對於一個給定的類,選擇哪些屬於這個類的物品推薦給使用者,以及如何確定這些物品在 一個類中的權重?
    • 常用模型和方法:有pLSA、LDA、隱含類別模型(latent class model)、隱含主題模型(latent topic model)、 矩陣分解(matrix factorization)
    • 使用場景:
      ○ 顯性反饋資料(評分資料)達到很好精度;
      ○ 書中介紹隱形反饋資料集(問題是隻有正樣本而沒有負樣本)
      § 解決:採集負樣本–沒有行為的樣本
      § 遵循原則:正負數目平衡;儘量選取很熱門使用者卻沒有行為的物品
  19. 模型細節:損失函式(注意正則項); 隨機梯度下降
    這裡寫圖片描述

    • LFM重要引數:
      ○ 隱形特徵F
      ○ 學習速率alpha
      ○ 正則係數lambda
      ○ 負/正樣本比例ratio:影響最大,控制推薦演算法發掘長尾能力(流行度),影響準確度(本書中1-10之內準確率上升趨勢,之後平穩)
    • 例子:雅虎個性化首頁Bee-Chung Chen、Deepak Agarwal、Pradheep Elango和Raghu Ramakrishnan的“Latent Factor Models for Web Recommender Systems”; 雅虎的研究人員以CTR作為優化目標,利用LFM來預測使用者是否會單擊一個連結。為此, 他們將使用者歷史上對首頁上鍊接的行為記錄作為訓練集。解決實效性?長期歷史行為LFM(每天更新) + 最近幾小時歷史行為LFM (快速計算)
  20. LFM和基於鄰域比較
    | LFM | UesrCF/ItemCF |
    | 理論基礎 | 機器學習方法 | KNN, 統計 |
    | 離線計算空間複雜度 | 小很多 | 大很多 |
    | 離線計算時間複雜度 | 沒大區別 | 沒大區別 |
    | 線上實時推薦 | 難以實時 | 將需要表格快取在記憶體中 |
    | 推薦解釋 | 基於使用者行為進行內容分類,但是難以描述 | 根據使用者歷史記錄進行推薦

  21. 基於圖的模型:將user-item relationship當作二分圖,查詢兩個頂點相關性

    • 相關性高度頂點的特徵:
      ○ 兩個頂點之間有很多路徑相連;
      ○ 連線兩個頂點之間的路徑長度都比較短;
      ○ 連線兩個頂點之間的路徑不會經過出度比較大的頂點。
    • 典型演算法是基於隨機遊走的PersonalRank演算法:假設要給使用者u進行個性化推薦,可以從使用者u對應的節點vu開始在使用者物品二分圖上進行隨 機遊走。遊走到任何一個節點時,首先按照概率 α 決定是繼續遊走,還是停止這次遊走並從vu節 點開始重新遊走。如果決定繼續遊走,那麼就從當前節點指向的節點中按照均勻分佈隨機選擇一 個節點作為遊走下次經過的節點。這樣,經過很多次隨機遊走後,每個物品節點被訪問到的概率 會收斂到一個數。最終的推薦列表中物品的權重就是物品節點的訪問概率。
      (非本書內容)知乎嚴林:基於圖的演算法(如PersonalRank等),由於其計算複雜度很高,在工業界應用是比較少的。https://www.zhihu.com/question/30467586