1. 程式人生 > >《推薦系統實踐》(一)——推薦系統評測

《推薦系統實踐》(一)——推薦系統評測

一、預測準確度

<1>、評分預測

1.均方根誤差(RMSE)

(1)均方根(RMS)也稱為效值,公式:Xrms=i=1NXi2NX_{rms}=\frac{\sqrt{\sum_{i=1}^NX_i^2}}{N} (2)均方根誤差(RMSE)是衡量“平均誤差”的一種較方便的方法。是引數估計值與引數真值之差的平方的期望值。在實際使用中通常真值只能用最可信賴的值。 公式:RMSE=u,iN(XuiYui)NRMSE = \sqrt{\frac{\sum_{u,i\in{N}}(X_{ui}-Y_{ui})}{N}}

(XuiYui) 其中X表示實際值,Y表示預測值

2.平均絕對誤差(MAE)

所有單個觀測值與算術平均值的偏差的絕對值的平均。

公式:MAE=u,iNXuiYuiNMAE = \frac{\sum_{u,i\in{N}}|X_{ui}-Y_{ui}|}{N}

<2>、TopN推薦

網站提供推薦服務時給使用者的個性化推薦列表,這個列表被稱為TopN推薦。 TopN推薦的準確率一般通過準確率(Precision)/召回率(Recall)進行度量。

令R(u)是訓練集上給使用者做出的推薦列表,T(u)是使用者在測試及上的行為列表。 準確率定義:P

recision=uUR(u)T(u)uUR(u)Precision = \frac{\sum_{u\in{U}}R(u)\bigcap T(u)}{\sum_{u\in{U}}|R(u)|} 召回率定義:Precision=uUR(u)T(u)uUT(u)Precision = \frac{\sum_{u\in{U}}R(u)\bigcap T(u)}{\sum_{u\in{U}}|T(u)|}

二、覆蓋率

作用:用於描述推薦系統對物品長尾的發掘能力。最簡單的定義為推薦出來的物品佔總物品集合的比例。C

overage=uUR(u)ICoverage = \frac{|\bigcup_{u\in U}R(u)|}{|I|} 實際上為了更詳細的描述系統的發掘長尾的能力,需要統計推薦列表中不同物品出現次數的分佈。如果所有物品都出現在推薦列表中,並且出現的次數差不多,那麼推薦系統長尾發掘能力就較好

在資訊理論和經濟學中有兩個著名的指標可以用來定義覆蓋率。

第一個指標——資訊熵

資訊熵是消除不確定性所需資訊量的度量,也即未知事件可能含有的資訊量。 H=i=1np(i)logp(i)H = -\sum_{i=1}^np(i)\log p(i) 其中p(i)是物品i的流行度除以所有物品流行度之和。

第二個指標——基尼係數

馬太效應:如果一個系統會增大熱門物品和非熱門物品的流行度差距,讓熱門的物品更加熱門,不熱門的物品更加不熱門,那這個系統就存在馬太效應。 推薦系統的初衷就是消除馬太效應,基尼係數就是評測推薦系統是否具有馬太效應的簡單辦法。

G=1n1j=1n(2jn1)p(ij)G = \frac{1}{n-1}\sum_{j=1}^n(2j-n-1)p(i_j) 其中iji_j是按照物品流行度p從小到大排序的物品列表中第j個物品。

def GiniIndex(p):
    j = 1
    n = len(p)
    G = 0
    for item, weight in sorted(p.items(), key=itemgetter(1)):
        G += (2 * j - n - 1) * weight
    return G/float(n - 1)

三、多樣性

使用者的興趣是廣泛的,比如有的使用者即喜歡看動漫又喜歡看喜劇,往往使用者的興趣點會隨著時間變化,如果推薦列表只能夠覆蓋使用者的一個興趣點,而這個興趣點不是使用者時刻的興趣點,使用者就不會對推薦列表滿意。因此推薦列表需要儘量滿足使用者廣泛的興趣,即多樣性。

假設s(i,j)[0,1]s(i, j)\in [0, 1]定義了物品ijuR(u)i和j的相似度,那麼使用者u的推薦列表R(u)的多樣性定義如下: Diversity(R(u))=1i,jR(u)s(i,j)12R(u)(R(u)1)Diversity(R(u))=1-\frac{\sum_{i,j \in R(u)}s(i,j)}{\frac{1}{2}|R(u)|(|R(u)-1|)} 系統整體多樣性定義為所有使用者推薦列表多樣性的平均值: Diversity=1UuUDiversity(R(u))Diversity = \frac{1}{|U|\sum_{u\in U}Diversity(R(u))}