使用場景
消費者C={user1,user2,user3,…,usernu},一共有nu個樣本
商品G={prod1,prod2,…,prodnp},一共有np個樣本
消費者對商品的評分如下表:
|
user1 |
user2 |
user3 |
… |
usernu |
prod1 |
r1,1 |
r1,2 |
r1,3 |
… |
r1,nu |
prod2 |
r2,1 |
r2,2 |
r2,3 |
… |
r2,nu |
… |
|
|
|
|
|
prodnp |
rnp,1 |
rnp,2 |
rnp,3 |
… |
rnp,nu |
描述商品i在某特徵的符合程度xi=[f1,f2,…,fm]T(m×1)
消費者j對某個特徵的喜好程度θj=[θ1,θ2,…,θm]T(m×1)
特徵的維數m將會在後面說到。
對於某個商品i,消費者j對其評分ri,j由xi,θj來決定,即
ri,j=θjTxi
協同過濾算法
協同過濾算法的思想是對某種特徵的喜好相同(比如都喜歡動作電影)的消費者,對在某種特徵上比較契合的商品上評價也應趨於一致(對於新出的動作電影評分都可能較高)
-
設置m個特徵,f1,f2,…,fm,比如電影的浪漫程度,暴力程度,喜劇程度等等,這些特徵不用手工提取,只需要確定m的大小,特徵的具體值將會由算法學習得出。
-
對於nu個消費者,np個商品,我們先初始化兩個數據集:
X={x1,x2,…,xnp}
Θ={θ1,θ2,…,θnu}
隨機賦一些較小的值。
協同過濾算法的基本思路是:同時優化X,Θ,優化目標如下:
J(x1,…,xnp,θ1,…,θnu)=21(i,j):r(i,j)=1∑(θjTxi−yi,j)2+2λi=1∑npk=1∑m(xik)2+j=1∑nuk=1∑m(θjk)2
注意,這時候就不需要加上恆爲1的偏差(如之前的x0=1,θ0=1),這時x∈Rm,θ∈Rm
- 使用梯度下降等方法進行優化,對i=1,2,…,np;j=1,2,…,nu;k=1,2,…,m:
xik=xik−α(j:r(i,j)=1∑(θjTxi−yi,j)2+λik)θjk=θjk−α(i:r(i,j)=1∑(θjTxi−yi,j)2+λik)