1. 程式人生 > >推薦系統實戰

推薦系統實戰

什麼是好的推薦系統

  • 推薦系統和搜尋引擎對於使用者來說是兩個互補的工具。搜尋引擎滿足了使用者有明確目的時的主動 查詢需求,而推薦系統能夠在使用者沒有明確目的的時候幫助他們發現感興趣的新內容。
  • 推薦系統是為了解決資訊過載而推出的
  • 推薦系統的任務就是聯絡使用者和資訊,一方面幫助使用者發現對自己 有價值的資訊,另一方面讓資訊能夠展現在對它感興趣的使用者面前,從而實現資訊消費者和資訊 生產者的雙贏
  • 主流商品往往代表了絕大多數使用者的需求,而長尾商品往往代表了一小部分使用者的個性化需求。因此,如果要通過發掘長尾提高銷售額,就必須充分研究使用者的興趣,而這正是 個性化推薦系統主要解決的問題。
  • 推薦系統通過發掘使用者的行為,找到使用者的個性化需求,從而 將長尾商品準確地推薦給需要它的使用者,幫助使用者發現那些他們感興趣但很難發現的商品。
  • 推薦系統包括社會化推薦(social recommendation),即讓好 友給自己推薦物品。基於內容的推薦 (content-based filtering),。這種方式稱為基於協同過濾(collaborative filtering) 的推薦。
  • 推薦演算法的本質是通過一定的方式將使用者和物品聯絡起來
  • 首先,推薦系統需要滿足使用者的需求;其次,推薦系統要 讓各出版社的書都能夠被推薦給對其感興趣的使用者;好的推薦系統設計,能夠讓推薦系統本身收集到高質量的使用者反饋,不斷完善推薦的質量,增加 使用者和網站的互動,提高網站的收入
  • 好的推薦系統不僅僅能夠準確預測使用者的行為,而且能夠擴充套件使用者的視野,幫助使用者 發現那些他們可能會感興趣,但卻不那麼容易發現的東西。同時,推薦系統還要能夠幫助商家將 那些被埋沒在長尾中的好商品介紹給可能會對它們感興趣的使用者
  • 好的推薦系統不僅僅能夠準確預測使用者的行為,而且能夠擴充套件使用者的視野,幫助使用者 發現那些他們可能會感興趣,但卻不那麼容易發現的東西。同時,推薦系統還要能夠幫助商家將 那些被埋沒在長尾中的好商品介紹給可能會對它們感興趣的使用者
  • 推薦系統的評測指標包括包括準確度、覆蓋度、新穎度、驚喜度、信任度、透明度等。
  • 在推薦系統 中,主要有3種評測推薦效果的實驗方法,即離線實驗(offline experiment)、使用者調查(user study) 和線上實驗(online experiment)

UserCF與ItemCF

  • UserCF
    這裡寫圖片描述
  • ItemCF
    這裡寫圖片描述

  • K是影響準確率的重要因素

  • UserCF的使用不及ItemCF流行
  • K越大,兩者的覆蓋率均降低
  • K越大,UserCF流行度降低而ItemCF則不一定
  • UserCF的推薦更社會化,反映了使用者所在的 小型興趣群體中物品的熱門程度,而ItemCF的推薦更加個性化,反映了使用者自己的興趣傳承。
  • UserCF比較適合個性化新聞推薦,UserCF可以給使用者推薦和他有相似愛好的一群其他使用者今天都在看的新聞,這樣在抓住熱 點和時效性的同時,保證了一定程度的個性化。
  • 從技術上考慮,UserCF需要維護一個使用者相似度的矩陣,而ItemCF需要維護一個物品 相似度矩陣。從儲存的角度說,如果使用者很多,那麼維護使用者興趣相似度矩陣需要很大的空間, 同理,如果物品很多,那麼維護物品相似度矩陣代價較大。
    這裡寫圖片描述

LFM隱語義模型

  • 在LFM中,重要的引數有4個:  隱特徵的個數F;  學習速率alpha;  正則化引數lambda;  負樣本/正樣本比例 ratio。 通過實驗發現,ratio引數對LFM的效能影響最大
  • 使用者相關表,則需要O(M*M)的空間,而對於物品相關表,則需要O(N*N)的空 間。而LFM在建模過程中,如果是F個隱類,那麼它需要的儲存空間是O(F*(M+N)),這在 M和N很大時可以很好地節省離線計算的記憶體
  • 在一般情況下,LFM的時間複雜度要 稍微高於UserCF和ItemCF,這主要是因為該演算法需要多次迭代。但總體上,這兩種演算法 在時間複雜度上沒有質的差別。
  • LFM不 能進行線上實時推薦,ItemCF演算法支援很好的推薦解釋,它可以利用使用者的歷史行為解釋推薦結果。 但LFM無法提供這樣的解釋,它計算出的隱類雖然在語義上確實代表了一類興趣和物品, 卻很難用自然語言描述並生成解釋展現給使用者
    這裡寫圖片描述

