Coursea-吳恩達-machine learning學習筆記(十六)【week 9之Recommender Systems】

推薦系統
舉例(預測電影評分)
用戶使用05 星給電影打分,如下圖所示:
這裏寫圖片描述這裏寫圖片描述
一些定義如下:
nu :表示用戶數量;
nm :表示電影數量;
r(i,j) :如果用戶j 給電影i 打過分,則r(i,j)=1
y(i,j) :當用戶j 給電影i 打過分,即r(i,j)=1 時,用來表示用戶j 給電影i 的評分分值。

推薦系統問題就是給定r(i,j)y(i,j) ,關注所有沒有評分的地方並試圖預測;
推薦系統的主要工作是想出一種學習算法,能夠幫助我們自動填充缺失值,試圖預測用戶可能感興趣的電影,進行推薦。

第一種構建推薦系統的方法—-“基於內容的推薦”

假設每部電影有兩種特徵,用x1x2 表示,x1 表示這部電影屬於愛情電影的程度,x2 表示這部電影屬於動作電影的程度,如下圖所示:
這裏寫圖片描述
對於第一部電影來說,兩個特徵值分別是0.90 ,加上一個特徵變量x0=1 ,則x(1)=[10.90]n 表示特徵變量數(不包括x0 ),故n=2
我們可以把每個用戶的打分預測當成一個獨立的線性迴歸問題,對於每個用戶j ,學習參數θ(j)Rn+1 ,根據(θ(j))Tx(i) 來預測用戶j 對電影i 的打分。

更正式的表達:
r(i,j) :如果用戶j 給電影i 打過分,則爲1,否則爲0;
y(i,j) :當r(i,j)=1 時,表示用戶j 給電影i 的評分分值;

θ(j) :表示用戶j 的參數向量;
x(i) :表示電影i 的特徵向量。

對於用戶j 和電影i ,預測評分爲:(θ(j))Tx(i)
m(j) :表示用戶j 評分的電影數量;

爲了學習θ(j) ,則:

minθ(j)12m(j)i:r(i,j)=1((θ(j))Tx(i)y(i,j))2+λ2m(j)k=1n(θk(j))2

去掉1m(j) 不影響θ(j) 的最優化結果,所以,爲了學習θ(j) ,則:
J(θ(j))=minθ(j)12i:r(i,j)=1((θ(j))Tx(i)y(i,j))2+λ2k=1n(θk(j))2

爲了學習θ(1),θ(2),,θ(nu) ,則:
J(θ(1),,θ(nu))=minθ(1),,θ(nu)12j=1nui:r(i,j)=1((θ(j))Tx(i)y(i,j))2+λ2j=1nuk=1n(θk(j))2

梯度下降法:
θk(j):=θk(j)αi:r(i,j)=1((θ(j))Tx(i)y(i,j))xk(i)(for k=0)
θk(j):=θk(j)α(i:r(i,j)=1((θ(j))Tx(i)y(i,j))xk(i)+λθk(j))(for k0)

注:θk(j)J(θ(1),,θ(nu))=i:r(i,j)=1((θ(j))Tx(i)y(i,j))xk(i)+λθk(j)

第二種構建推薦系統的方法—-“協同過濾”

這種算法能自行學習所要使用的特徵。
假設我們並不知道每部電影的愛情成分和動作成分,如下圖:
這裏寫圖片描述
我們採訪每位用戶,得到每個用戶是否喜歡愛情電影和動作電影:
如:θ(1)=[050]θ(2)=[050]θ(3)=[005]θ(4)=[005]
θ(j) 可以明確告訴我們每個用戶對不同題材電影的喜歡程度。

通過θ(j)y(i,j) 可以推算出每部電影的特徵值。
將問題標準化:
已知θ(1),,θ(nu) ,學習x(i) ,使得

minx(i)12j:r(i,j)=1((θ(j))Tx(i)y(i,j))2+λ2k=1n(xk(i))2
已知θ(1),,θ(nu) ,學習x(1),,x(nm) ,使得
minx(1),,x(nm)12i=1nmj:r(i,j)=1((θ(j))Tx(i)y(i,j))2+λ2i=1nmk=1n(xk(i))2

結合前兩種方法,得到協同過濾算法的代價函數:

J(x(1),,x(nm),θ(1),,θ(nu))=12(i,j):r(i,j)=1((θ(j))Tx(i)y(i,j))2+λ2i=1nmk=1n(xk(i))2+λ2j=1nuk=1n(θk(j))2

算法目標爲:minx(1),,x(nm)θ(1),,θ(nu)J(x(1),,x(nm),θ(1),,θ(nu))
注:當用這種形式去學習特徵量時,應摒棄x0=1θ0xRnθRn

協同過濾算法步驟:

  1. 初始化x(1),,x(nm),θ(1),,θ(nu) 爲小的隨機值;
  2. 用梯度下降法或其他高級優化算法,最小化代價函數(for every j=1,,nu,i=1,,nm )
    xk(i):=xk(i)α(j:r(i,j)=1((θ(j))Tx(i)y(i,j))θk(j)+λxk(i))
    θk(j):=θk(j)α(i:r(i,j)=1((θ(j))Tx(i)y(i,j))xk(i)+λθk(j))
  3. 對一個用戶(參數θ )和一個電影(特徵值x ),預測評分θTx (即(θ(j))Tx(i) )

協同過濾算法的向量化方法:
有五部電影的數據集如下圖:
這裏寫圖片描述
將用戶評分存儲到矩陣中:
Y=[55005??0?40?0054005?]
預測評分矩陣爲:
[(θ(1))Tx(1)(θ(2))Tx(1)(θ(nu))Tx(1)(θ(1))Tx(2)(θ(2))Tx(2)(θ(nu))Tx(2)(θ(1))Tx(nm)(θ(2))Tx(nm)(θ(nu))Tx(nm)]
若電影特徵矩陣爲X=[(x(1))T(x(2))T(x(nm))T] 用戶參數矩陣爲Θ=[(θ(1))T(θ(2))T(θ(nu))T]
則預測評分矩陣爲XΘT ,這種方法叫作低秩矩陣分解。

尋找相關電影
對於每個電影i ,存在特徵向量x(i)Rn
尋找電影i 的關聯電影j
x(i)x(j) 很小 電影i 和電影j 相似。

協同過濾算法實現細節:均值歸一化
如下圖,有一個用戶沒有給任何電影評分
這裏寫圖片描述
在協同過濾算法中,目標爲:

minx(1),,x(nm)θ(1),,θ(nu)12(i,j):r(i,j)=1((θ(j))Tx(i)y(i,j))2+λ2i=1nmk=1n(xk(i))2+λ2j=1nuk=1n(θk(j))2

假設n=2θ(5)R2 ,由於用戶5 沒有對任何電影評分,所以影響θ(5) 的唯一項爲λ2k=1n(θk(5))2 ,爲了讓代價函數最小化,最終θ(5)=[00] ,所以預測用戶5對電影的評分時(θ(5))Tx(i)=0 ,其對所有電影的評分均爲0 ,無法推薦。

均值歸一化可以解決這一情況。
Y=[5500?5??0??40??0054?0050?] 計算每個電影評分均值μ=[2.52.522.251.25]
Y=Y.μ=[2.52.52.52.5?2.5??2.5??22??2.252.252.751.75?1.251.253.751.25?] 用該矩陣學習θ(j)x(i)
用戶j 對電影i 的評分預測爲:(θ(j))Tx(i)+μi
本例中,因爲θ(5)=[00] ,所以其對電影的評分爲μ=[2.52.522.251.25]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章