07-01 推薦系統經常使用度量指標

更新、更全的《機器學習》的更新網站,更有python、go、數據結構與算法、爬蟲、人工智能教學等着你:http://www.javashuo.com/article/p-vozphyqp-cm.htmlpython

推薦系統經常使用評估指標

1、RMSE

加大了對預測不許的用戶物品評分的懲罰。算法

\[ \text{RMSE}=\sqrt\frac{\sum_{u,i\in{T}}(r_{ui}-\hat{r_{ui}})^2}{|T|} \]數據結構

# records[i] = [u,i,rui,pui] # rui是用戶u對物品i的實際評分,pui是用戶u對物品i的預測評分

def rmse(records):
    """計算均方根偏差"""
    
    return math.sqrt(sum([(rui-pui)*(rui-pui) for u,i,rui,pui in records])/len(records))

2、MAE

若是評分系統是基於整數創建的,對預測結果取整會下降MAE的偏差。機器學習

\[ \text{MAE}=\frac{\sum_{u,i\in{T}}|r_{ui}-\hat{r_{ui}}|}{|T|} \]學習

# records[i] = [u,i,rui,pui] # rui是用戶u對物品i的實際評分,pui是用戶u對物品i的預測評分

def mae(records):
    """計算平均絕對偏差"""
    
    return math.sqrt(sum([abs(rui-pui) for u,i,rui,pui in records])/len(records))

3、Precision(準確率)&Recall(召回率)

\[ \text{Precision}=\frac{\sum_{u\in{U}}|R(u)\bigcap{T(u)}|}{\sum_{u\in{U}}|R(u)|} \]
其中\(R(u)\)是用戶在訓練集上的行爲給用戶做出的推薦列表。測試

\[ \text{Recall}=\frac{\sum_{u\in{U}}|R(u)\bigcap{T(u)}|}{\sum_{u\in{U}}|T(u)|} \]
其中\(T(u)\)是用戶在測試集上的行爲給用戶做出的推薦列表。網站

def precision_recall(test, N):
    """
    計算準確率和召回率
    test: 
    N: 推薦列表長度
    """
    hit = 0
    n_recall = 0
    n_precision = 0

    for user, item in test.items():
        rank = Recommend(user, N)
        hit += lenn(rank & itmes)
        n_recall += len(items)
        n_precision += N

    return [hit/(1.*n_recall), hit/(1.*n_precision)]

4、覆蓋率

覆蓋率描述一個推薦系統對物品長尾的發掘能力。ui

\[ \text{Coverate}=\frac{|\bigcup_{u\in{U}}R(u)|}{I} \]
其中\(R(u)\)是推薦系統給每一個用戶推薦一個長度爲\(N\)的物品列表。人工智能

5、信息熵

信息熵能夠定義覆蓋率。

\[ H=\sum_{i=1}^np(i)\log{p(i)} \]
其中\(p(i)\)是物品\(i\)的流行度除以全部物品流行度之和。

6、基尼係數

基尼係數能夠定義覆蓋率。基尼係數也能夠查看推薦系統算法是否具備馬太效應(流行更流行,不流行更不流行)。

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

def gini_index(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)

7、多樣性

多樣性描述了推薦列表中物品兩兩之間的不類似性。

\[ \text{Diversity}(R(u))=1-\frac{\sum_{i,j\in{R(u)},i\neq{j}}s(i,j)}{\frac{1}{2}|R(u)|(|R(u)|-1)} \]
其中\(R(u)\)爲用戶\(u\)的推薦列表,\(s(i,j)\in[0,1]\)定義了物品\(i\)和物品\(j\)之間的類似度。

推薦系統的總體多樣性定義爲:
\[ \text{Diversity}=\frac{1}{|U|}\sum_{u\in{U}}\text{Diversity}(R(u)) \]

8、獲取各類評測指標的途徑

- 離線實驗 問卷調差 在線實驗
用戶滿意度 x y o
預測準確度 y y x
覆蓋率 y y y
多樣性 o y o
新穎性 o y o
驚喜度 x y x

9、長尾分佈

\[ f_i(k)=\alpha_ik^{\beta_i} \\ f_u(k)=\alpha_uk^{\beta_u} \]
其中\(f_u(k)\)表示對\(k\)個物品產生行爲的用戶數;\(f_i(k)\)表示被\(k\)個用戶產生過行爲的物品數。

相關文章
相關標籤/搜索