3.1 冷啟動問題簡介
主要分三類:
1.用戶冷啟動:如何給新用戶做個性化推薦。
2.物品冷啟動:如何將新的物品推薦給可能對它感興趣的用戶這一問題。
3.系統冷啟動:如何在一個新開發的網站上設計個性化推薦系統。
解決方案:
1.提供非個性化的推薦:熱門排行榜,當用戶數據收集到一定的時候,再切換為個性化推薦
2.利用用戶注冊時提供的年齡、性別等數據做粗粒度的個性化
3.利用用戶的社交網絡帳號登錄,導入用戶在社交網站上的好友信息,然后給用戶推薦其好友喜歡的物品
4.要求用戶在登錄時對一些物品進行反饋,收集用戶對這些物品的興趣信息,然后給用戶推薦那些和這些物品相似的物品。
5.對於新加入的物品,可以利用內容信息,將它們推薦給喜歡過和它們相似的物品的用戶。
6.在系統冷啟動時,可以引入專家的知識,通過一定的高效方式迅速建立起物品的相關度表。
3.2 利用用戶注冊信息
用戶注冊信息:人口統計學信息、用戶興趣的描述、從其他網站導入的用戶站外行為數據
基於注冊信息的個性化推薦流程基本如下:
1.獲取注冊信息
2.根據用戶的注冊信息對用戶分類
3.給用戶推薦他所屬分類中用戶喜歡的物品
特征:性別、年齡、職業,也可以組合推薦。
基於用戶注冊信息的推薦算法其核心問題是計算每種特征的用戶喜歡的物品,也就是說,對於每種特征f,計算具有這種特征的用戶對各個物品的喜好程度p(f,i)。
p(f,i)是指物品i在具有f的特征的用戶中的熱門程度。
N(i)是喜歡物品i的用戶集合,U(f)是具有特征f的用戶集合。
在這種定義下,往往熱門的物品會在各種特征的用戶中都具有比較高的權重。也就是說具有比較高的|N(i)|的物品會在每一類用戶中都有比較高的p(f,i),但推薦系統應該幫助用戶發現他們不容易發現的物品。因此可以將p(f,i)定義為喜歡物品i的用戶中具有特征f的比例。
其中分母中使用alpha的目的是解決數據稀疏問題。比如有一個物品只被1個用戶喜歡過,而這個用戶剛好就有特征f,那么就有p(f,i)=1。但是這種情況並沒有統計意義,因此我們為分母加上一個比較大的數,可以避免這樣的物品產生比較大的權重。
有兩個推薦系統數據集包含了人口統計學信息,一個是BookCrossing數據集,一個是Last.fm數據集。
3.3 選擇合適的物品啟動用戶的興趣
解決用戶冷啟動的另一個方法是在新用戶第一次訪問推薦系統時,不立即給用戶展示推薦結果,而是給用戶提供一些物品,讓用戶反饋他們對這些物品的興趣,然后根據用戶反饋提供個性化推薦。
一般來說,能夠用來啟動用戶興趣的物品需要具有如下特征:
1.比較熱門:
2.具有代表性和區別分:不能是大眾化和老少咸宜的。
3.啟動物品集合需要有多樣性:
如何設計一個選擇啟動物品集合的系統:用一個決策樹解決問題
首先,給定一群用戶,用這群用戶對物品評分的方差度量這群用戶興趣的一致程度。如果方差很小,說明這一群用戶的興趣不太一致,也就是物品具有比較大的區分度,反之則說明這群用戶的興趣比較一致。
用如下方式度量一個物品的區分度D(i):
N+(i)是喜歡物品i的用戶集合,N-(i)是不喜歡物品i的用戶集合,第三個是沒有對物品i評分的用戶集合。
也就是說,對於物品i,將用戶分為3類——喜歡物品i的用戶,不喜歡物品i的用戶和不知道物品i的用戶。如果這3類用戶集合內的用戶對其他的物品興趣很不一致,說明物品i具有較高的區分度。
算法首先從所有用戶中找到具有最高區分度的物品i,然后將用戶分成3類。然后在每類用戶中再找到最具區分度的物品,然后將每一類用戶又各自分為3類,也就是將總用戶分為9類,然后繼續這樣下去,最終可以通過對一系列物品的看法將用戶進行分類。在冷啟動時,從根節點開始詢問用戶對該節點物品的看法,然后根據用戶的選擇將用戶放到不同的分枝,直到進入最后的葉子節點,此時對用戶的興趣有了比較清楚的了解,從而可以開始對用戶進行比較准確地個性化推薦。
3.4 利用物品的內容信息
UserCF
第一推動力:第一個用戶從哪發現新的物品
解決第一推動力的最簡單的方法:將新的物品隨機展示給用戶,但這樣不太個性化,因此可以考慮利用物品的內容信息,將新物品先投放給曾經喜歡過和它內容相似的其他物品的用戶。
ItemCF
每隔一段時間利用用戶行為計算物品相似度表,並把計算好的物品相關度矩陣放在內存中。新物品加入時,內存中沒有這個物品,因此無法推薦。
為此,只能利用物品的內容信息計算物品相關表,並頻繁更新相關表。
一般來說,物品的內容可以通過向量空間模型表示,該模型會將物品表示成一個關鍵詞向量。如果物品的內容是一些諸如導演、演員等實體,可以將這些實體作為關鍵詞。
對於中文,首先要對文本進行分詞,將字流變成詞流,然后從詞流中檢測出命名實體,這些實體和一些其他重要的詞將組成關鍵詞集合,最后對關鍵詞進行排名,計算每個關鍵詞的權重,從而生成關鍵詞向量。
文本---->分詞---->實體檢測---->關鍵詞排名---->關鍵詞向量
對於物品d,它的內容表示成一個關鍵詞向量如下:
di={(e1,w1),(e2,w2)..}
其中,ei就是關鍵詞,wi是關鍵詞對應的權重。如果物品是文本,可以用信息檢索的TF-IDF計算權重;如果物品是電影,可以根據演員在劇中的重要程度賦予他們權重。
在給定關鍵詞向量后,物品的內容相似度可以通過向量之間的余弦相似度計算:
內容過濾算法忽視了用戶行為,從而也忽視了物品的流行度以及用戶行為中所包含的規律,所以它的精度比較低,但結果的新穎性比較高。
如果用戶的行為強烈受某一內容屬性的影響,那么內容過濾的算法還是可以在精度上超過協同過濾算法的。不過這種強的內容特征不是所有物品都具有的,而且需要豐富的領域知識才能獲得,所有很多時候內容過濾算法的精度比協同過濾算法差。
但,如果能夠將兩種算法融合,一定能夠獲得比單獨使用這兩種算法更好的效果。
向量空間模型在內容數據豐富時可以獲得比較好的結果,如果文本很短,關鍵詞很少,向量空間模型就很難計算出准確的相似度。
如何建立文章、話題和關鍵詞的關系是話題模型研究的重點。
話題模型的基本思想:一個人在寫一篇文檔的時候,會首 先想這篇文章要討論哪些話題,然后思考這些話題應該用什么詞描述,從而最終用詞寫成一篇文章。因此,文章和詞之間是通過話題聯系的。
LDA中有三種元素,即文檔、話題和詞語。每一篇文檔都會表現為詞的集合,這稱為詞代模型。每個詞在一篇文章中屬於一個話題。令D為文檔集合,D[i]是第i篇文檔。w[i][j]是第i篇文檔中的第j個詞。z[i][j]是第i篇文檔中第j個詞屬於的話題。
LDA的計算過程包括初始化和迭代兩部分。首先要對z進行初始化,而初始化很簡單,假設一共有K個話題,那么對第i篇文章中的第j個詞,可以隨機給它賦予一個話題。同時,用NWZ(w,z)記錄詞w被賦予話題z人次數,NZD(z,d)記錄文檔d中被賦予話題z的詞的個數。
在初始化之后,要通過迭代使話題的分布收斂到一個合理的分布上去。
在使用LDA計算物品內容相似度時,我們可以先計算出物品在話題上的分布,然后利用兩個物品的話題分布計算物品的相似度。比如,如果兩個物品的話題分布相似,則認為兩個物品具有較高的相似度,反之則認為兩個物品的相似度較低。計算分布的相似度可以用KL散度:
其中p和q是兩個分布,KL散度越大說明分布的相似度越低。