16 推薦系統(tǒng)
內(nèi)容:
16.1 基于內(nèi)容的推薦系統(tǒng)
16.2 協(xié)同過濾
16.3 低秩矩陣分解
16.4 均值歸一化
16.1 基于內(nèi)容的推薦系統(tǒng)
-
引入(例子)
以不同用戶對電影的評分為例
對于不同的電影,用戶會有不同的喜好。希望構(gòu)建一個算法來預(yù)測他們每個人可能會給他們沒看過的電影打多少分。
下面引入一些標(biāo)記
在我們的例子中,我們可以假設(shè)每部電影都有兩個特征,如??1代表電影的浪漫程度,??2 代表電影的動作程度。
則每部電影都有一個特征向量,如??(1)是第一部電影的特征向量為[0.9 0]。
下面我們要基于這些特征來構(gòu)建一個推薦系統(tǒng)算法。 假設(shè)我們采用線性回歸模型,我們可以針對每一個用戶都訓(xùn)練一個線性回歸模型,如??(1)是第一個用戶的模型的參數(shù)。 于是: -
模型
對一個用戶來說,代價函數(shù):
針對用戶 ??,該線性回歸模型的代價為預(yù)測誤差的平方和,加上正則化項。
其中 ??:??(??,??)表示我們只計算那些用戶 ?? 評過分的電影。在一般的線性回歸模型中,誤差項和正則項應(yīng)該都是乘以1/2??,在這里我們將??去掉。并且我們不對方差項??0進(jìn)行正則化處理。
對所有用戶來說,代價函數(shù):
梯度下降法更新公式:
注意要根據(jù) k 值使用公式
16.2 協(xié)同過濾
- 回顧
在之前的基于內(nèi)容的推薦系統(tǒng)中,對于每一部電影,我們都掌握了可用的特征,使用這些特征訓(xùn)練出了每一個用戶的參數(shù)。相反地,如果我們擁有用戶的參數(shù),我們可以學(xué)習(xí)得出電影的特征。 但是如果我們既沒有用戶的參數(shù),也沒有電影的特征,這兩種方法都不可行了。協(xié)同過濾算法可以同時學(xué)習(xí)這兩者。 - 協(xié)同過濾算法
優(yōu)化目標(biāo):
同時對??和??進(jìn)行優(yōu)化
對代價函數(shù)求偏導(dǎo)數(shù)的結(jié)果:
注:在協(xié)同過濾從算法中,我們通常不使用方差項,如果需要的話,算法會自動學(xué)得。
協(xié)同過濾算法使用步驟如下:
1.初始 ??(1),??(1),...??(????), ??(1),??(2),...,??(????)為一些隨機(jī)小值
2.使用梯度下降算法最小化代價函數(shù)
3.在訓(xùn)練完算法后,我們預(yù)測(??(??))????(??)為用戶 ?? 給電影 ?? 的評分
16.3 向量化:低秩矩陣分解
- 低秩矩陣分解的作用
(1)當(dāng)給出一件產(chǎn)品時,你能否找到與之相關(guān)的其它產(chǎn)品。
(2)一位用戶最近看上一件產(chǎn)品,有沒有其它相關(guān)的產(chǎn)品,你可以推薦給他。 - 如何衡量相似性
以電影為例
電影 ?? 有一個特征向量??(??),你是否能找到一部不同的電
影 ??,保證兩部電影的特征向量之間的距離??(??)和??(??)很小,那就能很有力地表明電影??和電影 ?? 在某種程度上有相似,至少在某種意義上,某些人喜歡電影 ??,或許更有可能也對電影 ?? 感興趣 -
原理
我們有五部電影,以及四位用戶,那么 這個矩陣 ?? 就是一個 5 行 4 列的矩陣,它將這些電影的用戶評分?jǐn)?shù)據(jù)都存在矩陣?yán)铮?
推出評分:
找到相關(guān)影片:
16.4 均值歸一化
- 要解決的問題
如果一個用戶從來沒有給電影打過分,如何推薦?
如果使用原來的算法的話計算出的所有的y都是0,怎么辦?
直觀思路就是計算這個電影的平均分,分高的就推薦。下面給出專業(yè)方法 -
原理
我們首先需要對結(jié)果 ??矩陣進(jìn)行均值歸一化處理,將每一個用戶對某一部電影的評分減去所有用戶對該電影評分的平均值
然后我們利用這個新的 ?? 矩陣來訓(xùn)練算法。 如果我們要用新訓(xùn)練出的算法來預(yù)測評分,則需要將平均值重新加回去,預(yù)測(??(??))????(??) + ????,對于 Eve,我們的新模型會認(rèn)為她給每部電影的評分都是該電影的平均分。












