推荐算法精度评价指标

    用推荐算法给用户推荐的N个物品集合,记为R(u),  令用户u在测试集上喜欢的物品集合为T(u)

    就可以通过计算  准确率/召回率  来评测推荐算法的精度:

    准确率 Precision\sum_{u}^U\vert R(u)\cap T(u) \vert   /  \sum_{u}^U|R(u)|

    也就是推荐列表中用户真正喜欢的物品占推荐列表总数的比例,描述最终的推荐列表中有多少比例是发生过用户-物品评分记录

    召回率 Recall\sum_{u}^U |R(u)\cap T(u)|  /  \sum_{u}^U T(u)

    也就是推荐列表中用户真正喜欢的物品占测试集上用户所有喜欢物品总数的比例,

描述了有多少比例的用户-物品评分记录包含在最终的推荐列表中


       下面两段代码给出了 准确率/召回率  的计算方法:

```

def recall(train,test,N):

hit =0

    all =0

    for userin train.keys():

tu =test[user]#tu为测试集上该用户有过评分记录的物品集合

        rank = GetRecommendation(user,N)

for item,puiin rank:

if itemin tu:

hit +=1

        all +=len(tu)

return hit / (all *1.0)

```

```

def precision(train,test,N):

hit =0

    all =0

    for userin train.keys():

tu =test[user]

rank = GetRecommendation(user,N)

for item,puiin rank:

if itemin tu:

hit +=1

        all +=N

    return hit / (all *1.0)

```

    除了计算算法的 准确率/召回率 还应计算算法的覆盖率,覆盖率反映了算法发掘长尾的能力,覆盖率越高说明算法更能将长尾中的物品推荐给用户:

    覆盖率 Coverage|\bigcup_{u}^{U}R(U) | / | I |

    (长尾商品就是只那些不热门的商品,它往往代表了一小部分用户的个性化需求,这些不热门的商品数量极其庞大,因此这些长尾商品的总销售额将是一个不可小觑的数字,也许会超过热门商品(即主流商品)带来的销售额)

    覆盖率表示最终的推荐列表包含多大比例的物品,如果每个物品都至少被推荐给一个用户,那么覆盖率就是100%,用如下代码计算推荐算法的覆盖率:

```

def Coverage(train,test,N):

recommend_items =set()

all_items =set()

for userin train.keys():

for itemin train[user].keys():

all_items.add(item)

rank = GetRecommendation(user,N)

for item,puiin rank:

recommend_items.add(item)

return len(recommend_items) /(len(all_items) *1.0)

```

    最后,还需要评测算法的新颖度,可以采用推荐列表中物品的平均流行度来度量推荐结果的新颖度,如果推荐的物品都很热门,那么表明算法新颖度较低,反之,如果推荐的物品不是很热门的,表明新颖度较高,计算方法如下:

```

def Popularity(train,test,N):

item_popularity =dict()

for user, itemsin train.items():

for itemin items.keys():

if itemnot in item_popularity:

item_popularity[item] =0

            item_popularity[item] +=1

    ret =0

    n =0

    for userin train.keys():

rank = GetRecommendation(user,N)

for item,puiin rank:

ret += math.log(1 + item_popularity[item])

n +=1

    ret /= n *1.0

    return ret

```

推荐系统实践

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,620评论 0 11
  • 彩排完,天已黑
    刘凯书法阅读 4,331评论 1 3
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,225评论 2 7