一、基于內(nèi)容的推薦系統(tǒng)
推薦系統(tǒng)時(shí)當(dāng)下非常流行的機(jī)器學(xué)習(xí)應(yīng)用。
下面,講解「基于內(nèi)容的推薦系統(tǒng)」。
1.1 基于內(nèi)容的推薦算法思想
根據(jù)用戶(hù)過(guò)去喜歡的物品,為用戶(hù)推薦和他過(guò)去喜歡的物品相似的物品,而關(guān)鍵就在于這里的物品相似性的度量,這才是算法運(yùn)用過(guò)程中的核心。
舉個(gè)例子,在京東上購(gòu)物的小伙伴們應(yīng)該都知道,每當(dāng)你進(jìn)入任何一個(gè)物品頁(yè)面的時(shí)候都會(huì)有一個(gè)“猜你喜歡”的欄目,這時(shí)候他就會(huì)根據(jù)你經(jīng)常購(gòu)買(mǎi)的物品給你推薦相似的物品。
基于內(nèi)容的推薦算法一般包括以下三步:
-
物品表示:提取物品的特征
來(lái)表示物品;
-
特征學(xué)習(xí):利用一個(gè)用戶(hù)過(guò)去喜歡或者不喜歡的物品的特征數(shù)據(jù),來(lái)訓(xùn)練學(xué)習(xí)算法得到用戶(hù)的偏好特征
;
- 生成推薦列表:通過(guò)比較上一步得到的用戶(hù)偏好與候選物品的特征,為此用戶(hù)推薦一組相關(guān)性最大的物品。
1.2 電影推薦系統(tǒng)的實(shí)現(xiàn)
首先定義一些表達(dá)式:
1.2.1 給定電影特征和評(píng)分,學(xué)習(xí)用戶(hù)偏好

其中,上表中 ? 代表用戶(hù)對(duì)該電影沒(méi)有評(píng)分。表的左半邊是用戶(hù)對(duì)電影的評(píng)分,最右邊的兩列是電影的特征。
物品表示:假設(shè)從電影提取兩個(gè)特征 分別表示電影的愛(ài)情指數(shù)(即電影中愛(ài)情元素的占比)與動(dòng)作指數(shù)(即電影中動(dòng)作元素的占比),取值范圍均為 0 到 1 ,且
。
特征學(xué)習(xí):知道這些電影特征值 以及知道用戶(hù)對(duì)這些電影的評(píng)分后,可以選用學(xué)習(xí)算法對(duì)每個(gè)用戶(hù)建模來(lái)學(xué)習(xí)用戶(hù)偏好
。即假設(shè)我們選用線(xiàn)性回歸模型,最終,對(duì)于每個(gè)用戶(hù)
,通過(guò)訓(xùn)練學(xué)習(xí)一個(gè)參數(shù)(這里我們可以稱(chēng)為用戶(hù)偏好)
,這樣就可以用
來(lái)預(yù)測(cè)用戶(hù)
對(duì)電影
的評(píng)分。


其中,在構(gòu)建推薦系統(tǒng)時(shí),我們也不想只對(duì)某一個(gè)用戶(hù)學(xué)習(xí)出參數(shù)向量 ,我們想對(duì)所有的用戶(hù)都學(xué)習(xí)出
。因?yàn)槲矣?
個(gè)用戶(hù),所以我希望學(xué)習(xí)出所有的參數(shù)。那么我要做的是將這個(gè)最優(yōu)化目標(biāo)另外再加上一個(gè)求和。所以與之前所學(xué)的線(xiàn)性回歸模型唯一不同的是現(xiàn)在不是只對(duì)一個(gè)
,現(xiàn)在我要對(duì)所有的用戶(hù)求這個(gè)目標(biāo)函數(shù)的和,然后對(duì)整個(gè)優(yōu)化目標(biāo)求最小值,最小化整個(gè)這個(gè)代價(jià)函數(shù)
。
是一個(gè)用戶(hù)對(duì)所有已評(píng)分電影;
是遍歷所有用戶(hù)
生成推薦列表:得到了用戶(hù)偏好 ,代入待選電影的特征值
,進(jìn)行預(yù)測(cè)并根據(jù)預(yù)測(cè)結(jié)果排序,將排名靠前的電影推薦給用戶(hù)。
這看上去就跟之前所學(xué)線(xiàn)性回歸模型在優(yōu)化目標(biāo)上有點(diǎn)區(qū)別之外,其余沒(méi)有特別大的區(qū)別。
1.2.2 給定用戶(hù)偏好和評(píng)分,學(xué)習(xí)電影的特征
假設(shè)已知條件調(diào)換,我們有某一個(gè)數(shù)據(jù)集,我們并不知道特征的值是多少。所以比如我們得到一些關(guān)于電影的數(shù)據(jù):不同用戶(hù)對(duì)電影的評(píng)分,但我們并不知道每部電影到底有多少浪漫的成分,也不知道到底有多少浪漫的成分,于是我把所有的問(wèn)題都打上問(wèn)號(hào),只知道用戶(hù)對(duì)這幾部電影的評(píng)分。沒(méi)有了電影的特征值是沒(méi)法進(jìn)行學(xué)習(xí)算法就沒(méi)法推薦。那么 「如何得到電影的特征值并構(gòu)建推薦系統(tǒng)」

