1. 程式人生 > 實用技巧 >ml-9-2-推薦系統( ( Recommender Systems) )

ml-9-2-推薦系統( ( Recommender Systems) )

推薦系統( ( Recommender Systems) )

問題形式化Problem Formulation

從一個例子開始定義推薦系統的問題。假使我們是一個電影供應商,我們有 5 部電影和 4 個使用者,我們要求使用者為電影打分。

img

前三部電影是愛情片,後兩部則是動作片,我們可以看出 Alice 和 Bob 似乎更傾向與愛
情片, 而 Carol 和 Dave 似乎更傾向與動作片。並且沒有一個使用者給所有的電影都打過分。
我們希望構建一個演算法來預測他們每個人可能會給他們沒看過的電影打多少分,並以此作為
推薦的依據。

下面引入一些標記:

  • n u 代表使用者的數量
  • n m 代表電影的數量
  • r(i,j)如果使用者 j 給電影 i 評過分則 r(i,j)=1
  • y (i,j) 代表使用者 j 給電影 i 的評分
  • m j 代表使用者 j 評過分的電影的總數

基於內容的推薦系統Content Based Recommendations

在一個基於內容的推薦系統演算法中,我們假設對於我們希望推薦的東西有一些資料,這
些資料是有關這些東西的特徵。

在我們的例子中,我們可以假設每部電影都有兩個特徵,如 x 1 代表電影的浪漫程度,x 2
代表電影的動作程度。

img

則每部電影都有一個特徵向量,如 x (1) 是第一部電影的特徵向量為[0.9 0]。

下面我們要基於這些特徵來構建一個推薦系統演算法。 假設我們採用線性迴歸模型,我
們可以針對每一個使用者都訓練一個線性迴歸模型,如 θ (1) 是第一個使用者的模型的引數。 於

是,我們有:

  • θ (j) 使用者 j 的引數向量
  • x (i) 電影 i 的特徵向量
  • 對於使用者 j 和電影 i,我們預測評分為:(θ (j) ) T x (i)
  • 代價函式
  • 針對使用者 j,該線性迴歸模型的代價為預測誤差的平方和,加上正則化項:

img

其中 i:r(i,j)表示我們只計算那些使用者 j 評過分的電影。在一般的線性迴歸模型中,誤差
項和正則項應該都是乘以 1/2m,在這裡我們將 m 去掉。並且我們不對方差項 θ 0 進行正則
化處理。

上面的代價函式只是針對一個使用者的,為了學習所有使用者,我們將所有使用者的代價函式
求和:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-dsR6Ff2q-1602638639830)(img-blog.szm2019.cn/github/blog/ml/ml-9-2-04.png)]

如果我們要用梯度下降法來求解最優解,我們計算代價函式的偏導數後得到梯度下降的
更新公式為:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-IWYBbSVK-1602638639841)(img-blog.szm2019.cn/github/blog/ml/ml-9-2-05.png)]

協同過濾Collaborative Filtering

在之前的基於內容的推薦系統中,對於每一部電影,我們都掌握了可用的特徵,使用這
些特徵訓練出了每一個使用者的引數。相反地,如果我們擁有使用者的引數,我們可以學習得出
電影的特徵。

img

但是如果我們既沒有使用者的引數,也沒有電影的特徵,這兩種方法都不可行了。協同過
濾演算法可以同時學習這兩者。

我們的優化目標便改為同時針對 x 和 θ 進行。

img

對代價函式求偏導數的結果如下:

img

注:在協同過濾從演算法中,我們通常不使用方差項,如果需要的話,演算法會自動學得。
協同過濾演算法使用步驟如下:

  1. 初始 x (1) ,x (2) ,…,x (nm) ,θ (1) ,θ (2) ,…,θ (nu) 為一些隨機小值
  2. 使用梯度下降演算法最小化代價函式
  3. 在訓練完演算法後,我們預測(θ (j) ) T x (i) 為使用者 j 給電影 i 的評分

通過這個學習過程獲得的特徵矩陣包含了有關電影的重要資料,這些資料不總是人能讀
懂的,但是我們可以用這些資料作為給使用者推薦電影的依據。

