推荐系统
一、一般步骤:
- 1、收集用户偏好
- 2、找到相似的用户或物品
- 3、计算推荐
二、相似度计算:
三、常见方法:
协同过滤(基于统计):
1.基于用户的协同过滤
- 要解决的问题
- 已知用户评分矩阵Matrix R (一般都是非常稀疏的)
- 推断矩阵中空格empty cells处的值
- 存在的问题
- 对于一个新用户,很难找到邻居用户。
- 对于一个物品,所有最近的邻居都在其上没有多少打分。
- 基础解决方案
- 相似度计算最好使用皮尔逊相似度。
- 考虑共同打分物品的数目,如乘上min(n,N)/N ; n:共同打分数 N:指定阈值
- 对打分进行归一化处理
- 设置一个相似度阈值
- 基于用户的协同过滤不流行的原因:
- 稀疏问题
- 数百万的用户计算,量太大
- 人是善变的
- 应用
- 实时新闻
- 突发情况
2.基于物品的协同过滤
- 优势
- 计算性能高,通常用户数量远大于物品数量
- 可预先计算保留,物品并不善变
- 应用
- 图书
- 电子商务
- 电影
3.冷启动问题
- 用户冷启动问题
- 引导用户吧自己的一些属性表达出来
- 利用现有的开放数据平台
- 根据用户注册属性
- 推荐排行榜单
- 物品冷启动问题
- 文本分析
- 主题模型
- 打标签
- 推荐排行榜单
4.两种方法的比较
隐语义模型(基于建模,矩阵分解):
- 从数据出发,进行个性化推荐
- 用户和物品之间有者隐含的联系
- 隐含因子让计算机能理解
- 将用户和物品通过中介隐含因子联系起来
- 隐语义模型
- 隐语义模型求解
- 隐语义模型负样本选择
- 隐语义模型参数选择
协同过滤 && 隐语义
四、模型评估标准
Note: 评估标准远远不止这些,还要根据具体场景进行相对应的评估。
五、使用surprise进行实践
- surprise的官方文档(https://surprise.readthedocs.io/en/stable/index.html)
- surprise的Github地址(https://github.com/NicolasHug/Surprise)
- 数据集地址(https://grouplens.org/datasets/)
- python依赖包的下载地址(https://www.lfd.uci.edu/~gohlke/pythonlibs/)