本文主要闡述:
瀏覽后四章的內(nèi)容請(qǐng)見下篇。 1. 推薦系統(tǒng)的3個(gè)W 1.1 是什么(What is it?) 推薦系統(tǒng)就是根據(jù)用戶的歷史行為、社交關(guān)系、興趣點(diǎn)、所處上下文環(huán)境等信息去判斷用戶當(dāng)前需要或感興趣的物品/服務(wù)的一類應(yīng)用。 1.2 為什么(Why is that?) 為什么我們要用到推薦系統(tǒng)呢?隨著信息技術(shù)和互聯(lián)網(wǎng)的發(fā)展,人類從信息匱乏時(shí)代走向了信息過載(Information Overload)時(shí)代。 對(duì)于信息消費(fèi)者,也就是用戶,從大量信息中找到自己感興趣的信息變得越來越困難;對(duì)于信息生產(chǎn)者,讓自己生產(chǎn)的信息在眾多信息中脫穎而出也變得越來越困難。推薦系統(tǒng)正是為了解決這一矛盾而應(yīng)運(yùn)而生的。 推薦系統(tǒng)的主要任務(wù)就是聯(lián)系用戶和信息。對(duì)用戶而言,推薦系統(tǒng)能幫助用戶找到喜歡的物品/服務(wù),幫忙進(jìn)行決策,發(fā)現(xiàn)用戶可能喜歡的新事物;對(duì)商家而言,推薦系統(tǒng)可以給用戶提供個(gè)性化的服務(wù),提高用戶信任度和粘性,增加營收。我們可以通過一組數(shù)據(jù)了解推薦系統(tǒng)的價(jià)值:
當(dāng)你看到這些數(shù)字,推薦系統(tǒng)的價(jià)值就不言而喻了吧? 1.3 用在哪(Where to apply?) 在這個(gè)信息爆炸的時(shí)代,信息過載問題催生了推薦系統(tǒng)在我們?nèi)粘I钪蟹椒矫婷娴臐B透:電子商務(wù)、電影或視頻網(wǎng)站、個(gè)性化音樂網(wǎng)絡(luò)電臺(tái)、社交網(wǎng)絡(luò)、個(gè)性化閱讀、基于位置的服務(wù)、個(gè)性化郵件、個(gè)性化廣告……在你逛淘寶、訂外賣、聽網(wǎng)絡(luò)電臺(tái)、看美劇、查郵件、淘攻略的時(shí)候,推薦系統(tǒng)在你不知不覺中將你可能感興趣的內(nèi)容推送給你。和搜索引擎不同,個(gè)性化推薦系統(tǒng)需要依賴用戶的行為數(shù)據(jù),一般都是作為一個(gè)應(yīng)用存在于不同網(wǎng)站之中。在互聯(lián)網(wǎng)的各大網(wǎng)站中都可以看到推薦系統(tǒng)的影子。例如都是逛淘寶,女同胞們和男同胞們看到的網(wǎng)頁界面會(huì)有所不同。 以淘寶為例,本人(女)看到的淘寶界面: 男票看到的淘寶界面: 每個(gè)人的喜好不同,在頁面上瀏覽的內(nèi)容就不同,我們的每一次點(diǎn)擊和搜索都會(huì)在網(wǎng)站上留下記錄。淘寶的推薦系統(tǒng)正是通過分析大量我們平時(shí)瀏覽商品的行為日志,推測出我們的喜好,從而給不同用戶提供不同的個(gè)性化界面,來提高網(wǎng)站的點(diǎn)擊率和轉(zhuǎn)化率。 2. 推薦系統(tǒng)的結(jié)構(gòu)(Structure) 盡管不同的網(wǎng)站使用不同的推薦系統(tǒng),但是總的來說,幾乎所有的推薦系統(tǒng)的結(jié)構(gòu)都是類似的,都由線上和線下兩部分組成。線下部分包括后臺(tái)的日志系統(tǒng)和推薦算法系統(tǒng),線上部分就是我們看到的前臺(tái)頁面展示。線下部分通過學(xué)習(xí)用戶資料和行為日志建立模型,在新的上下文背景之下,計(jì)算相應(yīng)的推薦內(nèi)容,呈現(xiàn)于線上頁面中。 3. 推薦引擎算法(Algorithm) 3.1 協(xié)同過濾推薦算法 3.1.1 關(guān)系矩陣與矩陣計(jì)算 在一個(gè)推薦系統(tǒng)中,存在三類關(guān)系:用戶與用戶(U-U矩陣)、物品與物品(V-V矩陣)和用戶與物品(U-V矩陣)。
在基于用戶相似度的協(xié)同過濾中,用戶相似度的計(jì)算是基本前提。Pearson相關(guān)系數(shù)主要用于度量兩個(gè)變量 i 和 j 之間的相關(guān)性,取值范圍是+1(強(qiáng)正相關(guān))到-1(強(qiáng)負(fù)相關(guān)),計(jì)算公式為: 式中, 為用戶 i 和 j 共同評(píng)價(jià)過的物品的集合,c 是這個(gè)集合中的物品元素, 是用戶 j 對(duì)物品 c 的評(píng)價(jià)值, 為用戶 i 對(duì)物品 c 的評(píng)價(jià)值, 和 分別表示用戶 i 和 j 對(duì)物品的平均評(píng)價(jià)值。
算法輸入:用戶行為日志。 算法輸出:基于協(xié)同的用戶相似度矩陣。 A.從用戶行為日志中獲取用戶與物品之間的關(guān)系數(shù)據(jù),即用戶對(duì)物品的評(píng)分?jǐn)?shù)據(jù)。 B.對(duì)于n個(gè)用戶,依次計(jì)算用戶1與其他n-1個(gè)用戶的相似度;再計(jì)算用戶2與其他n-2個(gè)用戶的相似度。對(duì)于其中任意兩個(gè)用戶 i 和 j :
C.將計(jì)算得到的相似度結(jié)果存儲(chǔ)于數(shù)據(jù)庫中。
在基于物品相似度的協(xié)同過濾中,物品相似度的計(jì)算是基本前提。將物品的評(píng)價(jià)數(shù)值抽象為n維用戶空間中的列向量 和 ,使用修正的余弦相似度,計(jì)算公式為: 式中, 為對(duì)物品 和 共同評(píng)價(jià)過的用戶的集合, 是用戶 u 對(duì)物品 的評(píng)價(jià)值, 和 分別表示用戶對(duì)物品 和 的平均評(píng)價(jià)值。
算法輸入:用戶行為日志。 算法輸出:基于協(xié)同的物品相似度矩陣。 A.從用戶行為日志中獲取用戶與物品之間的關(guān)系數(shù)據(jù),即用戶對(duì)物品的評(píng)分?jǐn)?shù)據(jù)。 B. 對(duì)于n個(gè)物品,依次計(jì)算物品1與其他n-1個(gè)物品的相似度;再計(jì)算物品2與其他n-2個(gè)物品的相似度。對(duì)于其中任意兩個(gè)物品 i 和 j:
C.將計(jì)算得到的相似度結(jié)果存儲(chǔ)于數(shù)據(jù)庫中。
在真實(shí)的推薦系統(tǒng)中,一方面U-V矩陣的行列數(shù)會(huì)隨著用戶和物品數(shù)量變得龐大,另一方面,因?yàn)橛脩魧?shí)際上只能對(duì)有限數(shù)量的物品做出評(píng)價(jià),所以U-V矩陣的內(nèi)部會(huì)非常稀疏。系統(tǒng)在直接處理這些龐大稀疏矩陣時(shí),耗費(fèi)的時(shí)間、內(nèi)存和計(jì)算資源都十分巨大。因此需要采取降低計(jì)算復(fù)雜度的方法。矩陣分解技術(shù)是一種有效降低矩陣計(jì)算復(fù)雜的方法,它的實(shí)質(zhì)是將高維矩陣進(jìn)行有效降維。
SVD將給定矩陣分解為3個(gè)矩陣的乘積: 式中,矩陣 為對(duì)角陣,其對(duì)角線上的值 為矩陣M的奇異值,按大小排列,代表著矩陣M的重要特征。將SVD用在推薦系統(tǒng)上,其意義是將一個(gè)系數(shù)的評(píng)分矩陣M分解為表示用戶特性的U矩陣,表示物品特性的V矩陣,以及表示用戶和物品相關(guān)性的 矩陣。
在推薦系統(tǒng)中,對(duì)于有較多屬性的物品(物品的信息用向量 表示)可用PCA處理進(jìn)行降維,將m×n的物品矩陣轉(zhuǎn)化為m×k的新矩陣。 3.1.2 基于記憶的協(xié)同過濾算法
基于用戶的協(xié)同過濾(user-based collaborative filtering)算法是推薦系統(tǒng)中最古老的算法,產(chǎn)生于1992年,最初應(yīng)用于郵件過濾系統(tǒng),1994年被GroupLens用于新聞過濾。在此之后直到2000年,該算法都是推薦系統(tǒng)領(lǐng)域最著名的算法。
什么是基于用戶的協(xié)同過濾算法?舉個(gè)簡單的例子,我們知道櫻桃小丸子喜歡葡萄、草莓、西瓜和橘子,而我們通過某種方法了解到小丸子和花倫有相似的喜好,所以我們會(huì)把小丸子喜歡的而花倫還未選擇的水果(葡萄和橘子)推薦給花倫。 通過上面的例子我們可以做出如下總結(jié):假設(shè)用戶為 ,物品 , 對(duì) 的評(píng)分為 ,基于用戶的協(xié)同過濾算法主要包含以下兩個(gè)步驟: A.搜集用戶和物品的歷史信息,計(jì)算用戶u和其他用戶的相似度 ,找到和目標(biāo)用戶Ui興趣相似的用戶集合N(u) B. 找到這個(gè)集合中用戶喜歡的,且目標(biāo)用戶還沒有聽說過的物品推薦給目標(biāo)用戶。 基于用戶的協(xié)同過濾子引擎,通過下面的公式來計(jì)算用戶對(duì)物品的喜好程度: 式中, 表示用戶 u 對(duì)物品 j 的喜好程度, 表示用戶Ni對(duì)物品 j 的評(píng)價(jià), 表示用戶 u 和用戶 的相似度。最后根據(jù) 來對(duì)候選物品進(jìn)行排序,為用戶推薦分值最高的Top-N個(gè)物品。
算法輸入:用戶行為日志,基于協(xié)同的用戶相似性矩陣。 算法輸出:初始推薦結(jié)果 A. 訪問用戶行為日志,獲取近期變化的用戶ID集合U。 B. 針對(duì)集合U中每個(gè)用戶 u:
由于需計(jì)算用戶相似度矩陣,基于用戶的協(xié)同過濾算法適用于用戶較少的場合; 由于時(shí)效性較強(qiáng),該方法適用于用戶個(gè)性化興趣不太明顯的領(lǐng)域。
基于物品的協(xié)同過濾(item-based collaborative filtering)算法是目前業(yè)界應(yīng)用最多的算法。無論是亞馬遜網(wǎng),還是Netflix、Hulu、Youtube,其推薦算法的基礎(chǔ)都是該算法。
基于物品的協(xié)同過濾算法給用戶推薦那些和他們之前喜歡的物品相似的物品。比如,我們知道櫻桃小丸子和小玉都喜歡葡萄和西瓜,那么我們就認(rèn)為葡萄和西瓜有較高的相似度,在花倫選擇了西瓜的情況下,我們會(huì)把葡萄推薦給花倫。 ItemCF算法并不利用物品的內(nèi)容屬性計(jì)算物品之間的相似度,它主要通過分析用戶的行為記錄計(jì)算物品之間的相似度。該算法認(rèn)為,物品A和物品B具有很大的相似度是因?yàn)橄矚g物品A的用戶大都也喜歡物品B。 假設(shè)用戶為 ,物品 , 對(duì) 的評(píng)分為 ,基于物品的協(xié)同過濾算法主要分為兩步: A. 對(duì)于目標(biāo)用戶 及其待評(píng)分的物品 ,根據(jù)用戶對(duì)物品的歷史偏好數(shù)據(jù),計(jì)算物品 與其他已評(píng)分物品之間的相似度 Sim(j,i),找到與物品 相似度的物品合集N(u); B.根據(jù)所有物品 N(u) 的評(píng)分情況,選出N(u)中目標(biāo)用戶 可能喜歡的且沒有觀看過的推薦給目標(biāo)用戶并預(yù)測評(píng)分。 式中, 為用戶 u 對(duì)物品 i 的評(píng)分, 是用戶 u 對(duì)他買過的物品的平均打分。 ItemCF通過下面的公式來計(jì)算用戶對(duì)物品的喜好程度: 式中, 表示用戶 u 對(duì)物品 j 的喜好程度,物品 i 是用戶買過的物品, 表示用戶 u 對(duì)物品 i 的偏好程度,然后根據(jù) 來對(duì)候選物品進(jìn)行排序,為用戶推薦分值最高的物品。
算法輸入:用戶行為日志,基于協(xié)同的物品相似性矩陣 算法輸出:初始推薦結(jié)果 A.訪問用戶行為日志,獲取該用戶最近瀏覽過物品的用戶集合U。 B. 針對(duì)集合U中每個(gè)用戶u:
適用于物品數(shù)明顯小于用戶數(shù)的場合; 長尾物品豐富,用戶個(gè)性化需求強(qiáng)烈的領(lǐng)域。
3.1.2 基于模型的協(xié)同過濾算法
隱語義模型是最近幾年推薦系統(tǒng)領(lǐng)域最為熱門的研究話題,它的核心思想是通過隱含特征(latent factor)聯(lián)系用戶興趣和物品。也就是,對(duì)于某個(gè)用戶,首先找到他的興趣分類,然后從分類中挑選他可能喜歡的物品。
基于興趣分類的方法大概需要解決3個(gè)問題: A. 如何給物品進(jìn)行分類? B. 如何確定用戶對(duì)哪些類的物品感興趣,以及感興趣的程度? C.對(duì)于一個(gè)給定的類,選擇哪些屬于這個(gè)類的物品推薦給用戶,以及如何確定這些物品在一個(gè)類中的權(quán)重? 隱含語義分析技術(shù)采取基于用戶行為統(tǒng)計(jì)的自動(dòng)聚類,可以自動(dòng)解決物品分類問題。LFM通過如下公式計(jì)算用戶 u 對(duì)物品 i 的興趣: 這個(gè)公式中, 和 是模型的參數(shù),其中, 度量了用戶 u 的興趣和第 k 個(gè)隱類的關(guān)系,而度量了第 k 個(gè)隱類和物品 i 之間的關(guān)系。要計(jì)算這兩個(gè)參數(shù),需要一個(gè)訓(xùn)練集,對(duì)于每個(gè)用戶 u ,訓(xùn)練集里都包含了用戶 u 喜歡的物品和不感興趣的物品,通過學(xué)習(xí)這個(gè)數(shù)據(jù)集,就可以獲得上面的模型參數(shù)。
LFM具有比較好的理論基礎(chǔ),它是一種學(xué)習(xí)方法,通過優(yōu)化一個(gè)設(shè)定的指標(biāo)建立最優(yōu)的模型?;卩徲虻姆椒ǜ嗟氖且环N基于統(tǒng)計(jì)的方法,并沒有學(xué)習(xí)過程。
基于鄰域的方法需要維護(hù)一張離線的相關(guān)表。在離線計(jì)算相關(guān)表的過程中,如果用戶/物品數(shù)很多,將會(huì)占據(jù)很大的內(nèi)存。而LFM在建模過程中,可以很好地節(jié)省離線計(jì)算的內(nèi)存。
在一般情況下,LFM的時(shí)間復(fù)雜度要稍微高于UserCF和ItemCF,這主要是因?yàn)樵撍惴ㄐ枰啻蔚5傮w上,這兩種算法在時(shí)間復(fù)雜度上沒有質(zhì)的差別。
UserCF和ItemCF在線服務(wù)算法需要將相關(guān)表緩存在內(nèi)存中,然后可以在線進(jìn)行實(shí)時(shí)的預(yù)測。LFM在給用戶生成推薦列表時(shí),需要計(jì)算用戶對(duì)所有物品的興趣權(quán)重,然后排名,不太適合用于物品數(shù)非常龐大的系統(tǒng),如果要用,我們也需要一個(gè)比較快的算法給用戶先計(jì)算一個(gè)比較小的候選列表,然后再用LFM重新排名。另一方面,LFM在生成一個(gè)用戶推薦列表時(shí)速度太慢,因此不能在線實(shí)時(shí)計(jì)算,而需要離線將所有用戶的推薦結(jié)果事先計(jì)算好存儲(chǔ)在數(shù)據(jù)庫中。因此,LFM不能進(jìn)行在線實(shí)時(shí)推薦,也就是說,當(dāng)用戶有了新的行為后,他的推薦列表不會(huì)發(fā)生變化。
ItemCF算法支持很好的推薦解釋,它可以利用用戶的歷史行為解釋推薦結(jié)果。但LFM無法提供這樣的解釋,它計(jì)算出的隱類雖然在語義上確實(shí)代表了一類興趣和物品,卻很難用自然語言描述并生成解釋展現(xiàn)給用戶。
由于推薦問題可以看成分類問題,因此可以使用機(jī)器學(xué)習(xí)領(lǐng)域中的分類算法加以解決。樸素貝葉斯分類算法是貝葉斯分類算法中比較簡單的一種,它的基本思想是:對(duì)于給出的待分類物品和既定的類別,計(jì)算該物品在各個(gè)類別中出現(xiàn)的頻率,哪個(gè)類別計(jì)算出的概率大就將物品歸于那個(gè)類。在推薦系統(tǒng)中,樸素貝葉斯分類能夠在已知某些評(píng)分的情況下,通過計(jì)算概率預(yù)測未知評(píng)分。 計(jì)算中用到貝葉斯定理: 式中,表示事件B已經(jīng)發(fā)生的前提下事件A發(fā)生的概率;P(A)和P(B)均為無條件概率。
算法輸入:已知目標(biāo)用戶對(duì)物品 之外的物品的評(píng)分情況,以及其他用戶對(duì)各物品的評(píng)分情況。 算法輸出:確定目標(biāo)用戶對(duì)物品 的評(píng)分 。 A.設(shè) 為一個(gè)待分類項(xiàng), 為 的特征屬性; B.設(shè)類別集合 C. 計(jì)算 :
D. ,則 。
樸素貝葉斯分類實(shí)現(xiàn)起來比較簡單,準(zhǔn)確率高,但是分類的時(shí)候需要學(xué)習(xí)全部樣本的信息。因此,樸素貝葉斯分類適用于數(shù)據(jù)量不大,類別較少的分類問題。 3.2 基于內(nèi)容(CB)的推薦算法
基礎(chǔ)CB推薦算法利用物品的基本信息和用戶偏好內(nèi)容的相似性進(jìn)行物品推薦。通過分析用戶已經(jīng)瀏覽過的物品內(nèi)容,生成用戶的偏好內(nèi)容,然后推薦與用戶感興趣的物品內(nèi)容相似度高的其他物品。 比如,用戶近期瀏覽過馮小剛導(dǎo)演的電影“非誠勿擾”,主演是葛優(yōu);那么如果用戶沒有看過“私人訂制”,則可以推薦給用戶。因?yàn)檫@兩部電影的導(dǎo)演都是馮小剛,主演都有葛優(yōu)。 計(jì)算公式為: 式中, 表示用戶, 表示物品, 表示用戶在第 k 個(gè)方面的特征, 表示物品在第 k 個(gè)方面的特征, 表示 和 在第 k 個(gè)特征方面上的相似度,表示權(quán)重 。
算法輸入:物品信息,用戶行為日志。 算法輸出:初始推薦結(jié)果。 A. 物品表示:每個(gè)物品使用特征向量 表示, 其中表示物品的特征屬性; B.從用戶行為日志中,獲取該用戶所瀏覽、收藏、評(píng)價(jià)、分享的物品集合M,根據(jù)物品集合M中物品的特征數(shù)據(jù),可以學(xué)到用戶的內(nèi)容偏好; C. 保存Top-K個(gè)物品到初始推薦結(jié)果中。
適用于基礎(chǔ)CB架構(gòu)的搭建,尤其是對(duì)新上線物品會(huì)馬上被推薦非常有效,被推薦的機(jī)會(huì)與老的物品是相同的。
在推薦系統(tǒng)中,用戶的反饋往往分為兩類:評(píng)分和文字評(píng)論。前者通過分?jǐn)?shù)直接反映用戶對(duì)物品的喜好程度,后者則需要從文字當(dāng)中提取關(guān)鍵信息,這時(shí)需要用到TF-IDF(Term Frequency-Inverse Document Frequency)。TF-IDF算法被公認(rèn)為信息檢索中最重要的發(fā)明,在搜索、文獻(xiàn)分類和其他相關(guān)領(lǐng)域有廣泛應(yīng)用。 TF-IDF是自然語言處理領(lǐng)域中計(jì)算文檔中詞或短語的權(quán)值的方法,是詞頻(Term Frequency, TF)和逆轉(zhuǎn)文檔頻率(Inverse Document Frequency, IDF)的乘積。TF指的是某一個(gè)給定的詞語在該文件中出現(xiàn)的次數(shù),這個(gè)數(shù)字通常會(huì)被正規(guī)化,以防止它偏向長的文件(同一個(gè)詞語在長文件里可能會(huì)比段文件有更高的詞頻,而不管該詞語重要與否)。IDF是一個(gè)詞語普遍重要性的度量,某一特定詞語的IDF,可以由總文件數(shù)目除以包含該詞語的文件數(shù)目,再將得到的商取對(duì)數(shù)得到。
TF-IDF算法基于這樣一個(gè)假設(shè):若一個(gè)詞語在目標(biāo)文檔中出現(xiàn)的頻率高而在其他文檔中出現(xiàn)的頻率低,那么這個(gè)詞語就可以用來區(qū)分出目標(biāo)文檔。這個(gè)假設(shè)的主要信息有兩點(diǎn):
因此,TF-IDF算法的計(jì)算可以分為詞頻(TF)和逆轉(zhuǎn)文檔頻率(IDF)兩部分,由TF和IDF的乘積來設(shè)置文檔詞語的權(quán)重。 假設(shè)文檔集包含的文檔數(shù)為N,文檔集中包含關(guān)鍵詞 的文檔數(shù)為 , 表示關(guān)鍵詞 在文檔 中出現(xiàn)的次數(shù), 表示文檔 中出現(xiàn)的詞語總數(shù), 在文檔 中的詞頻 定義為 這個(gè)數(shù)字通常會(huì)被正規(guī)化,以防止它偏向長的文件。 IDF衡量詞語的普遍重要性。 表示某一詞語在整個(gè)文檔中出現(xiàn)的頻率,由它計(jì)算的結(jié)果取對(duì)數(shù)得到關(guān)鍵詞 的逆文檔頻率 。 由TF和IDF計(jì)算詞語的權(quán)重為 可以看出,TF-IDF與詞語在文檔中的出現(xiàn)次數(shù)成正比,與該詞在整個(gè)文檔集中的出現(xiàn)次數(shù)成反比。在目標(biāo)文檔中,提取關(guān)鍵詞的方法就是將該文檔所有詞語的TF-IDF計(jì)算出來并進(jìn)行對(duì)比,取其中TF-IDF值最大的個(gè)數(shù)組成目標(biāo)文檔的特征向量來表示該文檔。
KNN(k-Nearest Neighbor)算法基于這樣的假設(shè):如果在特征空間中,一個(gè)樣本的k個(gè)最鄰近樣本中的大多數(shù)樣本屬于某一個(gè)類別,則該樣本也屬于這個(gè)類別。
KNN在CB推薦算法中的應(yīng)用于在CF推薦算法中的應(yīng)用極為相似,它們都是要首先找到與目標(biāo)物品相似的且已經(jīng)被用戶 u 評(píng)價(jià)過的 k 個(gè)物品,然后根據(jù)用戶 u 對(duì)這 k 個(gè)物品的評(píng)價(jià)來預(yù)測其目標(biāo)物品的評(píng)價(jià)。它們的差別在于,CF推薦算法中的KNN是根據(jù)用戶對(duì)物品的評(píng)分來計(jì)算物品間相似度的,而CB推薦算法中KNN是根據(jù)物品畫像來計(jì)算相似度的,所以對(duì)于后者來說,如何通過物品畫像來計(jì)算物品間的相似度是算法中的關(guān)鍵步驟。相似度的計(jì)算可以使用余弦相似度或Pearson相關(guān)系數(shù)的計(jì)算方法。
算法輸入:用戶已評(píng)分物品,目標(biāo)物品 i 。 算法輸出:用戶對(duì)目標(biāo)物品 i 的評(píng)分。 A. 采用余弦相似度公式計(jì)算相似度。 B. 選擇最近鄰。在用戶 u 評(píng)過分的所有物品中,找出 k 個(gè)與目標(biāo)物品 i 相似度最高的物品,并用 N(u,i) 來表示這出 k 個(gè)物品的集合。 C.計(jì)算預(yù)測值。在第二步的基礎(chǔ)上,可使用以下公式計(jì)算用戶對(duì)目標(biāo)物品的評(píng)分: 式中, 表示用戶 u 對(duì)物品 i 的預(yù)測評(píng)分, 是相似度。
Rocchio是從用戶瀏覽歷史中抽取用戶喜好的物品特征來構(gòu)建用戶畫像的一種常用算法,是信息檢索領(lǐng)域處理相關(guān)反饋(Relevance Feedback)的一個(gè)著名算法。它提供了如何通過用戶瀏覽的物品,反饋計(jì)算用戶特征向量中屬性值的方法。 舉個(gè)簡單例子,假如用戶觀看過“星球大戰(zhàn)”和“加勒比海盜”,并給予高分,那么根據(jù)用戶的行為歷史數(shù)據(jù)構(gòu)建畫像時(shí),用戶的特征向量可表示為{“動(dòng)作”:1,“歐美”:1,“科幻”:1,“冒險(xiǎn)”:0.5}。
Rocchio算法基于這樣的假設(shè):如果我們需要計(jì)算出最精準(zhǔn)度的用戶特征向量 ,那么這個(gè)用戶特征向量應(yīng)該與用戶喜歡的物品特征最相似,與用戶討厭的物品特征最不同。若 表示用戶喜歡的物品, 表示用戶討厭的物品,那么根據(jù)Rocchio算法的思想,定義最優(yōu)的用戶特征向量為: 式中, 表示用戶特征向量與用戶喜歡的物品的相似度,采用余弦相似度計(jì)算,公式為: 更新用戶的特征向量,修改公式為: 式中, 是原始的用戶特征向量, 為權(quán)重。若用戶新的歷史數(shù)據(jù)較多,那么可以增大 和 的值,反之,用戶更新數(shù)據(jù)較少則可以適當(dāng)減小 和 的值。在基于內(nèi)容的物品推薦中,根據(jù)用戶的歷史行為數(shù)據(jù)建立用戶畫像,我們可以采用Rocchio算法不斷地調(diào)整用戶的特征向量 。
基于決策樹的推薦算法在訓(xùn)練階段會(huì)生成一個(gè)顯示的決策模型。決策樹可以通過訓(xùn)練數(shù)據(jù)構(gòu)建并有效判斷一個(gè)新的物品是否可能受到歡迎。當(dāng)物品的特征屬性較少時(shí),采用決策樹算法能夠取得不錯(cuò)的效果,另外,決策樹學(xué)習(xí)的思想也比較容易被理解,在物品推薦時(shí)的可解釋性較好。
在物品推薦系統(tǒng)中,決策樹的內(nèi)部節(jié)點(diǎn)通常表示物品的特征屬性,這些節(jié)點(diǎn)用于區(qū)分物品集合,例如,通過物品中是否包含這個(gè)特征將其進(jìn)行分類。在只有兩個(gè)分類的簡單數(shù)據(jù)集中,用戶是否對(duì)物品感興趣一般出現(xiàn)在決策樹的葉子節(jié)點(diǎn)上。
將基于內(nèi)容的物品推薦問題視為分類問題時(shí),可以采用多種機(jī)器學(xué)習(xí)方法。從一個(gè)更抽象的角度上看,大部分學(xué)習(xí)方法致力于找到一個(gè)可以準(zhǔn)確區(qū)分用戶喜歡和不喜歡的物品的線性分類模型系數(shù)。 將物品數(shù)據(jù)用n維特征向量來表示,線性分類器試圖在給定的物品特征空間中找到一個(gè)能夠?qū)⑽锲氛_分類的平面,一類點(diǎn)盡可能在平面的某一邊(喜歡),另一類在平面的另一邊(不喜歡)。
基于線性分類器的CB推薦算法通過物品特征的線性組合進(jìn)行分類。若輸入的物品特征向量為 ,輸出的結(jié)果 y 表示用戶是否喜歡物品,則線性分類器可以表示為: 式中, 表示物品特征向量對(duì)應(yīng)的權(quán)重,根據(jù)輸入的物品特征屬性做出決定輸出結(jié)果。
基于樸素貝葉斯的推薦系統(tǒng)假設(shè)用戶和物品的特征向量中的各個(gè)分量之間條件獨(dú)立,判斷用戶是否對(duì)某個(gè)物品有興趣的方法是將這個(gè)問題轉(zhuǎn)化為分類問題:喜歡和不喜歡。 計(jì)算物品分類情況的后驗(yàn)概率為: 式中, 表示物品的相關(guān)屬性;C為物品的分類, 表示在分類 c 的一個(gè)物品的特征屬性 出現(xiàn)的概率。這樣,物品分類的后驗(yàn)概率可以通過觀察分析訓(xùn)練數(shù)據(jù)得到。
推薦系統(tǒng)中,分類 c 下的一個(gè)物品特征屬性 的條件概率用 在分類 c 下所有物品中出現(xiàn)的頻率近似表示,即 式中, 表示在標(biāo)記為的物品 c 出現(xiàn)的次數(shù), 表示在這些物品中出現(xiàn)的所有特征屬性的個(gè)數(shù)。為了預(yù)防計(jì)算概率為0的情況,對(duì)式子進(jìn)行平滑,新公式如下: 式中,|V|表示所有物品中的出現(xiàn)的不同特征屬性數(shù)。 3.3 基于知識(shí)的推薦算法 3.3.1 概述 基于知識(shí)(Knowledge-based, KB)的推薦算法,是區(qū)別于基于CB和基于CF的常見推薦方法。如果說CB和CF像通用搜索引擎的話,KB好比某個(gè)領(lǐng)域的垂直搜索引擎,可以提供該領(lǐng)域的特殊需求,包括專業(yè)性的優(yōu)質(zhì)特征,幫助提高搜索引擎在特定領(lǐng)域的服務(wù)。 以視頻推薦為例,一部電影的上映時(shí)期和檔期熱度,哪些導(dǎo)演執(zhí)導(dǎo)的一定是大片,變形金剛和指環(huán)王系列口碑肯定不會(huì)太差,都是非常有價(jià)值的推薦信息。此外,基于知識(shí)的推薦,也更容易滿足主觀個(gè)性化需求。例如,對(duì)于VIP用戶,如果配置好了偏好,就可以為其提供更加精準(zhǔn)的推薦服務(wù)。
如今網(wǎng)上購物所能涵蓋的物品越來越豐富,人們逐漸發(fā)現(xiàn)推薦系統(tǒng)的CF和CB推薦算法并不能很好地適應(yīng)某些特殊物品的推薦需求。例如,更新?lián)Q代非??斓亩藗冇滞ǔ2粫?huì)經(jīng)常更換的電子產(chǎn)品。對(duì)于這些產(chǎn)品來說,其各方面的性能參數(shù)在幾年間就會(huì)有很大變化,代表歷史偏好的用戶畫像并不能很好地反映用戶當(dāng)前的購買需求,于是就需要推薦系統(tǒng)將用戶當(dāng)前的需求作為重要信息參考源。人們發(fā)現(xiàn)可以利用物品的參數(shù)特征等屬性形成約束知識(shí),再將用戶對(duì)物品的特定刻畫為約束條件,然后經(jīng)過對(duì)物品集合的約束滿足問題的求解,就可以得到用戶所期望的物品了。
推薦任務(wù)是以元組(R,I)的形式表示出來,其中用集合 R 表示目標(biāo)用戶對(duì)物品的特定需求,即對(duì)物品的約束條件,用集合 I 表示一個(gè)物品集合。推薦的任務(wù)就是從集合 I 中確定出能夠滿足集合 R 要求的物品。
推薦任務(wù)的解決是以找到可能的集合 S 為目標(biāo),集合 S 應(yīng)滿足的條件是 ,并且 ,其中, 表示對(duì)集合 I 進(jìn)行合取查詢的運(yùn)算符,R 表示對(duì)物品的約束條件或選擇標(biāo)準(zhǔn)。
沖突集CS應(yīng)滿足的條件為: ,并且 。特別地,當(dāng)不存在集合 時(shí),集合CS被稱為最小沖突集。
診斷集 應(yīng)滿足的條件是 ,并且 。特別地,當(dāng)不存在集合 時(shí),集合 被稱為最小診斷集。
關(guān)聯(lián)知識(shí)以關(guān)聯(lián)規(guī)則為表現(xiàn)形式,用以描述數(shù)據(jù)庫中數(shù)據(jù)之間關(guān)聯(lián)性的知識(shí)。在推薦系統(tǒng)領(lǐng)域,可以通過對(duì)用戶畫像中關(guān)聯(lián)規(guī)則的挖掘分析來分析用戶的習(xí)慣,發(fā)現(xiàn)物品之間的關(guān)聯(lián)性,并利用這種關(guān)聯(lián)性指導(dǎo)系統(tǒng)做出推薦。
算法輸入:n個(gè)用戶畫像。 算法輸出:針對(duì)目標(biāo)用戶u的Top-N推薦列表。 A.從系統(tǒng)中的n個(gè)用戶畫像中挖掘出所有的強(qiáng)關(guān)聯(lián)規(guī)則,建立集合 以表示目標(biāo)用戶u尚未觀看但極有可能感興趣的物品。 B. 再次使用置信度對(duì)集合 中的物品進(jìn)行高低排序。 C. 取出排序列表中的前N個(gè)物品構(gòu)成Top-N推薦列表。 由于對(duì)系統(tǒng)中全體用戶的畫像進(jìn)行規(guī)則關(guān)聯(lián)挖掘意義不明顯且計(jì)算量大,所以基于關(guān)聯(lián)規(guī)則的推薦算法常與CF推薦算法混合使用。在這類混合方案中,使用了CF推薦算法中的最近鄰算法將用戶畫像數(shù)目n限定在目標(biāo)用戶的最鄰近范圍內(nèi),使得關(guān)聯(lián)規(guī)則挖掘算法處理的數(shù)據(jù)規(guī)模被有針對(duì)性地限定在一定范圍內(nèi)。 3.4 混合推薦算法 各種推薦方法都有優(yōu)缺點(diǎn),為了揚(yáng)長補(bǔ)短,在實(shí)際中常常采用混合推薦(Hybrid Recommendation)。研究和應(yīng)用最多的是內(nèi)容推薦和協(xié)同過濾推薦的組合。最簡單的做法就是分別用基于內(nèi)容的方法和協(xié)同過濾推薦方法去產(chǎn)生一個(gè)推薦預(yù)測結(jié)果,然后用某方法組合其結(jié)果。盡管從理論上有很多種推薦組合方法,但在某一具體問題中并不見得都有效,組合推薦一個(gè)最重要原則就是通過組合后要能避免或彌補(bǔ)各自推薦技術(shù)的弱點(diǎn)。
|
|