1. 程式人生 > >四個方面總結個性化推薦系統

四個方面總結個性化推薦系統

大部分人都聽說過個性化推薦,那麼個性化推薦系統到底是怎麼樣的呢?最近做了一點總結。

 

現在的人們面對資訊過載問題日益嚴重,個性化推薦將能夠很好的提升使用者體驗,提高使用者使用產品完成任務的效率,更好的留住使用者,進一步擴大產品的盈利。

對於一些電商類的產品,個性化推薦也能幫助減少馬太效應和長尾效應的影響,使商品的利用率更高,盈利增長。

【注】

馬太效應:產品中熱門的東西會被更多人看到,熱門的東西會變得更加熱門,而冷門的東西更加冷門。

長尾理論:某些條件下,需求和銷量不高的產品所佔據的市場份額,可以和主流產品的市場份額相比。

對於推薦系統的解釋分為4部分

一、常見的推薦演算法原理(時間、位置影響)

目前常見的一些推薦如下:

  1. 基於內容推薦:分析使用者看過的內容(歷史內容等 )再進行推薦。
  2. 基於使用者的協同過濾推薦(UserCF):給使用者推薦和他興趣相似的其它使用者喜歡的物品。
  3. 基於物品的協同過濾推薦(ItemCF):給使用者推薦和他之前喜歡的物品相似的物品。
  4. 基於標籤的推薦:內容有標籤,使用者也會因為使用者行為被打上標籤,通過給使用者打標籤或是使用者給產品打標籤為其推薦物品。
  5. 隱語義模型推薦(LFM):通過隱含特徵推薦和使用者興趣匹配的物品。
  6. 社會化推薦:讓好友給自己推薦物品。
  7. 根據時間上下文推薦:利用使用者訪問產品的時間優化推薦演算法,或是根據季節性時令性變化進行推薦。(如春節推薦春節相關物品)
  8. 基於地理位置的推薦(LARS):根據使用者的地理位置進行推薦。

其中比較常見的就是前4種推薦,7、8實際上是在基本的推薦演算法上加上了一層根據時間和位置的加權篩選。

各種推薦演算法是可以疊加在一起的,根據不同演算法的權重調整,給使用者最為精準智慧的推薦。

(一)、基於內容的推薦

基於內容的推薦是基礎的推薦策略。如果你瀏覽或購買過某種型別的內容,則給你推薦這種型別下的其他內容。

基於內容的推薦好處在於易於理解,但不足在於推薦不夠智慧,多樣性和新穎性不足。

比如下圖中使用者某一天想買的是單反,但購買單反不是一個頻繁的行為,且買的是高階單反,那麼接下來給使用者推薦的全是高階單反,推薦的轉化率就會低很多。

又或者是根據瀏覽歷史推薦,但假如我已經買過了該物品,再給我推薦,重複購買的可能性會低很多。

(二)、基於使用者的協同過濾演算法:

基於使用者的協同過濾(UserCF)演算法,通過使用者對不同內容的行為,來評測使用者之間的相似性,基於使用者之間的相似性做出推薦。這部分推薦本質上是給使用者推薦和他相似的人感興趣的東西。

比如你曾經喜歡(多次觀看)的電影都是科幻類的電影,如異形,終結者、星球大戰等,通過資料分析我找到了和你一樣看過異形,終結者,星球大戰的人,我發現他還經常看復仇者聯盟的電

影,那麼我則可以推薦你很有可能也會喜歡看復仇者聯盟,那麼我就可以向你推薦復仇者聯盟。

以下對UserCF進行比較詳細的說明,其餘的演算法會類似:

  • 用 N(u)表示使用者u曾經有過正反饋的物品集合
  • 用N(v)表示使用者v曾經有過正反饋的物品集合

用jaccard公式表示u和v的興趣相似度:

W(uv)=|N(u)∩N(v)|/|N(u)∪N(v)| 或者 用餘弦相似度 W(uv)=|N(u)∩N(v)|/√|N(u)||N(v)|

對應的表如下,該表的意思是使用者A對物品{a,b,c}有有過行為,對{a,b,c}是感興趣的,使用者B對{a,c}是感興趣的

那麼用餘弦公式計算使用者A和使用者B的興趣相似度就是W(ab)=|{a,b,c}∩{a,c}|/√|{a,b,c}||{a,c}|=1/√6

實際上的話,很多使用者之間並沒有對同樣的物品產生行為,即|N(u)∩N(v)|=0,為了優化這種情況,我們可以先計算出|N(u)∩N(v)|≠0的使用者(u,v)再除以分母√|N(u)||N(v)|

