讀書筆記:推薦系統實踐-第八章-評分預測問題

1、離線實驗方法

  • 測評目的:找到好的模型小化測試集的RMSE
    在這裏插入圖片描述
  • 劃分測試集與訓練集
    • 和時間無關的預測任務,可以以均勻分佈隨機劃分數據集
    • 和時 間相關的任務,那麼需要將用戶的舊行爲作爲訓練集,將用戶的新行爲作爲測試集

2、評分預測算法

2.1 平均值

  • 全局平均值
    在這裏插入圖片描述
  • 用戶評分平均值
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 物品評分平均值
    在這裏插入圖片描述
  • 用戶分類對物品分類的平均值,物品和用戶分類的依據:流行度和活躍度,平均分
    在這裏插入圖片描述

2.2 基於鄰域的方法

2.2.1 基於用戶的鄰域方法

在這裏插入圖片描述

2.2.2 基於物品的鄰域方法

在這裏插入圖片描述
這裏,S(i, K)是和i相似的物品集合,N(u)是用戶u評過分的物品集合, wij 是物品之間的相 似度, ri (上橫)是物品i的平均分。
計算相似度的方法:

  • 餘弦相似度
    在這裏插入圖片描述
  • 皮爾遜係數
    在這裏插入圖片描述
  • 修正的餘弦相似度
    在這裏插入圖片描述

2.3 隱語義模型與矩陣分解模型

主要的思想就是:通過降維的方法把評分矩陣補全。

2.3.1 傳統的SVD分解

評分矩陣R,維度m*n.
首先,對評分矩陣中的缺失值進行補全,比如用全局平均值,或者用戶/物品平均值補全,得到補全後的矩陣R’。
隨後,用SVD分解,得到, U 、V是兩個正交矩陣, S是對角陣,對角線上的每一個元素都是矩陣的奇異值。
在這裏插入圖片描述
爲了對R’進行降維,可以取大的f個奇異值組成對角矩陣Sf,並且找到這f個奇異值中每個值在U、V矩陣中對應的行和列,得到Uf、Vf,從而可以得到一個降維後的評分矩陣。
在這裏插入圖片描述
這個矩陣在u、i索引上的值,就是用戶u對物品i的預測值
SVD分解存在的問題:補全後的稀疏矩陣需要存儲非常大的空間;SVD分解方法的計算複雜度很高。

2.3.2 Simon Funk的SVD分解

第二章介紹過。這裏從矩陣分解的角度再分析一下。
這個方法實際上將矩陣分解,分解成爲了兩個低維矩陣相乘
在這裏插入圖片描述
P的維度是fm,Q的維度是fn,對於用戶u對物品i的評分的預測值可以通過下面的公式得到。
在這裏插入圖片描述
訓練的損失函數:
在這裏插入圖片描述
利用隨機梯度下降法可以求得P和Q矩陣的數據。另外,對P和Q初始化的時候最好隨機數和1/sqrt(F)成正比。

2.4.3 加入偏置項後的LFM (BiasSVD)

在這裏插入圖片描述
加入了三個項,分別是:

  • μ 訓練集中所有記錄的評分的全局平均數
  • bu 用戶偏置(user bias)項。這一項表示了用戶的評分習慣中和物品沒有關係的那種因素
  • bi 物品偏置(item bias)項。這一項表示了物品接受的評分中和用戶沒有什麼關係的 因素。

2.4.4 考慮鄰域影響的LFM SVD++

  • 將原本的基於鄰域的方法,該成一個可學習的模型,利用損失函數和梯度下降來優化參數:
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 考慮到w可能需要太多的存儲空間,可以嘗試降維成兩個矩陣,每個矩陣的維度爲n*F,一共2nF個參數。
    在這裏插入圖片描述
    引入偏置項:
    在這裏插入圖片描述
    進一步,降低維度,令x=q,得到最終的SVD++
    在這裏插入圖片描述

2.4 加入時間信息

2.4.1 基於鄰域的模型融合時間信息

在這裏插入圖片描述
其中
在這裏插入圖片描述

2.4.2 基於矩陣分解的模型融合時間信息

在這裏插入圖片描述
在這裏插入圖片描述

2.5 模型融合

2.5.1 模型級融合

在前一個預測器的基礎上設計下一個預測器來最小化損失函數,有點類似於Adaboost,生成新模型,按照一定的參數加到舊模型上面去,是的訓練集誤差最小化。不同的是,每次訓練都是使用所有的樣本,而不是錯誤樣本。

2.5.2 模型加權融合

最簡單的方法是線性融合,但是線性融合會有過擬合的問題,因此可以採用下面的方法:

  • 假設數據集已經被分爲了訓練集A和測試集B,那麼首先需要將訓練集A按照相同的分割方 法分爲A1和A2,其中A2的生成方法和B的生成方法一致,且大小相似。
  • 在A1上訓練K個不同的預測器,在A2上作出預測。因爲我們知道A2上的真實評分值,所 以可以在A2上利用小二乘法①計算出線性融合係數 αk 。
  • 在A上訓練K個不同的預測器,在B上作出預測,並且將這K個預測器在B上的預測結果按 照已經得到的線性融合係數加權融合,以得到終的預測結果。

後記:10條經驗和教訓

  • 確定你真的需要推薦系統。
  • 確定商業目標和用戶滿意度之間的關係。
  • 選擇合適的開發人員。
  • 忘記冷啓動的問題。不斷地創新,互聯網上有任何你想要的數據。只要用戶喜歡你的產 品,他們就會不斷貢獻新的數據。
  • 平衡數據和算法之間的關係。使用正確的用戶數據對推薦系統至關重要。對用戶行爲數據的深刻理解是設計好推薦系統的必要條件,因此分析數據是設計系統中最重要的部分。數據分析決定了如何設計模型,而算法只是決定了最終如何優化模型。
  • 找到相關的物品很容易,但是何時以何種方式將它們展現給用戶是很困難的
  • 不要浪費時間計算相似興趣的用戶,可以直接利用社會網絡數據
  • 需要不斷地提升算法的擴展性
  • 選擇合適的用戶反饋方式
  • 設計合理的評測系統,時刻關注推薦系統各方面的性能。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章