讀書筆記:推薦系統實踐-第二章-利用用戶行爲數據

1、用戶行爲數據簡介

用戶行爲在個性化推薦系統一般會分爲兩種:顯性反饋行爲和隱性反饋行爲。
在這裏插入圖片描述
在這裏插入圖片描述
如何用統一的方式表示這些所有的行爲?
在這裏插入圖片描述
不同行爲的不同數據集

  • 無上下文信息的隱性反饋數據集 每一條行爲記錄僅僅包含用戶ID和物品ID。
  • 無上下文信息的顯性反饋數據集 每一條記錄包含用戶ID、物品ID和用戶對物品的評分。
  • 有上下文信息的隱性反饋數據集 每一條記錄包含用戶ID、物品ID和用戶對物品產生行。
  • 有上下文信息的顯性反饋數據集 每一條記錄包含用戶ID、物品ID、用戶對物品的評分和評分行爲發生的時間戳。

2、用戶行爲分析

2.1 用戶活躍度和物品流行度的分佈

用戶的行爲數據是滿足長尾分佈的,下面兩者都滿足長尾分佈

  • fu(k)爲對k個物品產生過行爲的用戶數
  • fi(k)爲被k個用戶產生過行爲的物品數
    在這裏插入圖片描述

2.2 用戶活躍度和物品流行度的關係

一般認爲,新用戶傾向於瀏覽熱門的物品,而老用戶會之間開始瀏覽冷門的物品
在這裏插入圖片描述
基於用戶行爲數據設計的推薦算法一本稱爲協同過濾算法,該算法又可以分爲:

  • 基於鄰域的方法(neighborhood-based)
    • 基於用戶的協同過濾算法
    • 基於物品的協同過濾算法
  • 隱語義模型(latent factor model)
  • 基於圖的隨機遊走算法(random walk on graph)

3、實驗設計和算法測評

  • 數據集:MovieLens
  • 研究問題:TopN推薦問題
  • 訓練集與測試集:N折交叉驗證
  • 測評指標
    • 準確率 召回率
    • 覆蓋率:最終的推薦列表中包含多大比例的物品
    • 新穎度:推薦列表中物品的平均流行度
  • 在計算平均流行度時對每個物品的流行度取對數。因爲物品的流行度分佈滿足長尾分佈,取對數之中,流行度的平均值更加穩定。

4、基於鄰域的算法

4.1 基於用戶的協同過濾算法

基本的兩個步驟

  • 找到和目標用戶興趣相似的用戶合集
  • 找到和這個集合中的用戶喜歡的,且目標用戶沒有聽說過的物品推薦給用戶目標

計算相似度的兩個方法:

  • 給定用戶u和用戶v,令N(u)表示用戶u曾經有過正反饋的物品集合,令N(v)爲用戶v曾經有過正反饋的物品集合。
  • Jaccard公式
    在這裏插入圖片描述
  • 餘弦相似度
    在這裏插入圖片描述
    計算餘弦相似度的方法(降低計算複雜度版):原有的餘弦相似度計算方法是直接兩兩進行計算,每次計算分子和分母。這樣計算和節約計算兩者都爲0的計算,以及分母的重複計算。
    在這裏插入圖片描述

計算結果和超參

  • 只有一個超參K,即爲每個用戶選取K個和他興趣最相似的用戶
  • 準確率和召回率:適合的K會影響到模型的精度,但是精度對K不是特別敏感
  • 流行度:K越大,推薦結果越熱門
  • 覆蓋率:K越大,推薦結果覆蓋率越低

用戶相似度計算的改進User-IIF

  • 主要思想:兩個用戶對冷門物品採取過同樣的行爲更能說明興趣的相似度
  • 所以將相似度計算改進爲如下,從而懲罰了共同的熱門物品的影響:
    在這裏插入圖片描述

4.2 基於物品的協同過濾算法

計算步驟

  • 計算物品之間的相似程度
  • 根據物品的相似度和用戶的歷史行爲給用戶生成推薦列表

相似度計算公式

  • 計算公式如下,分母表示喜歡物品i的用戶數,分子表示同時喜歡物品i和物品j的用戶
    在這裏插入圖片描述
  • 哈利波特問題:當j是很熱門的物品時,會導致Wij計算出來很大,也就是熱門物品和任何物品都會有很大的相似度,爲了防止這個問題對公式進行修正。
    在這裏插入圖片描述
  • 爲了解決哈利波特問題,進一步可以加大分母上對熱門物品的懲罰
    在這裏插入圖片描述

具體計算的方法

  • 建立用戶-物品倒排表
  • 對每個用戶建立一個包含他喜歡的物品的列表,將他物品列表中的物品構建單用戶的共現矩陣
  • 將這些矩陣相加可以得到C矩陣,將之歸一化可以得到餘弦相似度矩陣
    在這裏插入圖片描述
  • 得到物品相似度以後,用下面的公式計算用戶u對物品j的興趣:這裏N(u)是用戶喜歡的物品的集合,S(j,K)是和物品j最相似的K個物品的集合,wji是物品j和i的相似度,rui是用戶u對物品i的興趣。(對於隱反饋數據集,如果用戶u對物品i有過行爲,即可令 rui=1。)該公式的含義是,和用戶歷史上感興趣的物品越相似的物品,越有可能在用戶的推薦列表中獲得比較高的排名
    在這裏插入圖片描述

