【推薦系統系列3】推薦系統中如何解決冷啓動


0、前言

推薦系統需要根據用戶的歷史行爲和興趣來預測用戶未來的行爲和興趣,因此大量的用戶行爲數據就稱爲了推薦系統的重要組成部門和先決條件。但是,很多個性化推薦系統的網站從開始就沒有這些用戶行爲數據,所以如何在沒有大量用戶行爲數據的情況下進行個性化推薦並且讓用戶對推薦的結果感到滿意,這就是冷啓動問題。

1、冷啓動問題分類和解決方法

冷啓動問題主要分三類:

  1. 用戶冷啓動 
    用戶冷啓動主要解決如何給一個新的用戶做個性化推薦。當一個新用戶(新註冊的)到來時,我們沒有他的歷史行爲數據,所以無法根據他的歷史行爲去預測他的興趣,從而無法去做個性化推薦。
  2. 物品冷啓動 
    物品冷啓動主要解決如何將新的物品推薦給可能對其感興趣的用戶。
  3. 系統冷啓動 
    系統冷啓動主要解決如何在一個新開發的網站上設計個性化推薦,從而使得網站剛發佈的時候就讓用戶體驗到個性化服務。

主要解決方法:

  1. 提供非個性化推薦,最簡單例子就是熱門排行榜推薦,先給用戶推薦熱門的物品,然後等到用戶數據收集到一定的時候再進行個性化推薦。
  2. 利用用戶註冊提供的年齡性別等做粗粒度的個性化推薦。
  3. 利用用戶的社交賬號登錄,獲取用戶在社交網站上的好友信息,然後根據好友喜歡的物品給用戶做推薦。
  4. 要求用戶在登錄的時候對一些物品的反饋,收集用戶對這些物品的興趣信息,然後給用戶做推薦。
  5. 對於新物品,可以利用物品的內容信息,將它們推薦給喜歡過和該物品相似物品的用戶。

2、冷啓動問題具體解決方法

  1. 利用用戶註冊信息 
    在推薦系統網站中,當一個新用戶註冊時,我們不知道他喜歡什麼樣的物品,於是只能給他推薦一些熱門的物品。但如果我們知道她是一位女性的話,可以給她推薦女性喜歡的熱門物品。其實這也是一種個性化推薦,只不過這種推薦的粒度很粗,當時相對於什麼都不區分的推薦來說,這種推薦結果已經很好了。因此,利用用戶的註冊信息可以很好的解決新用戶冷啓動問題。

    用戶的註冊信息可以分三種: 
    (1)人口統計學信息:包括用戶的年齡、性別、職業、民族、學歷等。 
    (2)用戶興趣的描述:有一些網站會讓用戶用文字描述他們的興趣。 
    (3)從其他網站導入的用戶站外行爲數據:比如用戶通過豆瓣、新浪微博的賬號登錄,就可以在得到用戶同意的情況下獲取用戶在豆瓣或新浪微博上的一些歷史行爲數據和社交網絡數據。

    基於用戶註冊信息的個性化推薦流程基本如下: 
    (1)獲取用戶的註冊信息 
    (2)根據用戶的註冊信息對用戶分類 
    (3)給用戶推薦他所屬分類中用戶喜歡的物品

    舉例說明:假設一個新用戶註冊,首先獲取他的用戶信息,比如他是一個24歲的男性,是一個研二學生。然後查詢三張離線計算好的相關表:性別-電影相關表,年齡-電影相關表,職業-電影相關表,從這三張表中查詢出所有的電影然後按照一定的權重相加,給用戶返回推薦列表。 
    (實際應用中還可以考慮組合特徵)。

  2. 選擇合適的物品啓動用戶的興趣 
    解決用戶冷啓動問題的另一個方法是在新用戶第一次訪問推薦系統時,不立即給用戶展示推薦結果,而是給用戶提供一些物品,讓用戶反饋他們對這些物品的興趣,然後根據這些用戶反饋給用戶提供個性化推薦。很多的推薦系統採取了這種方式來解決用戶冷啓動問題。

    對於這些通過用戶給物品的反饋來收集用戶興趣,從而對用戶進行推薦,他們需要解決的首要問題就是如何選擇物品讓用戶進行反饋。(一般這種情況下,會影響用戶的體驗感)

    一般來說,能夠用來啓動用戶興趣的物品需要具有以下特點: 
    (1)比較熱門:如果要讓用戶對一個物品反饋,前提是用戶知道這個物品時什麼?以電影爲例,如果一開始讓用戶進行反饋的電影都很冷門,而用戶不知道這些電影的情節和內容,也就無法對它們做出準確的反饋。 
    (2)具有代表性和區分性:啓動用戶興趣的物品不能是大衆化或者流行度很高的,因爲這樣的物品對用戶沒有區分性。比如,有一部電影票房很高很受大家歡迎,這樣的電影幾乎所有的用戶都會喜歡,因而無法區分用戶的興趣。 
    (3)啓動物品集合需要多樣性:在冷啓動時,我們不知道用戶的興趣,而用戶的興趣和廣泛,可能非常多,爲了匹配多樣的興趣,我們需要提供具有很高的覆蓋率的啓動物品集合。

  3. 利用物品的內容信息 
    物品冷啓動需要解決的問題是如何將新加入的物品推薦給對它感興趣的用戶。物品冷啓動在新聞網站等時效性很強的網站中非常重要,因爲那些網站中時時刻刻都有新加入的物品,而且每個物品必須能夠在第一時間展現給用戶,否則一段時間後物品的價值就大大降低了。

    在前篇博客中提到兩種推薦算法,UserCF和ItemCF。實際上,UserCF對物品冷啓動問題不是非常敏感。UserCF在給用戶推薦時,會首先找到和用戶興趣相似的一羣用戶,然後給用戶推薦這一羣用戶喜歡的物品。所以,當一個新物品加入時,總會有一些用戶通過某種途徑看到過新物品。

    但是,有些網站中推薦列表是用戶獲取信息的主要途徑,比如豆瓣網絡電臺。那麼對於UserCF算法就需要解決第一個用戶從哪兒發現了這個新的物品。只要有用戶發現並喜歡新的物品,那麼UserCF就能將這些物品擴散到更多的用戶。解決這個問題的最簡單的方法就是將新的物品隨機展示給用戶,但是這樣顯然不太個性化,因此可以考慮利用物品的內容信息,將物品先投放給曾經喜歡過和它內容相似的其他物品的用戶。 
    而對於ItemCF來說,物品的冷啓動就是一個嚴重的問題。ItemCF算法的原理是給用戶推薦他之前喜歡的物品相似的物品,ItemCF每隔一段時間就很利用用戶的行爲數據計算物品的相似度表。因此,當一個新物品加入時,無法推薦新的物品。爲此,可以利用物品內容信息計算物品的相關表,並更新相關表。

    常見的物品信息:物品的內容信息多重多樣,不同類型的物品也會有不同的內容信息。例如電影,內容信息一般有標題、導演、演員、國家、年代、還有電影介紹等;例如圖書,內容信息一般包括標題、作者、出版社等。

    物品的內容信息可以通過向量空間模型表示,該模型將物品表示成一個關鍵詞向量,如果是文本可以通過關鍵詞抽取計算權重(TF-IDF)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章