例如,如果一位使用者正在觀看電影 x (i) ,我們可以尋找另一部電影 x (j) ,依據兩部電影的
特徵向量之間的距離||x (i) -x (j) ||的大小。

協同過濾演算法Collaborative Filtering Algorithm

協同過濾優化目標:

img

向 量化:低秩矩陣分解Vectorization_ Low Rank Matrix Factorization

講到有關該演算法的向量
化實現,以及說說有關該演算法你可以做的其他事情。
舉例子:

  1. 當給出一件產品時,你能否找到與之相關的其它產品。
  2. 一位使用者最近看上一件產品,有沒有其它相關的產品,你可以推薦給他。

我將要做的是:實現一種選擇的方法,寫出協同過濾演算法的預測情況。

我們有關於五部電影的資料集,我將要做的是,將這些使用者的電影評分,進行分組並存
到一個矩陣中。

我們有五部電影,以及四位使用者,那麼 這個矩陣 Y 就是一個 5 行 4 列的矩陣,它將這
些電影的使用者評分資料都存在矩陣裡:

img

推出評分:

img

找到相關影片:

img

現在既然你已經對特徵引數向量進行了學習,那麼我們就會有一個很方便的方法來度量
兩部電影之間的相似性。例如說:電影 i 有一個特徵向量 x (i) ,你是否能找到一部不同的電影
j,保證兩部電影的特徵向量之間的距離 x (i) 和 x (j) 很小,那就能很有力地表明電影 i 和電影 j
在某種程度上有相似,至少在某種意義上,某些人喜歡電影 i,或許更有可能也對電影 j 感
興趣。總結一下,當用戶在看某部電影 i 的時候,如果你想找 5 部與電影非常相似的電影,
為了能給使用者推薦 5 部新電影,你需要做的是找出電影 j,在這些不同的電影中與我們要找
的電影 i 的距離最小,這樣你就能給你的使用者推薦幾部不同的電影了。

通過這個方法,希望你能知道,如何進行一個向量化的計算來對所有的使用者和所有的電
影進行評分計算。同時希望你也能掌握,通過學習特徵引數,來找到相關電影和產品的方法。

推行工作上的細節:均值歸一化 Implementational Detail_ Mean Normalization

讓我們來看下面的使用者評分資料:

img

如果我們新增一個使用者 Eve,並且 Eve 沒有為任何電影評分,那麼我們以什麼為依據
為 Eve 推薦電影呢?

我們首先需要對結果 Y 矩陣進行均值歸一化處理,將每一個使用者對某一部電影的評分
減去所有 使用者對該電影評分的平均值:

img

然後我們利用這個新的 Y 矩陣來訓練演算法。 如果我們要用新訓練出的演算法來預測評分,
則需要將平均值重新加回去,預測(θ (j) ) T (x (i) )+μ i 對於 Eve,我們的新模型會認為她給每部電影
的評分都是該電影的平均分。
s

不洗澡的鯨魚   
 
 </div> 

             
          <div class=


相關推薦

ml-9-2-推薦系統( ( Recommender Systems) )

推薦系統( ( Recommender Systems) ) 問題形式化Problem Formulation 從一個例子開始定義推薦系統的問題。假使我們是一個電影供應商,我們有 5 部電影和 4 個使用者,我們要求使用者為電影打分。

基礎知識2-推薦系統

目錄1,推薦系統的原理和發展2推薦系統的樹模型3,推薦系統的特徵工程4,推薦系統中深度學習模型

