1. 程式人生 > 實用技巧 >推薦系統基礎之推薦系統簡介

推薦系統基礎之推薦系統簡介

1.推薦系統概述

什麼是推薦系統?字面意義上理解,推薦系統就是向他人進行推薦的系統。當我們每天開啟B站,首頁上推送的視訊並非是經過我們搜尋得到的,而是由背後的演算法以一定的方式(例如根據你的瀏覽歷史分析你的興趣,或是參考近期的熱門視訊)選擇的其中一些我們可能會感興趣的視訊,這就是一個推薦系統。也就是說,推薦系統是溝通使用者與商品之間的橋樑,是實現使用者-商品-供應商之間利益最大化的手段。
如今,推薦系統已經得到了廣泛應用,例如音樂推薦、電影推薦、短視訊推薦、商品推薦等等。從中我們可以發現推薦系統應用的兩個條件,一是資訊過載,即有大量的視訊或音樂讓我們無從選擇,二是使用者沒有明確的需求,即我們並沒有明確此刻想要聽什麼音樂、看什麼視訊,無法直接搜尋,在這些條件下,一個個性化、智慧化的推薦系統無疑能夠很好地實現我們的需求。

那麼,我們要如何去評價一個推薦系統的好壞呢?

2.推薦系統評測

對於一個推薦系統,我們可以採用三種實驗方法進行評測:

  • 離線實驗
    通過系統日誌採集的的使用者資料進行訓練,然後根據演算法的預測結果進行評估。這種方法無需使用者參與,可以簡單、快速地進行評估,但這種方法無法獲得商業上關注的一些指標。
  • 使用者調查
    直接調查使用者對推薦系統的滿意度可以獲得使用者的直觀感受,但這種方法很難招募大規模的測試使用者,使得測試結果統計意義不足。
  • 線上實驗
    A/B測試是一種常用的線上實驗方法,對一部分使用者採用舊演算法,而對另一部分使用者採用新演算法,根據對結果的評估就能比較兩個演算法的優劣。但這種方法一般需要較長的實驗週期。
    一般來說,一個新的推薦演算法的最終上線,需要完成以上三個實驗。

對於實驗結果,需要一些量化的指標進行評估,對於一個推薦系統,主要有以下幾個評估指標:

  • 使用者滿意度
    這個指標只能通過使用者調查和線上實驗獲得,其中線上實驗一般是通過統計使用者的線上行為來獲得購買率、停留時間或轉化率等資料,以此來判斷使用者的滿意度。
  • 預測準確度
    預測準確度用於度量一個推薦系統對使用者行為的預測能力,是最重要的離線評測指標。預測準確度指標包括兩種:
    一種是評分預測,許多網站都會有對推薦的物品打分的功能,評分預測即是根據使用者的歷史評分或瀏覽資料預測使用者對某物品的評分。評分預測的預測準確度可採用均方根誤差(RMSE)和平均絕對誤差(MAE)來算。
    RMSE
    MAE
    另一種是TopN推薦,即網站並非只向用戶推薦一個物品,而是推薦一個包含N個物品的列表。TopN推薦的預測準確度可採用準確率(Precision)和召回率(Recall)來計算。準確率是指所預測為正例的樣本中實際確實為正例的概率,而召回率則是在所有實際為正例的樣本中可以準確預測出為正例的概率。
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 覆蓋率
    覆蓋率描述一個推薦系統對長尾發掘的能力,簡單來說,就是指推薦系統是否能將每個物品都推薦出去,不論熱門或是非熱門的商品,每個商品都能得到推薦,並且所有商品得到推薦的次數差不多。這個指標通常採用資訊熵和基尼係數來計算。
    資訊熵的計算公式如下,其中 p ( i ) p(i) p(i)為該物品流行度除以總流行度:
    在這裡插入圖片描述
    基尼係數是經濟學中的一個指標,其計算原理如下圖:
    在這裡插入圖片描述
    我們將物品按熱門程度在x軸上從低到高排列,則黑色曲線表示x%的物品的流行度之和佔總流行度的比例,左側的物品熱門程度低,所以他們的流行度之和(即y值)雖然在升高,但總體佔比較低,而右側物品熱門程度高,所以y值快速升高,因此黑色曲線呈現出下凹的形狀,不會超過直線y=x。於是我們就可以根據A的面積佔A與B總面積的比例( S A / ( S A + S B ) S_A/(S_A+S_B) SA/(SA+SB),即基尼係數的定義)來判斷推薦系統的覆蓋率。當覆蓋率高時,即使是非熱門的商品也能具有與熱門商品差不多的流行度,因此,黑色曲線會更靠近直線y=x, S A S_A SA較小,基尼係數也較小。由此,我們就得到了基尼係數的計算公式,其中 p ( i j ) p(i_j) p(ij)表示按流行度從小到大排列的第j個物品的流行度:
    在這裡插入圖片描述
  • 多樣性
    推薦列表往往需要是多樣的,能夠覆蓋使用者的大多數興趣點。多樣性指標描述的是物品的不相似性,那麼 1 − 相 似 性 1-相似性 1就能表示多樣性,假設以 s ( i , j ) ∈ [ 0 , 1 ] s(i, j)\in[0, 1] s(i,j)[0,1]定義物品i和物品j的相似度,那麼對於某使用者 u u u給出的推薦列表 R ( u ) R(u) R(u)中,所有物品的相似度即為任意兩兩物品的相似度之和乘以這對物品在所有物品中的概率,這個概率即為 1 C n 2 \frac{1}{C_n^2} Cn21,其中 C n 2 C_n^2 Cn2表示從推薦列表的n個物品中取出的兩個物品的所有可能組合, C n 2 C_n^2 Cn2展開來即可寫成 1 2 n ( n − 1 ) \frac{1}{2}n(n-1) 21n(n1),於是推薦系統對某使用者 u u u給出的推薦列表的多樣性就可以寫成以下公式,公式中用 ∣ R ( u ) ∣ |R(u)| R(u)來表示 n n n
    在這裡插入圖片描述
    而推薦系統對所有使用者的推薦列表的整體多樣性即為:
    在這裡插入圖片描述
    其中 ∣ U ∣ |U| U表示使用者個數。
  • AUC值
    當我們以假正例率為橫座標,真正例率為縱座標畫一條如下圖所示的ROC曲線,該曲線下的面積即為AUC值。
    在這裡插入圖片描述