1. 程式人生 > 實用技巧 >【推薦系統】01 簡介

【推薦系統】01 簡介

00 內容總覽

內容總覽

01 推薦系統的目的

分類目錄、搜尋引擎和推薦系統是資訊過載所採用的不同措施。

​ 為了解決資訊過載問題,人們想過很多方案,其中具有代表性的是分類目錄和搜尋引擎。這兩種方案分別催生了雅虎和谷歌的誕生。而隨著網際網路規模的擴大,分類目錄網站只能覆蓋到少量熱門網站,越來越不能滿足大眾的需求。而搜尋引擎需要使用者主動提供準確的關鍵字來尋找資訊,因此當用戶無法準確描述自己需求的關鍵詞時,搜尋引擎也就無能為力了。而推薦系統正好解決了這一問題,不需要使用者提供明確的需求,而是通過分析使用者的歷史行為給使用者的興趣進行建模,從而主動給使用者推薦能夠滿足他們興趣和需求的資訊。因此,從某種意義上來講,推薦系統和搜尋引擎對於使用者來說是兩個互補的工具。

推薦系統的目的:

  • 讓使用者更好地獲取自己需要的內容;

  • 讓內容更好地推動到喜歡它的使用者手中,更好的發掘物品的長尾;

  • 讓平臺更有效地保留使用者資源,同時獲得利益最大化。

    一個好的推薦系統,應該是讓三方共贏,即使用者方,內容製作方和平臺方滿足各自的需求。

02 推薦系統的應用

​ 和搜尋引擎不同,個性化推薦系統需要依賴使用者的行為資料,因此一般作為一個應用存在於不同的網站之中。個性化推薦系統在這些網站中的主要作用是通過分析大量使用者行為日誌,給不同的使用者提供個性化頁面展示,來提高網站的點選率和轉化率。
​ 廣泛利用推薦系統的領域包括:電子商務、電影和視訊、音樂、社交網路、閱讀、基於位置的服務、個性化郵件和廣告等。儘管不同網站使用的不同的推薦系統技術,但總的來說,幾乎所有的推薦系統應用都是由前臺的展示頁面、後臺的日誌系統和推薦算法系統三個部分構成

03 推薦系統的基本思想

圖3.1 基本思想

  • 【知你所想】利用使用者和內容的特徵資訊,給使用者推薦那些具有使用者喜歡的特徵的物品;
  • 【物以類聚】利用使用者喜歡過的物品,給使用者推薦與他喜歡過物品類似的物品;
  • 【人以群分】利用和使用者相似的其他使用者,給使用者推薦那些和他們興趣愛好相似的使用者喜歡的物品;

04 推薦系統的分類

圖4.1 推薦系統分類

​ 基於統計的推薦是指類似於熱榜之類的對所有訪問量進行排序。而個性化推薦即就是根據不同的使用者愛好分別推薦出不同的內容。
​ 基於知識的分類指的是直接使用先驗知識,例如程式設計師喜歡電子裝置,女生喜歡化妝品等等,而基於模型的推薦是指使用演算法去發現知識,然後再使用這些知識去做推薦。
​ 基於人口統計學的推薦即就是從使用者的資訊特徵出發做出的推薦,基於內容的推薦就是從內容的資訊特徵出發做出的推薦,基於協同過濾的推薦就是根據使用者行為做出的推薦。

05 推薦系統的評測指標

