1. 程式人生 > >推薦系統演算法理論與實踐(1)

推薦系統演算法理論與實踐(1)

舉例:電影推薦系統

電影評分表
張三 李四 王五 小明
小時代 1 5 5
精武英雄 3 5 4
摔跤吧,爸爸 1 5 5
死侍 5 4

    表的第一行是使用者列表,表中的數字表示使用者對於電影評分,比如張三對於小時代的評分是1分,李四對於精武英雄的評分是3分,表中的問號表示使用者沒有對該電影評分,我們要做的就是預測使用者對於沒有評分的電影的評分會是多少分,對該使用者的所有電影按照評分從高到低的順序進行排列,最後將得分最高的那幾個電影推薦給使用者。下面就開始我們基於內容的推薦系統。

基於內容的推薦系統

讓我們直觀感受下基於內容的推薦系統的原理

電影評分表
張三 李四 王五 小明
小時代 1 5 5
精武英雄 3 5 4
摔跤吧,爸爸 1 5 5
死侍 5 4
電影內容矩陣X
愛情片 喜劇片 武俠片
0.9 0.1 0.0
0.2 0.1 1.0
0.1 0.5 0.1
0.3 0.9 0.1

還是之前的電影評分表,但這次還有一個關於電影內容矩陣X的表,這張表詮釋了對於每部電影所包含的內容成分不一樣的,現在我們要靠這兩張表來求出另外一個矩陣,這個矩陣叫做使用者喜好矩陣\Theta

,這個矩陣中包含的是每個使用者對於不同電影的喜好程度,最後我們根據使用者喜好程度矩陣\Theta乘以電影內容矩陣X,就會得到一個完整的電影評分表。這就是根據內容的電影評分表。

根據每部電影的內容以及使用者已經評分的電影來推斷每個使用者對每個電影的喜好程度,從而預測每個使用者對沒有的電影的評分。

通俗來講就是:根據電影的內容和使用者已經評分的電影來判斷沒有看過的電影的評分。

現在來看看關於使用者喜好矩陣的\Theta如何求解呢,下面是\Theta的代價函式

                                                       J(\Theta )=\frac{1}{2}\sum_{j=1}^{u}\sum_{i:r(i,j)=1}((\Theta ^{(j)})^{T}X^{i}-y^{(i,j)})^{2}+\frac{\Lambda }{2}\sum_{j=1}^{u}\sum_{k=1}^{n} ({\Theta _{k}}^{(j)})^{2}

\frac{1}{2}\sum_{j=1}^{u}u表示使用者數量  \sum_{i:r(i,j)=1}  r評分記錄表  ((\Theta ^{(j)})^{T}X^{i}-y^{(i,j)})^{2}   j指使用者的數量 i指電影的內容    (y^{(i,j)})

  i使用者對j電影的真實評分