ng机器学习视频笔记(十四) ——推荐系统基础理论
ng機器學習視頻筆記(十三)
——推薦系統基礎理論
?
(轉載請附上本文鏈接——linhxx)
?
一、概述
???????? 推薦系統(recommender system),作為機器學習的應用之一,在各大app中都有應用。這里以用戶評價電影、電影推薦為例,講述推薦系統。
???????? 最簡單的理解方式,即假設有兩類電影,一類是愛情片,一類是動作片,愛情片3部,動作片2部,共有四個用戶參與打分,分值在0~5分。
???????? 但是用戶并沒有對所有的電影打分,如下圖所示,問號表示用戶未打分的電影。另外,為了方便講述,本文用nu代表用戶數量,nm代表電影數量,r(i,j)=1表示用戶j給電影i評價,y(i,j)表示用戶j給電影i的打分(當r(i,j)=1時這里的值才有效)。
????????
?
???????? 前三部是愛情片,用戶Alice給前兩部愛情片都5分,根據直接判斷,其打5分的概率很高。
???????? 下面首先就要解決用機器學習來預測打分的問題,進而討論電影的相關性問題。
?
二、基于內容的推薦系統
1、簡要描述
???????? 還是上面的幾個人和幾個電影,現假設已知每部電影的愛情屬性和動作屬性,分別用x1和x2表示每部電影的這兩個特征值,加上x0=1,則該場景變為線性回歸場景。即需要預測出用戶對每種類型電影的喜好程度矩陣θ,進而在已知某種用戶未打分的電影的特征x的情況下,用θTx預測用戶可能給該電影打分的分值。
???????? 下圖假設已求出用戶的θ=[0 5 0]T,第一個數0對應x0沒有實際意義,第二個數5表示用戶對愛情片的喜歡程度,第三個數0表示用戶對動作片的喜好程度。則可以預測出,該用戶對第三部電影的打分,可能4.95。如下圖所示:
?
?
2、計算單個用戶的θ
???????? 列出類型線性回歸的代價函數,但是在推薦系統中,有一些和線性回歸的代價函數不太一樣的地方:
???????? 1)求和的時候,只計算用戶已經打過分的電影,忽略未打分的電影。未打分的無法參與計算。
2)不需要除以用戶已打過分的電影的數目。這里是常量,忽略對結果影響不大。
?
?
3、計算所有用戶的θ
???????? 每個用戶去計算,要列很多公式,比較繁瑣,這里可以把公式合并,一次性求出所有的用戶對應的θ,即在代價函數的地方,累加上所有用戶,同時正則化項也需要累加。
?
?
???????? 接著,就用梯度下降算法,進行計算。
?
?
???????? 這部分內容和線性回歸完全一致,區別只有代價函數的列式不太一樣,梯度下降部分完全一致。
???????? 這里基于內容的推薦,可以認為給定樣本的特征x,求θ的過程。
?
三、基于用戶評論的預測
???????? 現在考慮到,由于現實中并不一定會給每個電影都有特征標簽,并且特征的數量可能非常多,但是考慮到已經有很多用戶已經打分,現在反求每個電影的特征。
???????? 這里可以理解為給定用戶對不同特征的喜好程度θ,求樣本的特征的過程。如下圖所示:
?
?
???????? 實際求解過程也很簡單,只要把x當作變量,θ當作已知值,反過來列代價函數,進而再用梯度下降求出x即可。
?
?
?
四、協同過濾算法
???????? 上面的兩個問題,有點像雞生蛋還是蛋生雞的問題,可以看出x和θ,只要知道一個內容,就可以求出另一個內容。進而,可以用求出的內容,反過來再優化原來的內容。相當于可以形成一個θ->x->θ->x……的鏈。
???????? 這里,首先由用戶對電影評分,因此可以認為多個用戶對電影的評分,致使計算出電影的特征,而特征又反過來進一步優化對用戶評分的預測。
???????? 對于公式上,考慮將兩個公式整合成一個,再分別對θ和x求偏導數,進行梯度下降,則可以得到θ和x。
???????? 這樣的計算方式,則成為協同過濾算法(collaborative filtering algorithm)。
???????? 公式如下:
?
?
五、向量化實現
???????? 現在回到一開始的問題,怎么判斷兩個電影是否類型相似,進而給用戶推薦相似類型的電影。
???????? 前提條件還是之前的,知道部分用戶對電影的打分,未知電影的類型,如下圖所示:
?
? ? ? ? ?此時,可以用到向量化實現技術(vectorization implementation),簡單來說,即用上面的協同過濾計算出x和θ后,將x和θ都表示成矩陣,并且用xθT得到預測矩陣,可以預測出每個用戶對每種電影的打分,以及預測出電影的特征,矩陣如下圖所示:
?
?
???????? 這個稱為低秩矩陣分解(low rank matrix factorization)。
???????? 此時,要判斷兩個電影是否相似,則很簡單,只要計算電影i和電影j對應的特征矩陣的距離||x(i)-x(j)||,當這個值越小,則表示這兩部電影越相似。
?
六、均值歸一化
1、現有問題
???????? 現考慮一個問題,當來了一個新用戶,他沒有對任何電影打分。此時如果用協同過濾算法,由于其沒有任何的打分,則代價函數中,會只剩下θ平方和正則化項,另外兩項都會為0。
???????? 因此,當需要對θ進行代價函數最小化求解,會得到θ=0時代價函數最小(顯然的事情),結果就是會預測出用戶對所有電影的評分都是0分。這個有違常理。
?
?
2、解決問題
???????? 為了解決問題,引入均值歸一化(mean normalization),步驟如下:
???????? 1)設矩陣Y表示所有用戶對所有電影的打分,為打分的電影用?表示。
???????? 2)在已打分的電影中,計算每個電影的分數均值。計算方式即打分的總數除以打分的總人數。設 這個矩陣為μ。
???????? 3)令Y=Y-μ,得到一個新的矩陣,其中?部分仍為?。
???????? 4)用這個新的Y去進行協同過濾算法,求出x和θ。
???????? 5)此時對于某個用戶,可以預測結果是(θ(j))Tx(i)+μ(i),要加上對應的μ,是因為一開始扣除了μ。
?
?
???????? 根據上述的計算,得出的新用戶的預測結果,會是均值。這個可以簡單的推出,因為結果是(θ(j))Tx(i)+μ(i),而顯然(θ(j))Tx(i)=0(因為這個用戶之前沒有任何預測,θ=0),故只會剩下μ值。
???????? 這樣,對于每一個新用戶,在還沒進行評價之前,會預測其對每個電影的評價是均值,這也就表示給新用戶推薦電影時,會按均值,把均值較高的電影推薦給用戶,這個比較符合常理。
?
七、總結
???????? 這里的推薦系統,可以算是一個引子,只介紹了推薦系統的一些基礎思想,對于真正完整的推薦系統,還有需要內容等待探索。后續我也會繼續這方面的學習。
?
——written by linhxx
?
更多最新文章,歡迎關注微信公眾號“決勝機器學習”,或掃描右邊二維碼。
轉載于:https://www.cnblogs.com/linhxx/p/8412836.html
總結
以上是生活随笔為你收集整理的ng机器学习视频笔记(十四) ——推荐系统基础理论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Codeforces 558E A Si
- 下一篇: java信息管理系统总结_java实现科