首先需要建立物品到使用者的倒排表,對於每個物品都儲存該物品產生過行為的使用者列表,令稀疏矩陣C[u][v]=|N(u)∩N(v)|,假設使用者u和使用者v同時屬於倒排表K個物品對應的使用者列表

即C[u][v]=K,接著掃描倒排表中每個物品對應的使用者列表,將使用者列表中兩兩使用者對應的C[u][v]加1,最終就可以得到所有使用者之間不為0的C[u][v]

如圖,建立了一個4X4的使用者相似度矩陣,對於物品a,將W[A][B]和W[B][A]加1,對於物品b,將W[A][C]和W[C][A]加1,掃描完所有物品後,可以得到最終的W矩陣,這裡的W就是餘弦

相似度公式的分子,再除以分母√|N(u)||N(v)| 就可以得到最終的使用者興趣相似度。

得到了使用者興趣相似度後,根據UserCF演算法給使用者推薦和他興趣最相似的K個使用者喜歡的物品,以下的公式計算了UserCF中使用者u對物品i的感興趣程度,公式如下:

  • S(u,k):使用者u興趣最接近的K個使用者
  • N(i):對物品i有行為的使用者集合
  • W(uv):使用者u和使用者v的興趣相似度
  • rvi:使用者v對物品i的興趣,因為使用的是單一行為的隱反饋資料,所以所有的rvi=1

以上的演算法公式還比較粗糙,如果兩個人購買了同一個物品,不能說明他們的興趣一定相同,因此可以對演算法進行改進,提高演算法的效能。

新的公式會通過降權懲罰使用者u和使用者v共同興趣列表中熱門物品對他們相似度對影響。

不同的演算法有各自不同的效果,也會有不同的限制和缺點,在使用中也要結合產品的使用者不停調整優化,達到最好的效果。

UserCF的限制和缺點:使用者數越來越大的話,計算使用者之間的相似度矩陣,系統執行的時間,複雜度,整體的成本都會大幅度增加。

(三)、基於物品的協同過濾演算法

基於物品的協同過濾(ItemCF)演算法,通過分析使用者的行為記錄計算物品之間的相似度,比如物品A和物品B具有很大的相似度是因為喜歡A的使用者大都也喜歡物品B。

比如下圖中,我曾經搜尋過桌面擺件招財貓,然後系統推薦給我了同樣是桌面擺件的摩托車模型。

  1. 計算物品之間的相似度
  2. 根據物品之間的相似度和使用者的歷史行為給使用者生成推薦列表

W(i,j)=|N(i)∩N(j)|/√|N(i)||N(j)|

N(i)和N(j)表示喜歡物品i的使用者數,ItemCF的演算法結構基本與UserCF的演算法類似,這裡不做過多說明了。

演算法並不萬能,需要不斷調整和優化,或是根據形態簡化演算法。

  • UserCF的推薦更社會化,反映了使用者所在的小型興趣群體中物品的熱門程度,更快。
  • ItemCF的推薦更加個性化,反映了使用者自己興趣,使用者興趣需要穩定持久。

UserCF

  • 效能:適用於使用者較少的場合,使用者多則計算相似矩陣代價大
  • 領域:實效性強,使用者個性化興趣不太明顯的領域
  • 實時性:使用者有新行為,不一定造成推薦結果的立即變化
  • 冷啟動:新使用者對很少的物品產生行為後,不能立即對其進行個性化推薦。新物品上線後,一旦有使用者對物品進行了行為,將可以將新物品推薦給和他產生行為的使用者興趣相似的其它使用者。

ItemCF

  • 效能:適用於物品數明顯小於使用者數的場合,如果物品較多,矩陣計算代價大
  • 領域:長尾物品豐富,使用者個性化需求強烈的領域
  • 實時性:使用者有新行為,一定會導致推薦結果的實時變化
  • 冷啟動:新使用者只要對一個物品產生行為,就可以給他推薦和該物品相關的其它物品。不能在不離線更新物品相似度表的情況下將新物品推薦給使用者。

兩種演算法的一些限制:

  1. 若某個物品太過熱門,則所有推薦中都可能出現該物品,需要對熱門物品作出懲罰,懲罰公式xxxx
  2. 不同領域的最熱門物品之間往往有比較高的相似度。(僅靠使用者資料不能解決這個問題)

(四)、基於標籤的推薦

