1. 程式人生 > 實用技巧 >十月組隊學習之——推薦系統Task01-推薦系統簡介

十月組隊學習之——推薦系統Task01-推薦系統簡介

有幸參加了DataWhale舉辦的推薦系統組隊學習。收穫頗多。

每天記錄一些自己之前的知識盲點,需經常溫習。

一、推薦系統簡介

1、傳統推薦系統及深度學習推薦系統的演化關係圖(出自《深度學習推薦系統》)

傳統推薦系統

深度學習推薦系統

2、推薦系統概述
2.1、推薦系統簡介

1. What
a. 使用者:推薦系統是一種幫助使用者快速發現有用資訊的工具
b. 公司:推薦系統是一種增加公司產品與使用者接觸,購買等行為概率的工具
2. Why
a. 使用者:在使用者需求並不十分明確的情況下進行資訊的過濾,與搜尋系統相比,推薦系統更多的利用使用者的各類歷史

資訊猜測其可能喜歡的內容
b. 公司:解決產品能夠最大限度地吸引使用者,留存使用者,增長使用者黏性,提高使用者轉化率,從而達到公司商目標連續增長
的目的.
本質上是一種實現將使用者-商品-公司之間利益最大化的手段.
3. Who
從上面的1和2可以看出使用者與公司是需要推薦系統的主要物件,那麼可以在1和2的基礎上展開想想什麼樣子的人需要
推薦系統,以及什麼樣的公司需要推薦系統。
2.2、常用評測指標
1. 使用者滿意度
使用者是推薦系統中非常重要的參與者,他們的滿意度也直接決定了推薦系統的好壞.但是使用者滿意度這個指標無法離線計算,只能通過使用者調查或者線上實驗獲得.這裡在線實驗一般是通過使用者的線上行為統計得到的,比如電商場景中,使用者如果購買了推薦的商品說明一定程度上他們是滿意的,因此可以通過購買率度量使用者的滿意度,與購買率類似的點選率,使用者停留時間和轉化率等指標都可以用來度量使用者的滿意度.
2. 預測準確度
預測準確度是用來度量使用者的實際行為與推薦系統預測結果的準確度,該指標是最重要的離線評價指標,因為可以通過離線計算得到.下面是預測準確度最常用的兩個指標.
1. 評分預測
預測使用者對物品的評分行為成為評分預測,評分預測模型通過對使用者的歷史物品評分記錄進行建模,進而得到使用者的興趣模型,然後使用該模型預測使用者未未見過商品的評分.評分預測的預測準確度一般通過均方根誤差(RMSE)和平均絕對誤差(MAE)計算.對於測試集中的一個使用者和物品,令是使用者對物品的實際評分,而是推薦模型預測出的評分,那麼RMSE可以定義為:


MAE定義為:


RMSE由於存在平方項,使得使得使用者真實評分與推薦系統預測評分相差較大的使用者加大了懲罰,即該評測指標對系統要求更加的苛刻。

2. TopN推薦
推薦系統在給使用者推薦物品的時候,往往會給使用者一個列表的推薦物品,這種場景下的推薦成為是TopN推薦,該推薦方式最常用的預測準確率指標一般是精確率(precision)和召回率(recall),令為通過推薦模型得到的推薦列表,為使用者在實際場景中(測試集)的行為列表.
a. 精確率(precision): 分類正確的正樣本個數佔分類器判定為正樣本的樣本個數比例(這裡相當於是模型判定的正樣本)


b. 召回率(recall): 分類正確的正樣本個數佔真正的正樣本個數的比例(這裡的相當於真正的正樣本集合)


