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