基於標籤的推薦一般分為兩種,一種是通過給使用者的某些特徵打上標籤,另一種則是讓使用者自己給物品打上標籤,這裡主要講使用者給物品打標籤(UGC)。

基於UGC的標籤推薦主要是利用使用者打標籤的行為為其推薦物品,在使用者給物品打標籤時也要提供合適該物品的標籤。使用者用標籤描述對物品的看法,標籤是反應使用者興趣的重要資料來源。

一個使用者行為的資料集一般由一個三元組的集合表示,其中記錄{u,i,b}表示使用者u給物品i打上了標籤b(當然實際中會包含使用者屬性、物品屬性等,更為複雜)。

–(具體的演算法這裡隱去,瞭解原理即可)–

給使用者提供標籤一般有 這麼幾種方法 :

  1. 給使用者推薦一個系統中最熱門的標籤
  2. 給使用者推薦物品i上最熱門的標籤
  3. 給使用者推薦他自己經常使用的標籤
  4. 將方法2和方法3融合,通過一個係數將上面的推薦結果線性加權,生成最終的推薦結果

常見的基於標籤(UGC)的推薦有豆瓣:

(五)、隱語義模型LFM

LFM的核心思想:通過隱含特徵聯絡使用者興趣和物品

對於某個使用者,首先要得到他的興趣分類,然後從分類中挑選他可能喜歡的物品,要得到他喜歡的的物品分類需要考慮到3個問題:

1.如何給物品分類?

目前比較簡單的做法是通過人工給物品分類,按照不同的物品分類方法。

另外則是通過隱含語義分析技術,採用基於使用者行為統計的自動聚類來解決這個問題,比較著名的模型和方法有pLSA,LDA,隱含類別模型,隱含主題模型,矩陣分析等等。

2.如何確定使用者對哪些物品感興趣,以及感興趣的程度?

推薦系統的使用者行為分為隱性反饋和顯性反饋,主要討論隱性反饋資料集 ,這種資料集只有正樣本(使用者喜歡什麼物品),沒有負樣本(使用者對什麼物品不感興趣),在隱性反饋資料集上應用LFM解決推薦的問題需要給每個使用者生成負樣本,有這麼幾種方法:

  • 對於一個使用者,用他沒有過行為的物品作為負樣本
  • 對於一個使用者,用他沒有過行為的物品中均勻取樣出一些物品作為負樣本
  • 對於一個使用者,從他沒有過行為的物品中取樣出一些物品作為負樣本,取樣時,保證每個使用者的正負樣本數目相當
  • 對於一個使用者,從他沒有過行為的物品中取樣出一些物品作為負樣本,取樣時,偏重不熱門的物品。

採負樣本的一些原則:

對於每個使用者,取樣時要保證正負樣本的平衡。

對於每個使用者取樣負樣本時,要選取那些熱門,而使用者沒有行為的物品。

綜合以上的方法結合使用者行為頻率計算確定使用者感興趣的物品和程度。

3.對一個給定的類,選擇哪些屬於這個類的物品推薦給使用者,以及如何確定這些物品在一個類中的權重?

這個問題主要的解決方法就是通過1.2的計算結果綜合演算法得出,根據演算法計算調整不同物品的權重,通過迭代不斷優化演算法中的引數。

LFM中重要的引數有(僅瞭解就可以,具體需要結合演算法公式):

  1. 隱特徵的個數F
  2. 演算法學習的速率
  3. 正則化引數
  4. 負樣本/正樣本比例

LFM具有學習能力,能實現自我學習不斷優化模型。

(六)、社會化推薦

根據某機構的調查,在購買物品時,90%左右的使用者會相信朋友的推薦,70%的使用者會相信網上其他使用者對商品的評論。

在網際網路中最明顯的社會化推薦則是利用社交網路資料進行推薦,利用社交網路資料推薦一般可以從以下幾個方面入手:

  1. 電子郵箱的社交關係資訊
  2. 使用者註冊資訊
  3. 使用者的位置資料,web的IP和手機的GPS
  4. 討論組和論壇
  5. 聊天工具中的好友關係列表
  6. 社交網站中的好友關係資料

基於社交資訊的社會化推薦能夠利用好友的關係,解決一部分冷啟動的問題。

情況1.你通過朋友的分享進入的,你朋友在網站中玩的比較久,有推薦資料。由於你之前在該網站沒有任何資料,那麼我要想給你推薦物品,就可以根據你朋友的推薦列表來給你推薦你可能會喜歡的東西。

