天天看點

一個例子解讀推薦系統思路的差別【基于人口統計、基于内容、基于項目和使用者的協同過濾推薦算法】

【如有錯誤,敬請指正】

一個例子解讀推薦系統思路的差別【基于人口統計、基于内容、基于項目和使用者的協同過濾推薦算法】
注:本文舉例中,實線表示看過且預設5星評價。橙色底色表示相似項目/使用者,藍色實線表示依據,紅色虛線表示推薦結果。

1. 非協同過濾

将使用者X作為目标使用者.

1.1 基于人口統計資訊的推薦

一個例子解讀推薦系統思路的差別【基于人口統計、基于内容、基于項目和使用者的協同過濾推薦算法】

∵ X ∼ Z \because \mathrm X \sim \mathrm Z ∵X∼Z (同為25歲女性)

∴ \therefore ∴ 給X推薦Z喜歡的電影A.

∵ Z → A \because \mathrm Z\rarr \mathrm A ∵Z→A

∴ X → A \therefore \mathrm X\rarr \mathrm A ∴X→A

1.2 基于物品内容的推薦

一個例子解讀推薦系統思路的差別【基于人口統計、基于内容、基于項目和使用者的協同過濾推薦算法】

∵ B ∼ C \because \mathrm B \sim \mathrm C ∵B∼C (同為韓寒導演的喜劇)

∴ \therefore ∴ 給喜歡C電影的使用者推薦B.

∵ X → C \because \mathrm X\rarr \mathrm C ∵X→C

∴ X → B \therefore \mathrm X\rarr \mathrm B ∴X→B

2. 協同過濾

2.1 基于使用者的協同過濾

一個例子解讀推薦系統思路的差別【基于人口統計、基于内容、基于項目和使用者的協同過濾推薦算法】

基于使用者的協同過濾核心是依靠使用者對項目的喜好程度來計算使用者間的相似性。

∵ Y → A , Y → B , Z → A \because \mathrm Y \rarr \mathrm A, \mathrm Y \rarr \mathrm B, \mathrm Z \rarr \mathrm A ∵Y→A,Y→B,Z→A

∴ Y ∼ Z \therefore \mathrm Y \sim \mathrm Z ∴Y∼Z 相似度最高,因為 X \mathrm X X隻喜歡 C \mathrm C C

∴ \therefore ∴ 給使用者 Z \mathrm Z Z推薦使用者 Y \mathrm Y Y喜歡的電影 { A , B } ∖ { A } = { B } \{\mathrm A, \mathrm B\}\setminus\{\mathrm A\}=\{\mathrm B\} {A,B}∖{A}={B}

∴ Z → B \therefore \mathrm Z \rarr \mathrm B ∴Z→B

2.2 基于物品的協同過濾

一個例子解讀推薦系統思路的差別【基于人口統計、基于内容、基于項目和使用者的協同過濾推薦算法】

為了更好說明物品的相似性,在這裡加上一個新使用者 W \mathrm W W.

∵ Y → A , W → A \because \mathrm Y \rarr \mathrm A, \mathrm W \rarr \mathrm A ∵Y→A,W→A

and Y → B , W → B \mathrm Y \rarr \mathrm B, \mathrm W \rarr \mathrm B Y→B,W→B

∴ A ∼ B \therefore \mathrm A\sim \mathrm B ∴A∼B (青色點橫線)A和B最可能是相似電影

∴ \therefore ∴ 給喜歡電影 A \mathrm A A的使用者 Z \mathrm Z Z推薦電影 B \mathrm B B

∴ Z → B \therefore \mathrm Z \rarr \mathrm B ∴Z→B

3. 一些比較

3.1 基于内容vs基于項目的協同過濾

先從1.2基于内容的推薦結果看,向使用者推薦了和電影飛馳人生相似的電影四海,因為基于内容的推薦僅利用電影本身的标簽資訊。比如本文的舉例中,除去電影名,描述一個電影用到了兩個屬性,分别是導演和類型。飛馳人生和四海兩個電影有相同的導演和類型,是以在基于内容的推薦算法中被判定為相似項目,那麼就将四海推薦給了看過飛馳人生的使用者小明。

但是這樣有一個弊端,就是雖然小明看過飛馳人生,但是可能小明并不喜歡四海,假如給飛馳人生的評價是1星,那麼小明很有可能也不喜歡四海,這次推薦就起不到很好的效果。

再看2.2基于物品的協同過濾推薦,協同過濾中,相似性的計算一般涉及到使用者對電影的評分,本文中無特殊說明預設都是五星,即每個電影可以用每個使用者給予的評分模組化,如電影A:[0, 5, 5, 5] B:[0, 5, 0, 5]. 可以用餘弦定理等方法計算相似度,得出A和B相似,因為有Y和W兩個使用者都打出了相同的評價,那麼推薦的依據就是A和B很可能相似。可以了解為:A和B同時被一個使用者喜歡的機率很大。

但是長津湖和飛馳人生其實内容毫不相關,所謂的“相似”不是指内容,而是不同使用者的喜好程度,這個思路認為你喜歡A或B就會喜歡另一個.

3.2 基于人口資訊vs基于使用者的協同過濾

在1.1基于人口資訊的推薦中,一個25歲的女性使用者Z看了長津湖,是以當另一個25歲女性X需要推薦時,就将Z的喜好推薦給了X,但是可以看到X的觀看記錄是四海,可能她喜歡的是喜劇片而不是長津湖,推薦的依據僅僅是和她相似的使用者喜歡看長津湖。這也是非協同過濾的弊端,沒考慮喜好程度。

在2.1基于使用者的協同過濾中,思路其實和基于物品的協同過濾很像,隻不過把物品收到的評價換成了使用者給出的評價,由此計算相似度。可以看到使用者Z和Y都給長津湖打了5分的評價,Z和Y的相似度高可以了解為他們的口味很像,越高的相似度說明對越多的電影有相同的評價,如果Y對飛馳人生打了很高的評分,那麼很可能Z也會很喜歡飛馳人生。

繼續閱讀