5.1 評測指標彙總

  1. 使用者滿意度

    ​ 作為評測推薦系統最重要的指標,無法通過離線實驗計算,只能通過使用者調查或者線上實驗獲得。通過使用者調查問卷需要合理的設計問卷才能達到良好的結果。而如果是通過線上系統,則可以通過使用者行為進行統計得到。例如電子商務中的推薦商品購買率,反饋按鈕,以及點選率、使用者停留時間和轉化率等多個指標。

  2. 預測準確度

    ​ 預測準確度是一個推薦系統預測使用者行為的能力。這個指標是最重要的推薦系統離線評測指標。該指標根據不同的研究方向分為評分預測和TopN推薦。

    (1)評分指標

    ​ 預測使用者對物品評分的行為稱為評分預測。一般通過均方根誤差(RMSE)和平均絕對誤差(MAE)計算。Netflix認為RMSE加大了對預測不準的使用者評分的懲罰,因而對系統的評測更為苛刻。另外,如果評分系統是基於整數建立的,那麼對預測結果進行取整會降低MAE的誤差。
    R M S E = ∑ u , i ∈ T ( r u i − r ^ u i ) 2 ∣ T ∣ (1.1) RMSE = \frac{\sqrt{\sum _{u,i\in T}\left ( r_{ui}-\hat{r}_{ui} \right )^2}}{\left | T \right |}\tag{1.1} \\ RMSE=Tu,iT(ruir^ui)2 (1.1)

    M A E = ∑ u , i ∈ T ∣ r u i − r ^ u i ∣ ∣ T ∣ (1.2) MAE = \frac{\sum _{u,i\in T}\left | r_{ui}-\hat{r}_{ui} \right |}{\left | T \right |}\tag{1.2} \\ MAE=Tu,iTruir^ui(1.2)

    (2)TopN推薦

    ​ 網站在提供推薦服務時,一般是給使用者一個個性化的推薦列表,這種推薦叫做TopN推薦。TopN推薦的準確率一般通過準確率(precision)和召回率(recall)度量。
    R e c a l l = ∑ u ∈ U ∣ R ( u ) ∩ T ( u ) ∣ ∑ u ∈ U ∣ T ( u ) ∣ (1.3) Recall = \frac{\sum_{u \in U}\left |R\left(u\right)\cap T\left(u\right)\right|}{\sum_{u \in U}\left |T\left(u\right)\right|} \tag{1.3} Recall=uUT(u)uUR(u)T(u)(1.3)

    P r e c i s i o n = ∑ u ∈ U ∣ R ( u ) ∩ T ( u ) ∣ ∑ u ∈ U ∣ R ( u ) ∣ (1.4) Precision = \frac{\sum_{u \in U}\left |R\left(u\right)\cap T\left(u\right)\right|}{\sum_{u \in U}\left |R\left(u\right)\right|}\tag{1.4} Precision=uUR(u)uUR(u)T(u)(1.4)

  3. 覆蓋率

    ​ 覆蓋率(coverage)描述一個推薦系統對物品長尾的發掘能力。其最簡單的定義是推薦系統能夠推薦出來的物品佔總物品集合的比例。不過這樣的定義過於簡單,我們可以引入資訊理論和經濟學中的資訊熵和基尼指數評價覆蓋率。
    H = − ∑ i = 1 n p ( i ) log ⁡ p ( i ) (1.5) H = -\sum_{i=1}^np\left(i\right)\log p\left(i\right)\tag{1.5} H=i=1np(i)logp(i)(1.5)
    其中這裡的 p ( i ) p(i) p(i) 是物品 i i i的流行度除以所有物品的流行度之和。
    G = 1 n − 1 ∑ j = 1 n ( 2 j − n − 1 ) p ( i j ) (1.6) G=\frac{1}{n-1}\sum_{j=1}^n\left(2j-n-1\right)p\left(i_j\right)\tag{1.6} G=n11j=1n(2jn1)p(ij)(1.6)
    這裡的 i j i_j ij是按照物品流行度 p ( ) p() p()從小到大排序的物品列表中的第 j j j個物品。

  4. 多樣性

    ​ 推薦系統應該能滿足使用者廣泛的興趣,多樣性描述了推薦列表中物品兩兩之間的不相似性。因此,多樣性和相似性是相對的。

  5. 新穎性

    ​ 新穎的推薦是指給使用者推薦那些他們以前沒有聽過的物品,實現新穎性的最簡單辦法就是,把那些使用者之前在網站中對其有過行為的物品從推薦列表中過濾掉。但是,有些內容使用者可能在其他渠道看過,那麼僅僅濾掉有過行為的內容仍然不足以實現新穎性。

    ​ O’scar Celma在博士論文Music Recommendation and Discovery in the Long Tail中研究了新穎性的評測,即利用推薦結果的平均流行度。不過困難的是,如何在不犧牲精度的情況下提高多樣性和新穎性?

  6. 驚喜度

    ​ 驚喜度(serendipity)是近幾年推薦系統最熱門的話題。根據Guy Shani的論文,如果推薦結果和使用者的歷史興趣不相似,卻讓使用者覺得滿意,那麼說明這個推薦的驚喜度很高,而推薦的新穎性僅僅取決於使用者是否知道這個推薦結果。

  7. 信任度

    ​ 如同人與人之間一樣,使用者與推薦系統之間也存在信任度(trust)的問題,如果使用者信任推薦系統,就會增加使用者與推薦系統之間的互動。
    ​ 提供信任度主要有兩種方法:①增加推薦系統的透明度(transparency),主要方法就是提供推薦解釋;②考慮使用者的社交網路資訊,利用使用者的好友資訊給使用者做推薦,並用好友進行解釋。

  8. 實時性

    ​ 很多資訊具有很強的時效性,所以這些內容會需要推薦系統具有時效性。其中,推薦系統的時效性主要包括兩個方面:①實時更新推薦列表滿足使用者新的行為變化;②推薦系統能夠將新加入系統的物品及時推薦給使用者。

  9. 健壯性

    ​ 健壯性,即魯棒性(robust)是衡量一個推薦系統抗擊作弊行為的能力。提高系統健壯性的方法:①選擇健壯性較好的演算法;②儘量使用代價比較高的使用者行為;③使用資料前,首先進行攻擊檢測,對資料進行清理。

  10. 商業目標

    ​ 根據公司的盈利模式設計不同的商業目標。設計推薦系統需要考慮最終的商業目標,公司使用推薦系統的目的除了滿足使用者發現內容的需求,也需要利用推薦系統加快實現商業上的指標。