情況2.如果你是剛來到一個網站,你沒有朋友, 我想給你做社會化推薦的話,可以根據你的註冊資訊、位置,共同興趣等給你推薦好友,再給你做好友推薦。

(七)、根據時間上下文推薦

上下文包括使用者訪問推薦系統的時間、地點、心情等,根據時間上下文的推薦是希望能夠準確預測使用者在某個特定時刻或某段時刻的興趣。

比如電商產品在賣衣服時,冬天推薦的衣物和夏天推薦的衣物是不同的。如下圖,淘寶網在冬季的推薦:

時間資訊對使用者興趣的影響主要表現在以下幾個方面:

  • 使用者的興趣是變化的
  • 物品是有生命週期的
  • 季節效應

考慮到時間資訊後,推薦系統也從一個靜態系統變成了一個時變的系統,而使用者行為資料也變成了時間序列。

在給定資料集後,可以通過統計以下資訊研究推薦系統的時間特性:

  1. 資料集每天獨立使用者數的增長情況(平穩階段、增長階段、衰落階段等)
  2. 系統的物品變化情況
  3. 使用者訪問情況

推薦系統的實時性

使用者的興趣是不斷變化的,其變化體現在使用者不斷增加的新行為中,一個實時的推薦系統需要能夠實時響應使用者新的行為,讓推薦列表不斷變化,從而滿足使用者不斷變化的興趣。

實時的推薦系統應該滿足:

  1. 對使用者行為的存取有實時性(在使用者訪問推薦系統時計算)。
  2. 對推薦演算法本身有實時性(考慮到使用者近期行為和長期行為)。

推薦演算法的時間多樣性:推薦系統每天推薦結果的變化程度,有的推薦系統中使用者經常能看到不同的推薦結果。

時間上下文的推薦演算法

  1. 推薦最新最熱門的物品
  2. 時間上下文的ItemCF演算法,利用使用者行為離線計算物品之間的相似度,根據使用者的歷史行為和物品相似度矩陣,給使用者做線上個性化推薦。

物品的相似度計算:使用者在像個很短的時間內喜歡的物品有更高的相似度。

線上推薦:使用者近期行為相比使用者很久之前的行為,更能體現使用者現在的興趣。

3.時間上文的UserCF演算法

使用者的興趣相似度計算:如果兩個使用者同時喜歡相同的物品,則興趣相似度越大。

相似興趣使用者的最近行為(推薦與其興趣相似的使用者最近喜歡的物品)。

(八)、基於地理位置的推薦

基於位置的推薦演算法(LARS)會根據使用者所在的國家、城市、街道探尋規律進行推薦,找到使用者地點和興趣相關的特徵,主要包括興趣本地化和活動本地化。

LARS的基本思想是將資料集根據使用者的位置劃分成很多子集,位置是一個樹狀結構,比如國家、省、市、區、縣的結構,因此資料集也會劃分成一個樹狀結構。

根據使用者的位置,將其分配到一個葉子節點中,而該節點會包括了所有和他同一位置的使用者行為資料集。

LARS會利用該葉子節點上的使用者行為資料,通過ItemCF或UserCF給使用者推薦。

資料集會包括(使用者、使用者位置、物品、物品位置、物品評分)的記錄

比如大眾點評的推薦:

二、推薦系統的冷啟動問題

推薦系統的冷啟動問題指的是,當推薦系統剛部署後,沒有使用者行為時或物品資料時,推薦系統並不能根據使用者行為資料給使用者推薦物品。一般分為使用者冷啟動、物品冷啟動和系統冷啟動。

通常有一些辦法可以緩和冷啟動問題

1.利用使用者註冊資訊推薦:即獲取使用者的註冊資訊,然後對使用者分類,給使用者推薦他所屬分類中可能感興趣的物品。 將關聯的查詢結果按照一個權重相加,利用的使用者資訊越多,就能越精準

地匹配使用者興趣。

2.給使用者一些內容選擇合適的物品啟動使用者的興趣:選擇一些熱門的,有代表性、區分性、多樣性的物品推薦給使用者。

3.利用物品的內容資訊推薦給使用者:可以通過人工篩選出一些使用者會感興趣的物品推薦。

三、推薦系統的架構

如果一個系統中將各種使用者行為、特徵和任務都考慮進去,系統會非常複雜,難以配置。因此推薦系統需要由多個推薦引擎組成,每個推薦引擎負責一類特真和一種任務,而推薦系統只是

