原文地址:http://blog.csdn.net/mr_tyting/article/details/63684839
我們之前討論推薦系統(tǒng)的UserCF算法和ItemCF等算法都是以擁有大量用戶行為數(shù)據(jù)為先決條件,并以此對物品或者用戶進行自動聚類两波。但是對于一個剛剛開始運行推薦系統(tǒng)的應用的網(wǎng)站來說棺蛛,如何在沒有大量用戶行為數(shù)據(jù)的情況下設計個性化推薦系統(tǒng)并且讓用戶對推薦系統(tǒng)滿意讯泣,從而愿意使用推薦系統(tǒng)趣兄,這就是冷啟動問題木羹。
對于冷啟動問題,一般分為三類:
一)用戶冷啟動:如何對新用戶做個性化推薦峰锁。
二)物品冷啟動:如何將新加進來的物品推薦給對它感興趣的用戶萎馅。
三)系統(tǒng)冷啟動:新開發(fā)的網(wǎng)站如何設計個性化推薦系統(tǒng)。
對以上三個冷啟動虹蒋,通常參考如下解決方案:
一)提供個性化的推薦:比如熱門排行榜糜芳。等用戶行為數(shù)據(jù)收集到一定時候再切換為個性化推薦。
二)利用注冊信息魄衅,比如提供的年齡峭竣,性別等做粗粒化的推薦晃虫。
三)利用用戶社交網(wǎng)絡賬號登錄皆撩。
四)要求用戶在注冊時對一些物品進行反饋。收集用戶興趣信息哲银。
五)對新加的物品扛吞,利用內容信息,將他們推薦給喜歡過和他們內容類似的用戶荆责。
六)系統(tǒng)冷啟動時滥比,可引入專家知識,通過一定高效方式迅速建立物品的相關度表做院。
以下詳細說明以上的解決方案
一 新用戶冷啟動問題:
方法一 : 利用用戶注冊信息
(1)人口統(tǒng)計學:用戶年齡盲泛,性別,職業(yè)键耕,民族寺滚,學歷和居住地
(2)用戶興趣描述:一些網(wǎng)站會讓用戶描述他們的興趣愛好
(3)從其他網(wǎng)站導入用戶站外行為數(shù)據(jù)
基于注冊信息的個性化推薦流程基本如下:
①獲取用戶注冊信息
②根據(jù)用戶注冊信息對用戶進行分類,分類可以是多分類(也即是多個特征)
③給用戶推薦他所在分類的用戶最喜歡的物品郁竟,每個分類(特征)用戶最喜歡的物品加權求和玛迄。
實際應用中也會考慮組合特征,但是新用戶不一定具有所有的特征棚亩,因為有些時候并不要求用戶填寫相關特征信息蓖议。
由以上可知,基于用戶注冊信息的推薦算法其核心問題是計算出每種特征(所屬分類)用戶喜歡的物品讥蟆,也就是說勒虾,對于每種特征f,計算具有這種特征的用戶對每個物品的喜歡程度p(f,i)
p(f,i)可以簡單定義為具有特征f的用戶對物品i的喜好程度:
其中N(i)表示喜歡物品i的用戶集合瘸彤,U(f)表示具有特征f的用戶集合修然。
跟之前講到推薦系統(tǒng)算法類似,這個公式也有一個缺點,如果一個物品是熱門物品那么他的p(f,i)將會非常高愕宋,則在給用戶推薦物品時會傾向于推薦熱門物品玻靡,由此則覆蓋率極低。我們在設計推薦系統(tǒng)時中贝,主要任務不是給用戶推薦熱門物品囤捻,而是幫助用戶發(fā)現(xiàn)他喜歡但是卻不太容易發(fā)現(xiàn)的物品。因此我們可以對上面公式做以下改進邻寿,同以前一樣蝎土,對熱門物品進行懲罰:
上面公式中分母的作用是解決數(shù)據(jù)稀疏的問題。比如一個物品只被一個用戶喜歡過绣否,而這個用戶剛好有特征f誊涯,那么p(f,i)=1,這樣的統(tǒng)計量沒有意義,因此我們在分母上加上一個比較大的數(shù)蒜撮,可以避免這樣的物品產(chǎn)生比較大的權重暴构。
這樣我們就可以計算出每一類用戶中最受歡迎的物品列表。
方法二:選擇合適的物品啟動用戶興趣
用戶第一次訪問推薦系統(tǒng)時段磨,不立即進行推薦丹壕,而是提供一些物品讓用戶進行反饋。然后根據(jù)反饋結果進行個性化推薦薇溃。
而這些提供的物品應該具有哪些特性呢?一般來講應該符合以下幾個原則:
①比較熱門
②具有代表性和區(qū)分性
③具有多樣性
上面只是物品冷啟動的原則缭乘,那么在實際選擇啟動的物品集合時應該怎么做呢沐序?可以利用決策樹的思想,給定一群用戶堕绩,利用這群用戶對物品評分的方差度量這群用戶興趣的一致程度策幼,如果方差很大說明這個物品的區(qū)分性很好。
其中
喜歡物品i的用戶對其他物品評分方差奴紧;
表示沒有對物品i評分的用戶對其他物品評分的方差特姐;
表示不喜歡物品i的用戶對其他物品評分的方差。如果這三類用戶集合內的用戶對其他的物品興趣很不一致黍氮,說明物品i具有較高的區(qū)分度唐含。
首先會從所有用戶中尋找具有最高區(qū)分度的物品i,然后將用戶分成3類沫浆,然后從每類中在尋找最高區(qū)分度的物品捷枯,再將用戶分三類,這樣就9類了专执,一直繼續(xù)下去淮捆,最終可以通過對一系列物品的看法對用戶進行分類。而在冷啟動時,我們從根節(jié)點開始詢問用戶對該節(jié)點物品的看法攀痊,然后根據(jù)用戶的選擇將用戶放到不同的分支桐腌,直至最后進入葉子節(jié)點。這樣我們就可以對用戶的興趣有了比較清楚的了解苟径。從而可以對用戶進行個性化推薦案站。
二:物品冷啟動問題
物品冷啟動要解決的問題是如何將新加的物品推薦給對它感興趣的用戶。
之前我們介紹了UserCF算法和ItemCF算法涩笤。UserCF算法并不對新物品很敏感嚼吞,在很多網(wǎng)站中,推薦列表并不是給用戶展示物品的唯一列表蹬碧。當一個用戶在某個地方發(fā)現(xiàn)了新加的物品并對其進行了反饋舱禽。通過UserCF算法給類似具有相同興趣的用戶推薦這個物品。這樣新加的物品就會源源不斷的擴散開來恩沽。
但是有些網(wǎng)站中推薦列表就是用戶獲取新加物品唯一的或者是主要途徑誊稚。這時就要解決第一推動力的問題。也即是第一個用戶在哪發(fā)現(xiàn)新加物品的問題罗心。解決這個問題的最簡單的辦法就是將新加的物品隨機的展示給用戶里伯,但是這樣做顯然并不個性化。因此可以考慮利用物品內容信息渤闷,將新物品投放給曾經(jīng)喜歡過和他類似內容的其他物品的用戶疾瓮,這類似于ItemCF思想。不過這是先通過ItemCF找到一個可能對物品感興趣的用戶飒箭,然后再通過USerCF推薦給與此用戶興趣類似的其他用戶狼电。
如果用ItemCF算法解決物品冷啟動問題,就有點麻煩了弦蹂,因為ItemCF通過用戶行為對物品進行相似度的計算肩碟,形成物品相似度矩陣。再根據(jù)這個相似度矩陣把物品推薦給喜歡過類似這個物品的用戶凸椿。這個物品相似度矩陣是線下計算好削祈,線上放進內存。從而新物品不會出現(xiàn)在物品相似度矩陣中脑漫。解決的辦法是頻繁的更新相似度矩陣髓抑。這是一件非常耗時的事情。為此我們只能通過物品內容來計算物品相似度矩陣窿撬。這就涉及到如何通過物品內容來計算物品相似度的問題启昧,下面來詳細講述這個問題。
一般來說劈伴,物品的內容可以用向量空間模型表示密末,該模型會把物品表示成一個關鍵詞向量握爷。對于物品d,他的內容表示成一個關鍵詞向量如下:
其中e是關鍵詞严里,w是這個詞對于權重新啼,其中w的計算公式就是著名的TF-IDF公式:
TF-IDF重要思想就是:一個不常見的詞在一篇文章中出現(xiàn)多次,那么對于這篇文章來說他肯定是關鍵詞刹碾。
第一步計算詞頻TF:
因為不同的文章長度不一樣燥撞,需要進行標準化:
然后第二步,計算逆文檔頻率迷帜。
如果一個詞越常見物舒,那么分母就越大,逆文檔頻率就越小越接近0戏锹。分母之所以要加1冠胯,是為了避免分母為0(即所有文檔都不包含該詞)。log表示對得到的值取對數(shù)锦针。
再計算TF-IDF值:
可以看到荠察,TF-IDF與一個詞在文檔中的出現(xiàn)次數(shù)成正比,與該詞在整個語言中的出現(xiàn)次數(shù)成反比奈搜。所以悉盆,自動提取關鍵詞的算法就很清楚了,就是計算出文檔的每個詞的TF-IDF值馋吗,然后按降序排列焕盟,取排在最前面的幾個詞。如此可以得出關鍵詞排名宏粤。
在得出給定物品內容的關鍵詞向量后京髓,物品的內容相似度可以通過向量之間的余弦相似度計算:
實際應用中,首先建立 關鍵詞-物品的倒排表商架。由此建立物品相似度矩陣。得出物品相似度以后芥玉,可以根據(jù)ItemCF思想給用戶推薦物品蛇摸。
可能我們會有疑惑,內容相似度能頻繁更新灿巧,而且能夠解決物品冷啟動問題赶袄,那么為什么還要用協(xié)同過濾算法?通過大量的實驗我們可以得出這樣一個結論:如果用戶的行為強烈受到某一內容屬性的影響抠藕,那么內容過濾的算法可以在精度上超過協(xié)同過濾饿肺,但是大多數(shù)情況下這種強的內容特征并不是所有物品都具備的,大多數(shù)情況下盾似,內容過濾的算法精度比協(xié)同過濾算法差敬辣。
向量空間模型在內容數(shù)據(jù)豐富的情況下可以獲得很好的效果,但是如果文本很短,關鍵詞很少溉跃,又或者是兩篇文章的關鍵詞不同村刨,但是所包含的意思很近,也即是話題相同撰茎。在這種情況下嵌牺,向量空間模型很難計算出準確的相似度。此時就要研究文章的話題分布龄糊,才能準確的計算出文章的相似度逆粹。
代表性的話題模型有LDA模型,關于LDA話題模型的講解請看如下鏈接:
LDA模型能將詞很好組成不同的話題炫惩,我們可以先計算物品在話題上的分布僻弹,然后利用兩個物品在話題分布計算物品的相似度。
發(fā)揮專家作用:利用專家(對物品進行標注诡必,在計算物品的相似度奢方。也即是人工辦法對物品進行標注分類,計算相似度爸舒。