有時候為了更加全面的評估TopN推薦,通常會選取不同的推薦列表長度計算多組精確率與召回率然後分別繪製出
精確率曲線和召回率曲線,需要注意的是這裡並不是PR曲線,感興趣的可以瞭解一下PR曲線相關的知識.
3. 覆蓋率
覆蓋率是用來描述一個推薦系統對物品長尾的發掘能力,一個簡單的定義可以是:推薦系統所有推薦出來的商品集合數佔總物品集合數的比例.但是對於相同的覆蓋率,不同物品的數量分佈,或者說是物品的流行度分佈是可以不一樣的.為了更好的描述推薦系統挖掘長尾的能力,需要統計不同物品出現次數的分佈.如果所有的物品都出現在推薦列表中,並且出現的次數都差不多,那麼推薦系統發掘長尾的能力就很好.所以可以通過研究物品在推薦列表中出現的次數分佈來描述推薦系統挖掘長尾的能力,如果這個分佈比較平緩說明推薦系統的覆蓋率比較高,而如果分佈比較陡說明推薦系統的覆蓋率比較低.下面分別使用資訊熵和基尼係數來定義覆蓋率.
資訊熵定義覆蓋率: 其中是物品的流行度除以所有物品流行度之和。


基尼係數定義覆蓋率: 其中是按照物品流行度p從小到大排序的物品列表中第個物品。


4. 多樣性
人的興趣愛好通常是比較廣泛的,所以一個好的推薦系統得到的推薦列表中應該儘可能多的包含使用者的興趣,只有這樣才能增加使用者找到感興趣物品的概率.度量推薦列表中物品的多樣性換句話說就是度量推薦列表中所有物品之間的不相似性,可以通過不同的相似性函式來度量推薦列表中商品的相似性,比如商品基於內容的相似,基於協同過濾的相似,這樣就可以得到不同角度的多樣性.令函式為物品和物品的相似性,那麼使用者推薦列表的多樣性可以定義為:


推薦系統整體的多樣性可以定義為所有使用者推薦列表多樣性的平均值:


5. 新穎性
滿足推薦的新穎性最簡單的方法就是給使用者推薦他們之前沒有看過的物品,但是每個使用者沒見過的物品數量是非常龐大
的,所以一般會計算推薦物品的平均流行度,流行度越低的物品越有可能讓使用者覺得新穎,因此,如果推薦結果中的物品平
均熱門程度比較低說明推薦的結果就可能比較新穎.
6. AUC曲線
AUC(Area Under Curve),ROC曲線下與座標軸圍成的面積
在講AUC前需要理解混淆矩陣,召回率,精確率,ROC曲線等概念


TP:真的真了(真實值是真的,預測也是真)
FN:真的假了(真實值是真的,預測為假了)
FP:假的真了(真實值是假的,預測為真了)
TN:假的假了(真實值是假的,預測也是假)
召回率與準確率(上述已經進行了說明),下面是另一種形勢的定義,本質上都是一樣的:


ROC(Receiver Operating Characteristic Curve)曲線:


ROC曲線的橫座標為假陽性率(False Positive Rate, FPR),N是真實負樣本的個數, FP是N個負樣本中被分類器預測
為正樣本的個數。
縱座標為真陽性率(True Positive Rate, TPR),P是真實正樣本的個數,TP是P個正樣本中被分類器預測為正樣本的個
數。


2.3、召回
2.3.1、召回層在推薦系統架構中的位置及作用

在推薦系統架構中召回層與排序層是推薦系統的核心演算法層,而將推薦過程分成召回層與排序層主要是基於工程上的考慮,其中召回階段負責將海量的候選集快速縮小為幾萬到幾千的規模;而排序層則負責對縮小後的候選集進行精準排序。所以在召回階段往往會利用少量的特徵和簡單的模型對大規模的資料集進行快速的篩選,而在排序層一般會使用更多的特徵和更加複雜的模型進行精準的排序。
下面是召回層與排序層的特點
1. 召回層:待計算的候選集合大、計算速度快、模型簡單、特徵較少,儘量讓使用者感興趣的物品在這個階段能夠被快速召回,即保證相關物品的召回率。
2. 排序層:首要目標是得到精準的排序結果。需要處理的物品數量少,可以利用較多的特徵,使用比較複雜的模型。
在設計召回層時,“計算速度”和“召回率”其實是矛盾的兩個指標,為提高“計算速度”,需要使召回策略儘量簡單一些;而為了提高“召回率”,要求召回策略儘量選出排序模型所需要的候選集,這也就要求召回策略不能過於簡單。在權衡計算速度和召回率後,目前工業界主流的召回方法是採用多個簡單策略疊加的“多路召回策略”。
2.3.2、多路召回策略
所謂的“多路召回”策略,就是指採用不同的策略、特徵或簡單模型,分別召回一部分候選集,然後把候選集混合在一起供
後續排序模型使用,可以明顯的看出,“多路召回策略”是在“計算速度”和“召回率”之間進行權衡的結果。其中,各種簡單策略保證候選集的快速召回,從不同角度設計的策略保證召回率接近理想的狀態,不至於損傷排序效果。
如下圖是多路召回的一個示意圖,在多路召回中,每個策略之間毫不相關,所以一般可以寫併發多執行緒同時進行,這樣可
以更加高效。