將推薦引擎的結果按照一定權重或優先順序合併、排序,然後返回。

這樣的優勢在於:每一個引擎代表了一種推薦策率,可通過對單一的引擎調整來優化推薦系統。

如何設計一個推薦引擎成了推薦系統設計的核心部分。

  • 模組A:從資料庫或快取中拿到使用者行為資料,通過分析不同行為,生成當前使用者的特徵向量。
  • 模組B:將使用者的特徵向量通過特徵-物品相關舉證轉換為初始推薦物品列表。
  • 模組C:對初始的推薦列表進行過濾,排名等處理,生成最終的推薦結果。

生成使用者特徵向量:使用者特徵向量一般包括兩種:

  1. 從使用者的註冊資訊提取,包括使用者的人口統計學特徵等,在推薦時直接拿到使用者他惡政資料生成特徵向量。
  2. 從使用者行為中計算出來

通過使用者行為生成特徵(需要考慮以下幾點):

  1. 使用者行為的種類(使用者會對物品產生很多種不同的行為)。
  2. 使用者行為產生的時間(近期行為比較重要)。
  3. 使用者行為的次數(一般行為次數多的物品權重越高)。
  4. 物品的熱門程度(使用者對很熱門的物品產生行為可能是在跟風,推薦引擎在生成使用者特徵時會加重不熱門物品對應特徵的權重)。

特徵-物品相關推薦:

在得到使用者的特徵向量後,根據離線的相關表得到初始化物品推薦表。

每個特徵,在相關表中儲存和它最相關的N個物品的ID。

一個推薦引擎可以在配置檔案中配置很多相關表以及他們的權重,推薦系統啟動後會將相關表按配置的權重相加,最終的相關表儲存在記憶體中,給使用者推薦時,已經是加權後的相關表了。

候選物品結合(保證推薦結果只包含候選物品集合中的物品):

一般應用於產品需求,希望將某些物品推薦給使用者。

過濾模組:

過濾掉不符合要求的物品,一般有以下幾種

  1. 使用者已經產生過行為的物品(推薦的目的是幫助使用者發現物品,因此沒必要給使用者推薦他已經知道過的物品,保證推薦結果的新穎性)。
  2. 候選物品以外的物品,使用者自己的選擇等。
  3. 質量差、評價低的物品。

排名模組:

  1. 新穎性排名(對某些舊的但仍然熱門的物品降權處理)。
  2. 多樣性
  • 按照某物品內容屬性分為幾類,然後在每個類中都選擇該類中排名最高的物品組合最終的推薦列表
  • 控制不同的推薦結果的推薦理由出現的次數,推薦理由一般是產生推薦結果的重要特徵,提高多樣性需要讓推薦結果儘量來自不同的特徵,有不同的推薦理由。

3.時間多樣性

  • 實時推薦
  • 記錄使用者之前的行為資料,在給使用者新的推薦結果是降權

4.使用者反饋(使用者對推薦結果點選情況的反饋)。

四、推薦系統的度量

個性化推薦的核心還是推薦演算法,依賴使用者的行為資料,卻決於定義的環境維度,不同維度下的演算法的表現能力會不一樣。

什麼是好的推薦系統:

  1. 滿足使用者的需求,推薦給使用者的是使用者會感興趣的內容。
  2. 滿足所有的內容都被推薦給感興趣的使用者(衡量的指標為覆蓋率)。
  3. 推薦系統本身蒐集到高質量的使用者反饋,能夠對之進行不斷的完善。

好的推薦系統不僅能預測使用者的行為,能擴充套件使用者的視野,幫助使用者發現那些他們可能會買,但卻不那麼容易發現的東西,而非是本來就想要買的東西。

推薦系統的評價指標:

  1. 使用者滿意度
  2. 預測精準度
  3. 覆蓋率
  4. 多樣性
  5. 新穎性(不犧牲精度的情況下提高多樣性,即新東西)
  6. 驚喜度(推薦結果和使用者歷史興趣不相似,但卻讓使用者滿意)
  7. 信任度
  8. 實時性
  9. 健壯性(反作弊處理邏輯)
  10. 商業目標

推薦演算法的考核指標:

  1. 準確率
  2. 召回率
  3. 流行度
  4. 覆蓋率

推薦系統的測試方法:

  1. 離線測試:通過使用者行為資料形成資料集
  2. 使用者調查
  3. 線上實驗:A/B測試(切分流量,將使用者分成不同的層控制觀察)

原文地址:http://www.woshipm.com/pd/871400.html