推薦系統一——深入理解推薦系統召回演算法(2

緊接上文: 推薦系統一——深入理解推薦系統召回演算法(1) 四、基於FM模型召回

推薦系統入門筆記2--資訊檢索 Lucene

1、概述: 是一款高效能的、可擴充套件的資訊檢索IR工具庫,資訊檢索是文件搜尋、文件資訊搜尋或者文件相關的元資料搜尋等操作。

特斯拉馬斯克:新發布的自動輔助駕駛 FSD Beta 9.2 系統更新不夠好,正儘快改進

北京時間 8 月 24 日訊息,特斯拉公司 CEO 埃隆・馬斯克 (Elon Musk) 週一表示,公司正“儘快”改進期待已久的自動輔助駕駛系統更新,他認為最新發布的版本不夠好。

華為 nova 9 系列入網資訊曝光:全系 4G + 鴻蒙 HarmonyOS 2.1 系統

8 月 25 日訊息據知名數碼博主@數碼閒聊站 今日最新爆料,華為 nova 9 系列新機入網資訊流出,該手機全系支援 4G網路,並搭載鴻蒙 HarmonyOS 2.1 系統

訊息稱魅族新機將搭載 Flyme 9.2 系統

9 月 19 日訊息 魅族將於 9 月 22 日舉行魅族有點東西秋季新品釋出會,屆時將推出魅族 18s、18s Pro、18X 三款新機和 Lipro、PANDAER 等30 餘款新品。數碼博主 @數碼閒聊站 今日透露,魅族 22 號的新機預裝最新的 F

魅族 Flyme 9.2 釋出:全新系統字型、記憶體拓展、小窗模式 3.5

9 月 22 日訊息 今天下午魅族舉行了魅族有點東西秋季新品釋出會,除了魅族 18s、18s Pro、18X 三款旗艦之外,會上還正式釋出了 Flyme 9.2 系統,新機將首發搭載。外觀升級方面,魅族 Flyme 9.2 採用了全新的系統字型

魅族 17 系列獲推 Flyme 9.2 穩定版系統更新:全新外觀、小窗模式 3.5、長輩親情設計、Flyme 妙連,政策看齊業界

IT 之家 10 月 27 日訊息,感謝 IT 之家網友熱心線索投遞,魅族 17 系列現已收到最新的 Flyme9.2 版本更新,並且很貼心地提示提示自 9.2 版本開始保持與行業一致的運營政策,包括但不限於預裝、推送、廣告等服務。IT

Flyme 9.2 系統再次更新:適配魅族 17/18/18s 系列,今日內完成全量推送

IT 之家 4 月 28 日訊息,魅族 Flyme 宣佈,Flyme 9.2 再次更新,適配魅族 17 系列、魅族 18 及 18s 系列,今日內完成全量推送。官方介紹,新增應用相簿圖示,應用照片輕鬆分類;重構相簿上滑聯想,支援資訊展示、壓

使用Flask快速搭建一個Steam遊戲推薦系統

有人沉迷於刷抖音,有人沉迷於刷知乎,推薦系統如今已經影響甚至控制著人們的生活。本文將從最簡單的演演算法和流程入手,使用Flask和gorse快速搭建一個Steam遊戲推薦系統

安裝hadoop2.9.2 jdk1.8 centos7

安裝JDK1.8 檢視JDK1.8的安裝 https://www.cnblogs.com/TJ21/p/13208514.html 安裝hadoop 上傳hadoop

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.2的最佳處理方法,親測可用

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.2的最佳處理方法,親測可用

做了一個比較完善的課程管理與推薦系統

Web 端:https://github.com/jacob-lcs/awesome-curriculum-web Android 端:https://github.com/jacob-lcs/awesome-curriculum-android

簡單的Tomcat實現--1.2日誌系統

模擬實現Tomcat的日誌系統 Log4j模擬Tomcat日誌 Tomcat中日誌系統會放在logs/的目錄下,日誌檔案預設是catalina,然後隨著日期進行滾動,接下來通過Log4j來模擬實現這種做法。

極簡 Node.js 入門 - 1.2 模組系統

極簡 Node.js 入門系列教程:https://www.yuque.com/sunluyong/node 本文更佳閱讀體驗:https://www.yuque.com/sunluyong/node/module

spring boot-2.1.16整合swagger-2.9.2 含yml配置檔案的程式碼詳解

java程式碼 package com.oauth.util; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;

(資料遷移老問題)django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.2

I、將你的Django降低到2.14以下即可:這個不用想,就要用最新的 II、升級的mysql客戶端版本至更高:電腦同時執行的還有php等其他語言,懶得折騰

推薦系統中的評價指標

按照推薦任務的不同,最常用的推薦質量度量方法可以劃分為三類: (1)對預測的評分進行評估,適用於評分預測任務。

推薦系統論文歸類總結》

推薦系統論文歸類總結 本文主要記錄較新的推薦系統論文,並對類似的論文進行總結和整合。