推荐系统实践读书笔记

一、推荐系统实验方法

1. 离线实验

  • 推荐算法在样本上的表现(准确率, 召回率,auc等);
  • 优点:不需要实际推荐系统的控制权,速度快;
  • 缺点:无法计算业务关注的真实指标,离线结果与线上存在差距;

2. 用户调查

  • 通常为用户问卷调查
  • 优点:能够体现用户真实的兴趣;
  • 缺点:成本较高;

3. 在线实验

  • AB实验
  • 优点:能够获取真实的业务数据;
  • 缺点:需要保证AB同质,但实际中对照组和实验组通常存在相互干扰;

二、推荐算法的评价指标

  • 用户满意度(问卷反馈,点击率,转化率,停留时长等);
  • 预测准确度(准确率,召回率,预测得分与真实得分之间的差异等);
  • 覆盖率:推荐系统推荐出来的物品占总物品集合的比例;
  • 多样性:通过物品之间的相似性反推多样性,推荐结果多样性越高,物品之间的相似度越低;
  • 新颖性:推荐结果的流行度平均值,物品的流行度就是对该物品发生过行为的用户数,物品的流行度越低,说明推荐结果新颖性越高;
  • 惊喜度:与用户历史兴趣不同,但是让用户满意的物品,目前没有明确的度量方式;
  • 信任度:用户对推荐平台的信任程度,通常通过问卷调查获得;
  • 实时性:推荐结果的时效性,特别是新闻等时效性比较高的场景;
  • 健壮性:就是推荐系统的稳定性;
  • 业务指标:转化,收入等

二、基于用户行为的推荐算法

1.协同过滤

  • 基于用户行为的协同过滤(UCF);
  • 基于物品的协同过滤(ICF);

2.评分预测

  • 矩阵分解(用户-物品评分矩阵分解,比如隐语义模型(LFA)及各种变形算法);

3.图算法

  • 随机游走,比如PersonalRank算法
#!/usr/bin/env/python3
# -*- coding: utf-8 -*-

import time

def PersonaLRank(G, alpha, root, max_step):
 rank = dict()
 rank = {x:0 for x in G.keys()}
 rank[root] = 1
 sr = [str(x) for x in rank.keys()]
 print('\t'.join(sr))

 for k in range(max_step):
     # print("*******%d***********" % k)
     temp = {x:0 for x in G.keys()}
     for i, ri in G.items():
         for j, wij in ri.items():
             if j not in temp:
                 temp[j] = 0
             temp[j] += alpha * rank[i] / (1 * len(ri))
             if j == root:
                 temp[j] += 1 - alpha

     rank = temp
     # lst = sorted(rank.items(), key=lambda x: x[1], reverse=True)
     # for ele in lst:
     #     print("%s:%.3f" % (ele[0], ele[1]))
     # print(lst)
     lst = []
     for r in sr:
         lst.append(str(rank[r]))
     print('\t'.join(lst))

 return rank


if __name__ == "__main__":
 start = time.time()
 alpha = 0.8
 # 大写字母表示用户,小写字母表示物品
 G = {'A': {'a': 1, 'c': 1},
      'B': {'a': 1, 'b': 1, 'c': 1, 'd': 1},
      'C': {'c': 1, 'd': 1},
      'a': {'A': 1, 'B': 1},
      'b': {'B': 1},
      'c': {'A': 1, 'B': 1, 'C': 1},
      'd': {'B': 1, 'C': 1}}
 PersonaLRank(G, alpha, 'b', 30)
 end = time.time()
 cost_time = end - start
 print("cost_time: ", cost_time)

4.用户标签

  • 打标签:用户自定义(比如豆瓣的电影类别)
  • 通过标签进行推荐

5. 上下文

  • 时间:该行为发生的时间越晚,认为该行为权重越高;
  • 地点:不同地区的兴趣存在差异,比如一二线城市,商场或者家;

三、冷启动

  • 利用用户注册信息:年龄,性别,民族,位置等;
  • 用户兴趣的文字描述;
  • 从第三方网站导入的数据;
  • 热门,具有代表性的物品;
  • 专家+半监督学习
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值