上圖只是一個多路召回的例子,也就是說可以使用多種不同的策略來獲取使用者排序的候選商品集合,而具體使用哪些召回
策略其實是與業務強相關的,針對不同的任務就會有對於該業務真實場景下需要考慮的召回規則。例如視訊推薦,召回規則可以是“熱門視訊”、“導演召回”、“演員召回”、“最近上映“、”流行趨勢“、”型別召回“等等。
多路召回存在的問題
雖然多路召回權衡了計算速度和召回率的問題,可以使得用於排序的候選商品更加的豐富,但是實際的多路召回仍然存在
一些問題。如上圖所示,對於每一路召回都會從商品集合中拉回K個商品,這裡的K是一個超引數,對於K的選擇一般需要通過離線評估加線上的A/B測試來確定合理的K值。除此之外,對於不同的任務具體策略的選擇也是人工基於經驗的選
擇,選擇的策略之間的資訊是割裂的,無法總和考慮不同策略對一個物品的影響。
基於上述問題,Embedding召回是一個綜合性強且計算速度也能滿足需求的召回方法。
2.3.3、Embedding召回
在當前的主流推薦系統中,Embedding的身影已經無處不在,從一定意義上可以說,把Embedding做好了,整個推薦系統的
一個難題就攻克了,下面會從什麼是Embedding,常見的Embedding技術有哪些,以及如何用Embedding做召回進行一個簡單的總結。
Embedding是什麼?
Embedding其實是一種思想,主要目的是將稀疏的向量(如one-hot編碼)表示轉換成稠密的向量,下圖直觀的顯示了one-hot
編碼和Embedding表示的區別於聯絡,即Embedding相當於是對one-hot做了平滑,而onehot相當於是對Embedding做了max
pooling。


常見的Embedding技術有哪些?
目前主流的Embedding技術主要可以分為三大類。
1. text embedding
2. image embedding
3. graph embedding
在推薦系統領域,text embedding技術是目前使用最多的embedding技術,對於文字特徵可以直接使用該技術,對於非文字
的id類特徵,可以先將其轉化成id序列再使用text
embedding的技術獲取id的embedding再做召回。
常見的text Embedding的技術有:
1. 靜態向量:word2vec, fasttext, glove
2. 動態向量:ELMO, GPT, BERT


對於image embedding其實主要是對於有圖或者視訊的特徵,目前計算機視覺模型已經發展的比較成熟了,對於影象與視訊
的識別都有效果比較好的模型,大部分都是卷積模組通過各種連線技巧搭建的高效模型,可以使用現有的預訓練模型提取
影象或者視訊的向量特徵,然後用於召回。
對於社交網路相關的推薦,進行推薦的使用者與用於之間或者商品之間天然的存在某種複雜的圖結構的關係,如何利用圖中
節點與節點之間的關係對其進行向量化是非常關鍵的,在這種場景下基於序列的text embedding和基於卷積模型的image
embedding都顯得力不從心,在這樣的背景下Graph Embedding逐漸在推薦系統中流行起來。經典的Graph Embedding模型
有, Deep Walk, Node2Vec,LINE以及比較新的阿里巴巴2018年公佈的EGES graph Embedding模型。