1. 程式人生 > >《推薦系統實踐》第三章 推薦系統冷啟動問題

《推薦系統實踐》第三章 推薦系統冷啟動問題

3.1 冷啟動問題簡介

冷啟動問題(cold start)主要分3類。

(1)使用者冷啟動:使用者冷啟動主要解決如何給新使用者做個性化推薦的問題。

(2)物品冷啟動:物品冷啟動主要解決如何將新的物品推薦給可能對它感興趣的使用者這一問題。

(3)系統冷啟動:系統冷啟動主要解決如何在一個新開發的網站上(還沒有使用者,也沒有使用者行為,只有一些物品的資訊)設計個性化推薦系統,從而在網站剛釋出時就讓使用者體驗到個性化推薦服務這一問題。

一般來說,可以參考如下解決方案。

(1)提供非個性化的推薦:非個性化推薦的最簡單例子就是熱門排行榜。

(2)利用使用者註冊時提供的年齡、性別等資料做粗粒度的個性化。

(3)利用使用者的社交網路賬號登入(需要使用者授權),匯入使用者在社交網站上的好友資訊,然後給使用者推薦其好友喜歡的物品。

(4)要求使用者在登入時對一些物品進行反饋,收集使用者對這些物品的興趣資訊,然後給使用者推薦那些和這些物品相似的物品。

(5)對於新加入的物品,可以利用內容資訊,將它們推薦給喜歡過和它們相似的物品的使用者。

(6)在系統冷啟動時,可以引入專家的知識,通過一定的高效方式迅速建立起物品的相關度表。

3.2 利用使用者註冊資訊

使用者的註冊資訊分3種。

a、人口統計學資訊:包括使用者的年齡、性別、職業、民族、學歷和居住地。

b、使用者興趣的描述:有一些網站會讓使用者用文字描述他們的興趣。

c、從其他網站匯入的使用者站外行為資料

基於註冊資訊的個性化推薦流程基本如下:

(1) 獲取使用者的註冊資訊;

(2) 根據使用者的註冊資訊對使用者分類;

(3) 給使用者推薦他所屬分類中使用者喜歡的物品。

基於使用者註冊資訊的推薦演算法其核心問題是計算每種特徵的使用者喜歡的物品。也就是說,對於每種特徵f,計算具有這種特徵的使用者對各個物品的喜好程度p(f, i)。

p( f ,i)可以簡單地定義為物品i在具有f的特徵的使用者中的熱門程度:

,其中N(i)是喜歡物品i的使用者集合,U( f ) 是具有特徵f的使用者集合。

為了消減熱門物品的影響,我們可以將p( f ,i)定義為喜歡物品i的使用者中具有特徵f的比例:

\alpha的目的是解決資料稀疏問題。

我們按照不同的粒度給使用者分類,對比了4種不同的演算法。

(1)MostPopular:給使用者推薦最熱門的歌手。

(2)GenderMostPopular:給使用者推薦對於和他同性別的使用者最熱門的歌手,這裡我們將使用者分成男女兩類。

(3)AgeMostPopular:給使用者推薦對於和他同一個年齡段的使用者最熱門的歌手,這裡我們將10歲作為一個年齡段,將使用者按照不同的年齡段分類。

(4)CountryMostPopular:給使用者推薦對於和他同一個國家的使用者最熱門的歌手。

(5)DemographicMostPopular:給使用者推薦對於和他同性別、年齡段、國家的使用者最熱門的歌手。

結果顯示:利用的使用者人口統計學特徵越多,越能準確地預測使用者興趣。

DemographicMostPopular > CountryMostPopular > AgeMostPopular > GenderMostPopular > MostPopular

3.3 選擇合適的物品啟動使用者的興趣

對於這些通過讓使用者對物品進行評分來收集使用者興趣,從而對使用者進行冷啟動的系統,它們需要解決的首要問題就是如何選擇物品讓使用者進行反饋。

能夠用來啟動使用者興趣的物品需要具有以下特點。

(1)比較熱門:如果要讓使用者對一個物品進行反饋,前提是使用者知道這個物品是什麼東西。