假設(shè)我們對(duì)每一位用戶(hù)進(jìn)行問(wèn)卷調(diào)查,而且每一位用戶(hù)都告訴我們,他們是否喜歡愛(ài)情電影以及他們是否喜歡動(dòng)作電影(比如現(xiàn)在很多網(wǎng)站都會(huì)讓用戶(hù)選擇喜愛(ài)偏好)。假如用戶(hù) 1 告訴我們她十分喜歡愛(ài)情電影,于是用戶(hù)1的偏好 對(duì)應(yīng)的值就是滿(mǎn)分即 5 分,而她非常不喜歡動(dòng)作電影,于是
就是0。通過(guò)這種方式能得到所有用戶(hù)的偏好
:

然后通過(guò)四個(gè)用戶(hù)喜愛(ài)偏好和對(duì)第1部電影的評(píng)分,可以大概推斷出第 1 部電影的愛(ài)情元素占比較高,動(dòng)作元素占比很小,從而初始化電影 1 的特征值,以此類(lèi)推可對(duì)所有電影特征進(jìn)行初始化。

初始化完成后,通過(guò)梯度下降算法最小化代價(jià)函數(shù),預(yù)測(cè)電影本身指數(shù),整個(gè)過(guò)程如下:

跟給定電影的特征,預(yù)測(cè)用戶(hù)對(duì)電影評(píng)分的公式幾乎一樣,就是兩者的變量發(fā)生了對(duì)調(diào)而已。

二、協(xié)同過(guò)濾(Collaborative Filtering)
假設(shè)只知道用戶(hù)對(duì)電影的評(píng)分的情況下,如何得到電影的合理特征值 以及用戶(hù)對(duì)電影類(lèi)型的偏好
?
一種構(gòu)建推薦系統(tǒng)的方法叫做協(xié)同過(guò)濾。
2.1 協(xié)同過(guò)濾算法思路
在知道用戶(hù)對(duì)電影的評(píng)分的情況下,如何得到電影的合理特征值 以及用戶(hù)對(duì)電影類(lèi)型的偏好
。
基本的協(xié)同過(guò)濾算法:隨機(jī)初始化
的值,基于你一開(kāi)始隨機(jī)猜測(cè)出的
的值,運(yùn)用 1.2.2 方法,可以學(xué)習(xí)到不同電影的特征
,然后用學(xué)習(xí)到的電影的特征
和 1.2.1 方法,可以得到對(duì)參數(shù)
的更好估計(jì),又用這個(gè)更好的
與 1.2.2 方法,得到更好的電影的特征
。然后我們可以繼續(xù)迭代,不停重復(fù)優(yōu)化
。如果你這樣做的話(huà),你的算法將會(huì)收斂到一組合理的電影的特征
以及一組不同用戶(hù)合理偏好參數(shù)
的估計(jì)。
2.2 協(xié)同過(guò)濾算法實(shí)現(xiàn)
上面講解了算法的思路就是不停地重復(fù)這些計(jì)算,先隨機(jī)地初始化這些參數(shù) ,然后運(yùn)用
初始化
;然后優(yōu)化
,優(yōu)化
,優(yōu)化
,優(yōu)化
...
但實(shí)際上呢,存在一個(gè)更有效率的算法讓我們不再需要再這樣不停地依次計(jì)算 ,而是能夠?qū)?
同時(shí)計(jì)算出來(lái)。
首先,將 1.2.1 和 1.2.2 的優(yōu)化目標(biāo)合并。

其中,紅框標(biāo)注出來(lái)的求和公式都是一樣的,就是表達(dá)不同而已。
Tips:用這種方法,我們可以不需要
這個(gè)前提,也就是

PS:第二步中,先計(jì)算完全部特征
,再計(jì)算全部參數(shù)
2.3 協(xié)同過(guò)濾算法向量化實(shí)現(xiàn)

2.4 電影之間的相似度衡量
兩個(gè)電影的特征值之差 可以衡量?jī)蓚€(gè)電影之間的相似程度。
2.5 算法實(shí)現(xiàn)細(xì)節(jié):均值歸一化
對(duì)于從未對(duì)電影評(píng)分的用戶(hù),使用協(xié)同過(guò)濾算法會(huì)得到他的偏好全0 并且他對(duì)所有的電影評(píng)分都是 0,這樣我們無(wú)法推薦他任何電影

這個(gè)問(wèn)題需要使用均值歸一化解決
電影評(píng)分矩陣 Y

對(duì)未知的用戶(hù),讓他對(duì)電影的評(píng)分等于電影的平均分,即上例中
換句話(huà)說(shuō),使用均值歸一化的協(xié)同過(guò)濾算法,對(duì)于未知的用戶(hù),我們推薦平均評(píng)分較高的電影給他。
We talked about mean normalization. However, unlike some other applications of feature scaling, we did not scale the movie ratings by dividing by the range (max – min value). This is because:
All the movie ratings are already comparable (e.g., 0 to 5 stars), so they are already on similar scales.
總結(jié)
基于內(nèi)容的推薦算法一般包括以下三步:
-
物品表示:提取物品的特征
來(lái)表示物品;
-
特征學(xué)習(xí):利用一個(gè)用戶(hù)過(guò)去喜歡或者不喜歡的物品的特征數(shù)據(jù),來(lái)訓(xùn)練學(xué)習(xí)算法得到用戶(hù)的偏好特征
;
- 生成推薦列表:通過(guò)比較上一步得到的用戶(hù)偏好與候選物品的特征,為此用戶(hù)推薦一組相關(guān)性最大的物品。

參考文獻(xiàn)
- 吳恩達(dá)機(jī)器學(xué)習(xí) week9
- 【推薦系統(tǒng)】詳解基于內(nèi)容的推薦算法