1. 程式人生 > >推薦系統實戰——冷啟動問題

推薦系統實戰——冷啟動問題

一、冷啟動問題介紹

如何在沒有大量使用者資料的情況下設計個性化推薦系統並讓使用者對推薦結果滿意從而願意使用推薦系統,就是冷啟動問題。

  • 使用者冷啟動:如何給新使用者做個性化推薦
  • 物品冷啟動:如何將新物品推薦給可能對其感興趣的使用者。在新聞網站等時效性很強的網站中非常重要。
  • 系統冷啟動:如何在一個新開發的網站上設計個性化推薦,從而在網站剛釋出時就讓使用者體驗到個性化推薦服務。沒有使用者,只有一些物品資訊。

解決冷啟動問題方法概述:

  • 提供非個性化的推薦
  • 利用使用者註冊時提供的年齡、性別等資料做粗粒度的個性化。
  • 利用社交賬號登入(需要使用者授權),匯入使用者在社交網路上的好友資訊,然後給使用者推薦其好友喜歡的物品。
  • 要求使用者在登入時對一些物品進行反饋,蒐集使用者對這些物品的興趣資訊,然後給使用者推薦那些和這些物品相似的物品。
  • 對於新加入的物品,可以利用內容資訊,將它們推薦給喜歡過和他們相似物品的使用者。(沒有購買記錄,如何判斷物品相似)
  • 推薦系統冷啟動時,引入專家的知識,通過一定的高效方式迅速建立起物品的相關度表。

     

二、使用者冷啟動

使用者註冊時附帶資訊:

  • 人口統計學資訊:包括使用者的年齡、性別、職業、民族、學歷和居住地;
  • 使用者興趣的描述:有一些網站會讓使用者用文字或用區域選擇來描述他們的興趣;
  • 從其他網站匯入的使用者站外行為資料:比如使用者通過豆瓣、新浪微博的賬號登入,就可以在得到使用者同意的情況下獲取使用者在豆瓣或者新浪微博的一些行為資料和社交網路資料。

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

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

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

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

(4) 若無法找到合適的物品,推薦熱門排行榜。

注:該方法中需要統計物品對分類的熱門程度,通過如下公式:

Pf,i = |N(i) U(f)| (期中N(i)是喜歡物品的使用者集合,U(f) 是具有某種特徵的使用者集合

)

這種方法對熱門商品的熱門程度往往比較大,在分母中增加一項: |N(i) + α|

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

解決使用者冷啟動問題的另一個方法是在新使用者第一次訪問推薦系統時,不立即給使用者展示推薦結果,而是給使用者提供一些物品,讓使用者反饋他們對這些物品的興趣,然後根據使用者反饋給提供個性化推薦。

一般來說,能夠用來啟動使用者興趣的物品需要具有以下特點:

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

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

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

 

 

三、物品冷啟動

    物品冷啟動需要解決的問題是如何將新加入的物品推薦給對它感興趣的使用者,這時候可以通過物品之間的語義來計算其相似度,常用的演算法有cos相似度和TF-IDF

物品冷啟動在新聞網站等時效性很強的網站中非常重要,因為那些網站中時時刻刻都有新加入的物品,而且每個物品必須能夠在第一時間展現給使用者,否則經過一段時間後,物品的價值就大大降低了。

之前我們介紹了UserCF演算法和ItemCF演算法。UserCF演算法並不對新物品很敏感,在很多網站中,推薦列表並不是給使用者展示物品的唯一列表。當一個使用者在某個地方發現了新加的物品並對其進行了反饋。通過UserCF演算法給類似具有相同興趣的使用者推薦這個物品。這樣新加的物品就會源源不斷的擴散開來。

但是有些網站中推薦列表就是使用者獲取新加物品唯一的或者是主要途徑。這時就要解決第一推動力的問題。也即是第一個使用者在哪發現新加物品的問題。解決這個問題的最簡單的辦法就是將新加的物品隨機的展示給使用者,但是這樣做顯然並不個性化。因此可以考慮利用物品內容資訊,將新物品投放給曾經喜歡過和他類似內容的其他物品的使用者,這類似於ItemCF思想。不過這是先通過ItemCF找到一個可能對物品感興趣的使用者,然後再通過USerCF推薦給與此使用者興趣類似的其他使用者。

如果用ItemCF演算法解決物品冷啟動問題,就有點麻煩了,因為ItemCF通過使用者行為對物品進行相似度的計算,形成物品相似度矩陣。再根據這個相似度矩陣把物品推薦給喜歡過類似這個物品的使用者。這個物品相似度矩陣是線下計算好,線上放進記憶體。從而新物品不會出現在物品相似度矩陣中。解決的辦法是頻繁的更新相似度矩陣。這是一件非常耗時的事情。為此我們只能通過物品內容來計算物品相似度矩陣。

這裡涉及到物品相似度的計算,和ItemCf中物品相似度計算不同的是,對於新物品這裡並沒有使用者資料,所以一般通過物品內容計算相似度。

一般來說,物品的內容可以用向量空間模型表示,該模型會把物品表示成一個關鍵詞向量。對於物品d,他的內容表示成一個關鍵詞向量如下: 
 
其中e是關鍵詞,w是這個詞對於權重,其中w的計算公式就是著名的TF-IDF公式,該公式的計算見後文中具體介紹。 

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

《推薦系統實戰》中具體比較了內容過濾演算法和協同過濾演算法在推薦系統中的實際效果(有準確率、召回率、覆蓋率等資料)。

 

補充: TF-IDF計算方法

主要思想是:如果某個詞或短語在一篇文章中出現的頻率TF高,並且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。

TFIDF實際上是:

TF詞頻(Term Frequency):表示詞條在文件d中出現的頻率

IDF逆向檔案頻率(Inverse Document Frequency):如果包含詞條t的文件越少,也就是n越小,IDF越大,則說明詞條t具有很好的類別區分能力。

因為不同的文章長度不一樣,需要進行標準化:

IDF計算公式:

TF-IDF值:

參考:

https://baike.baidu.com/item/tf-idf/8816134?fr=aladdin