1. 程式人生 > >推薦系統(recommender systems):預測電影評分--構造推薦系統的一種方法:協同過濾(collaborative filtering )

推薦系統(recommender systems):預測電影評分--構造推薦系統的一種方法:協同過濾(collaborative filtering )

ring 愛情 span sys 結合 sub .cn style 分享

協同過濾(collaborative filtering )能自行學習所要使用的特征

技術分享

如我們有某一個數據集,我們並不知道特征的值是多少,我們有一些用戶對電影的評分,但是我們並不知道每部電影的特征(即每部電影到底有多少浪漫成份,有多少動作成份)

假設我們通過采訪用戶得到每個用戶的喜好,如上圖中的Alice喜歡愛情電影,不喜歡動作電影,則我們將θ(1)設為[0,5,0],如此設置θ(2),θ(3),θ(4)的值,這樣我們有了每個用戶的θ的值以及他們對電影的打分,就可以推斷出每部電影的x(特征)的值。

如對於上圖中的第一部電影,Alice的打分是5,Bob的打分是5,Carol的打分是0,Dave的打分也是0,我們有每個用戶的θ值,這樣根據這些值來評估第一部電影的x1與x2的值,根據什麽來評估呢,這是使θ(1)

與x(1)的內積約等於5,使θ(2)與x(1)的內積約等於5,使θ(3)與x(1)的內積約等於0,使θ(4)與x(1)的內積約等於0,這樣估算出x(1)的值。據此依次算出x(2)等的值。

技術分享

我們有nu個用戶,知道這些用戶的喜好,即知道用戶的θ值,根據這些用戶的值去估計第i部電影的特征值。

下面是對所有的電影的特征值的估計,有nm部電影。

協同過濾算法

技術分享

我們將上面的兩個算法結合起來,我們可以由知道x的值( 即每部電影的特征值)和每個用戶對電影的打分,來推斷出每個用戶的喜好值(及θ的值)

也可以知道每個用戶的喜好值(及θ的值)和每個用戶對電影的打分來推薦出電影的特征值(即x的值)。

先有雞還是先有蛋問題:

根據θ的值可以估計x的值,根據x的值可以用來估計θ的值.

這樣我們先猜測一個θ的值,然後根據這個θ的值估計出x的值,再根據x的值估計出θ的值,這樣一直叠代下去,直至收斂。

這樣我們就可以根據用戶對電影的打分,反復進行上面的過程,來估計出θ與x的值。

總結

協同過濾算法:通過一大堆用戶得到的數據,這些用戶實際上在高效地進行協同合作,來得到每個人對電影的評分。只要用戶對某幾部電影進行了評分,每個用戶就又都在幫助算法更好地學習出特征,這些特征可以被系統運用來為其它人做出更準確的電影預測。

協同是說每位用戶都在為了大家的利益,學習出更好的特征

推薦系統(recommender systems):預測電影評分--構造推薦系統的一種方法:協同過濾(collaborative filtering )