(2)具有代表性和區分性:啟動使用者興趣的物品不能是大眾化或老少咸宜的,因為這樣的物品對使用者的興趣沒有區分性。

(3)啟動物品集合需要有多樣性:在冷啟動時,我們不知道使用者的興趣,而使用者興趣的可能性非常多,為了匹配多樣的興趣,我們需要提供具有很高覆蓋率的啟動物品集合,這些物品能覆蓋幾乎所有主流的使用者興趣。

如何設計一個選擇啟動物品集合的系統呢?可以用一個決策樹解決這個問題。(參考文獻:“ Adaptive Bootstrapping of Recommender Systems Using Decision Trees”,下載地址為 http://research.yahoo.com/pub/3502)

給定一群使用者,用這群使用者對物品評分的方差度量這群使用者興趣的一致程度。如果方差很大,說明這一群使用者的興趣不太一致,反之則說明這群使用者的興趣比較一致。通過如下方式度量一個物品的區分度D(i):

其中,N^{+}(i)是喜歡物品i的使用者集合,N^{-}(i)是不喜歡物品i的使用者集合,N(i)是沒有對物品i評分的使用者集合。

如果這3類使用者集合內的使用者對其他的物品興趣很不一致,說明物品i具有較高的區分度。

首先會從所有使用者中找到具有最高區分度的物品i,然後將使用者分成3類。然後在每類使用者中再找到最具區分度的物品,然後將每一類使用者又各自分為3類,也就是將總使用者分成9類,然後這樣繼續下去,最終可以通過對一系列物品的看法將使用者進行分類。而在冷啟動時,我們從根節點開始詢問使用者對該節點物品的看法,然後根據使用者的選擇將使用者放到不同的分枝,直到進入最後的葉子節點。

3.4 利用物品的內容資訊

UserCF演算法對物品冷啟動問題並不非常敏感。UserCF演算法就需要解決第一推動力的問題,即第一個使用者從哪兒發現新的物品。只要有一小部分人能夠發現並喜歡新的物品,UserCF演算法就能將這些物品擴散到更多的使用者中。解決第一推動力最簡單的方法是將新的物品隨機展示給使用者,但這樣顯然不太個性化,因此可以考慮利用物品的內容資訊,將新物品先投放給曾經喜歡過和它內容相似的其他物品的使用者。

對於ItemCF演算法來說,物品冷啟動就是一個嚴重的問題了。我們只能利用物品的內容資訊計算物品相關表,並且頻繁地更新相關表(比如半小時計算一次)。

一般來說,物品的內容可以通過向量空間模型表示,該模型會將物品表示成一個關鍵詞向量。

在給定物品內容的關鍵詞向量後,物品的內容相似度可以通過向量之間的餘弦相似度計算:

在具體計算物品之間的內容相似度時,最簡單的方法當然是對兩兩物品都利用上面的餘弦相似度公式計算相似度,但這種演算法的時間複雜度很高。可以首先通過建立關鍵詞—物品的倒排表加速這一計算過程。

從MovieLens資料集上的結果可以發現,ContentItemKNN的準確率和召回率僅僅優於Random演算法,明顯差於ItemCF演算法,甚至比MostPopular演算法還要差。不過在覆蓋率和流行度指標上ContentItemKNN卻優於ItemCF。這主要是因為內容過濾演算法忽視了使用者行為,從而也忽視了物品的流行度以及使用者行為中所包含的規律,所以它的精度比較低,但結果的新穎度卻比較高。

如果看GitHub資料集的結果,我們會發現完全相反的現象——ContentItemKNN在所有指標上都優於ItemCF。這主要是因為GitHub提供了一個非常強的內容特徵,就是開源專案的作者。

如果使用者的行為強烈受某一內容屬性的影響,那麼內容過濾的演算法還是可以在精度上超過協同過濾演算法的。

3.5 發揮專家的作用

為了在推薦系統建立時就讓使用者得到比較好的體驗,很多系統都利用專家進行標註。這方面的代表系統是個性化網路電臺Pandora和電影推薦網站Jinni。