冷啟動問題

  • 如何在沒有 大量使用者資料的情況下設計個性化推薦系統並且讓使用者對推薦結果滿意從而願意使用推薦系統, 就是冷啟動的問題。
  • 冷啟動問題(cold start)主要分3類:
    (1) 使用者冷啟動 使用者冷啟動主要解決如何給新使用者做個性化推薦的問題。 當新使用者到來時, 我們沒有他的行為資料,所以也無法根據他的歷史行為預測其興趣,從而無法藉此給他 做個性化推薦。
    (2) 物品冷啟動 物品冷啟動主要解決如何將新的物品推薦給可能對它感興趣的使用者這一問題。
    (3) 系統冷啟動 系統冷啟動主要解決如何在一個新開發的網站上(還沒有使用者,也沒有用 戶行為,只有一些物品的資訊)設計個性化推薦系統,從而在網站剛釋出時就讓使用者體 驗到個性化推薦服務這一問題。

  • 對於這3種不同的冷啟動問題,有不同的解決方案。一般來說,可以參考如下解決方案:
    (1)提供非個性化的推薦 非個性化推薦的最簡單例子就是熱門排行榜,我們可以給使用者推 薦熱門排行榜,然後等到使用者資料收集到一定的時候,再切換為個性化推薦。
    (2) 利用使用者註冊時提供的年齡、性別等資料做粗粒度的個性化。  利用使用者的社交網路賬號登入(需要使用者授權),匯入使用者在社交網站上的好友資訊,然 後給使用者推薦其好友喜歡的物品。
    (3) 要求使用者在登入時對一些物品進行反饋,收集使用者對這些物品的興趣資訊,然後給使用者 推薦那些和這些物品相似的物品。 一般情況下,這些物品的特點是:a、比較熱門 b、具有代表性和區分性才c、啟動物品集合需要有多樣性。(其中Nadav Golbandi的演算法首先會從所有使用者中找到具有最高區分度的物品i,然後將使用者分成3 類。然後在每類使用者中再找到最具區分度的物品,然後將每一類使用者又各自分為3類,也就是將 總使用者分成9類,然後這樣繼續下去,最終可以通過對一系列物品的看法將使用者進行分類。而在 冷啟動時,我們從根節點開始詢問使用者對該節點物品的看法,然後根據使用者的選擇將使用者放到不 同的分枝,直到進入最後的葉子節點,此時我們就已經對使用者的興趣有了比較清楚的瞭解,從而 可以開始對使用者進行比較準確地個性化推薦。 )
    (4) 對於新加入的物品,可以利用內容資訊,將它們推薦給喜歡過和它們相似的物品的使用者。 UserCF算 法對物品冷啟動問題並不非常敏感。當一個新物品加入時,總會有使用者從某些途徑看到這些物品,對這 些物品產生反饋。那麼,當一個使用者對某個物品產生反饋後,和他歷史興趣相似的其他使用者的推 薦列表中就有可能出現這一物品,從而更多的人就會對這個物品產生反饋,解決第一推動力 最簡單的方法是將新的物品隨機展示給使用者,但這樣顯然不太個性化,因此可以考慮利用物品的 內容資訊,將新物品先投放給曾經喜歡過和它內容相似的其他物品的使用者;對於ItemCF演算法來說,物品冷啟動就是一個嚴重的問題了。因為ItemCF演算法的原理是給使用者 推薦和他之前喜歡的物品相似的物品。ItemCF演算法會每隔一段時間利用使用者行為計算物品相似度 表(一般一天計算一次),線上服務時ItemCF演算法會將之前計算好的物品相關度矩陣放在記憶體中。 因此,當新物品加入時,記憶體中的物品相關表中不會存在這個物品,從而ItemCF演算法無法推薦新 的物品。解決這一問題的辦法是頻繁更新物品相似度表,但基於使用者行為計算物品相似度是非常 耗時的事情,主要原因是使用者行為日誌非常龐大。而且,新物品如果不展示給使用者,使用者就無法 對它產生行為,通過行為日誌計算是計算不出包含新物品的相關矩陣的。為此,我們只能利用物 品的內容資訊計算物品相關表,並且頻繁地更新相關表(比如半小時計算一次)。
    (5) 在系統冷啟動時,可以引入專家的知識,通過一定的高效方式迅速建立起物品的相關度表。

使用者標籤資料

  • 根據給物品打標籤的人的不同,標籤應用一般分為兩種:一種是讓作者或者專 家給物品打標籤;另一種是讓普通使用者給物品打標籤
  • 標籤系統中的推薦問題主要有以下兩個:
    (1)如何利用使用者打標籤的行為為其推薦物品(基於標籤的推薦)
    (2)如何在使用者給物品打標籤時為其推薦適合該物品的標籤(標籤推薦)
  • 基於標籤的推薦:
    這裡寫圖片描述
  • 標籤稀疏性的問題,存在標籤過少影響推薦的情況。可以加入與已有標籤類似的標籤,標籤相似度的度量方法:
    這裡寫圖片描述
  • 標籤的推薦:
    第0種方法就是給使用者u推薦整個系統裡最熱門的標籤;
    第1種方法就是給使用者u推薦物品i上最熱門的標籤;
    第2種方法是給使用者u推薦他自己經常使用的標籤;
    第3種演算法是前面兩種的融合;