06 推薦系統評測

​ 在推薦系統中,主要有三種評測推薦效果的試驗方法,即離線實驗(offline experiment)、使用者調查(user study)和線上實驗(online experiment)。

6.1 離線實驗

​ 離線實驗的步驟:

  1. 通過日誌系統獲取使用者行為資料,並按照一定格式生成一個標準的資料集;
  2. 將資料集安裝一定的規則分為訓練集和測試集;
  3. 在訓練集上訓練使用者的興趣模型,在測試集上進行預測;
  4. 通過事先定義好的離線指標評測演算法在測試集上的預測結果。

優點:①不要有實際系統的控制權;②不需要真是使用者的參與;③速度快、可以測試大量演算法。

缺點:①無法計算商業上關注的指標;②離線實驗的指標和商業指標存在差距

6.2 使用者調查

​ 使用者調查需要一些真實使用者,讓他們在需要測試的推薦系統上完成一些任務。在他們完成任務時,我們需要觀察和記錄其行為,並讓他們回答一些問題。最後,我們需要分析他們的行為和答案瞭解測試系統的效能。

優點:①可以獲得離線方法無法獲取的指標,例如驚喜度和滿意度等指標;

缺點:①調查成本很高;②對測試的使用者有一定的分佈要求;③需要保證雙盲測試。

6.3 線上實驗

​ 在完成離線實驗和必要的使用者調查後,可以將推薦系統上線做AB測試,將他與原有的演算法進行比較。

​ AB測試是一種很常見的線上評測演算法的實驗方法。通過一定的規則將使用者隨機分為幾組,並在不同組的使用者採用不同的演算法,然後通過統計不同組使用者的各種不同評測指標比較不同演算法。

​ 大型網站的AB測試系統的設計是一項複雜的過程。大型網站一般分為前端和後端,從前端展示到後端演算法,中間往往要經過很多層,這些層往往由不同團隊控制,而且都會做AB測試,那麼不同的AB測試之間往往就會有干擾。因此,切分流量是AB測試中的關鍵,不同的層需要從一個統一的地方獲取自己AB測試的流量,而不同層之間的流量應該是正交的。

優點:①可以公平的獲取不同演算法實際線上時的效能;②可以獲取豐富的指標。

缺點:①週期比較長;②實施起來比較複雜。

一般來說,一個新的推薦系統最終上線,需要完成上面所說的3個實驗

  • 首先,需要通過離線實驗證明它在很多離線指標上優於現有的演算法;
  • 然後,需要通過使用者調查確定它的使用者滿意度不低於現有的演算法;
  • 最後,通過線上的AB測試確定它在我們關心的指標上優於現有的演算法。

※ 評測維度

​ 評測系統中應該還需要考慮評測維度,比如一個推薦系統,雖然整體性效能不好,但可能在某種情況下效能比較好,而增加評測維度的目的就是知道一個演算法在什麼情況下效能最好,這樣為融合不同推薦演算法取得最好的整體效能帶來參考。
​ 一般來說,評測維度分為三類:

  • 使用者維度:主要包括使用者的人口統計學資訊、活躍度以及是不是新使用者等。

  • 物品維度:包括物品的屬性資訊、流行度、平均分以及是不是新加入的物品等。

  • 時間維度:包括季節、是工作日還是週末,是白天還是晚上等。

    ​ 如果能夠包含不同維度的評測指標,可以讓我們全面地瞭解一個推薦系統的效能,找到一個看上去比較弱的演算法的優勢以及發現一個強演算法的劣勢。


參考文獻:

  1. 項亮《推薦系統實踐》
  2. 推薦系統