效果與超參

  • 精度:選擇合適的K對獲得最高精度是很重要的
  • 流行度:隨着K的增加流行度會提高,但是當增加到一定程度,流行度就不會有明顯的變化
  • 覆蓋率:K增加會降低系統的覆蓋率

用戶活躍度對物品相似度的影響-ItemCF-IUF

  • 活躍用戶對物品相似度的貢獻應該小於不活躍的用戶,應該增加IUF(inverse user frequence)參數來修正物品相似度的計算公式
    在這裏插入圖片描述
  • 可以提升覆蓋率,降低流行度

物品相似度的歸一化

  • 熱門的類其類內相似度一般比較大,如果不進行歸一化,就會推薦比較熱門的類裏面的物品,而這些物品是比較熱門的。從而,降低推薦的覆蓋率。
    在這裏插入圖片描述
  • 作用:增加推薦的準確度,提高推薦的覆蓋率和多樣性

4.3 UserCF和ItemCF的綜合比較

在這裏插入圖片描述

5 隱語義模型

5.1 基礎算法

  • 主要思想:對書和物品的興趣分類,對於某個用戶,首先得到他的興趣分類,然後從分類中挑選他可能喜歡的物品

  • LFM通過如下公式計算用戶u對物品i的興趣
    在這裏插入圖片描述
    這個公式中 ,pu,k和qi,k 是模型的參數,其中 ,pu,k度量了用戶u的興趣和第k個隱類的關係,而qi,k 度量了第k個隱類和物品i之間的關係

  • 在隱性反饋數據集上的第一個問題:如何給每個用戶生成負樣本

    • 每個用戶要保證正負樣本均衡
    • 負樣本採樣時,需要選取很熱門而用戶沒有行爲的物品
  • 利用隨機梯度下降法來迭代求得參數的值,損失函數如下:
    在這裏插入圖片描述

  • 超參

    • 隱特徵的個數F
    • 學習速率alpha
    • 正則化參數lambda
    • 負樣本/正樣本比例ratio:對性能影響最大
      在這裏插入圖片描述

5.2 基於LFM的實際系統的例子

  • 應用場景:雅虎首頁個性化設計方案,以CTR爲優化目標,利用LFM來預測用戶是否會單擊一個鏈接
  • 主要問題:對新聞而言,實時性很重要,LFM很難實現實時推薦,如何對新文章冷啓動是個問題
  • 解決方案:
    在這裏插入圖片描述

5.3 與基於鄰域的方法的比較

理論基礎:

基於鄰域的方法 LFM
理論基礎 基於統計,沒有學習過程 一種學習方法
離線計算的空間複雜度 用戶相關表,需要O(MM)的空間;物品相關表,需要O(NN)的空間 如果是F個隱類,那麼它需要的存儲空間是O(F*(M+N))
離線計算的時間複雜度 UserCF是O(N * (K/N)^2),而ItemCF是O(M*(K/M)^2) 如果用F個隱類,迭代S次,那麼它的計算複雜度 是O(K * F * S)
在線實時推薦 UserCF對新物品實時,ItemCF對新用戶實時 不能實時
推薦解釋 ItemCF可以 不能

6、基於圖的模型

6.1 用戶行爲數據的二分圖表示

在這裏插入圖片描述

6.2 基於圖的推薦算法

  • 度量用戶頂點 vu和與vu沒有邊直接相連的物品節點在圖上的相關性,相關性越高的物品在推薦列表中的權重就越高

  • 頂點的相關性的影響因素

    • 兩個頂點之間的路徑數
    • 兩個頂點之間路徑的長度
    • 兩個頂點之間的路徑經過的頂點
  • 相關性高的一對頂點一般具有如下特徵:

    • 兩個頂點之間有很多路徑相連;
    • 連接兩個頂點之間的路徑長度都比較短;
    • 連接兩個頂點之間的路徑不會經過出度比較大的頂點

PersonalRank算法

假設要給用戶u進行個性化推薦,可以從用戶u對應的節點vu開始在用戶物品二分圖上進行隨機遊走。遊走到任何一個節點時,首先按照概率 α 決定:

  • 停止這次遊走並從vu節點開始重新遊走。
  • 繼續遊走,那麼就從當前節點指向的節點中按照均勻分佈隨機選擇一 個節點作爲遊走下次經過的節點。

這樣,經過很多次隨機遊走後,每個物品節點被訪問到的概率 會收斂到一個數。最終的推薦列表中物品的權重就是物品節點的訪問概率。
公式如下:
在這裏插入圖片描述
算法的缺點,在時間複雜度上有明顯的缺點,無法生成實時推薦,而且計算一次推薦結果也很耗時。
改進方案:減少迭代次數;從矩陣論出發,重新設計算法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章