推荐问题

  1. 推荐情报信息。情报源在不断的接受新数据,用户在不断从情报平台中搜索、查看数据,需要根据用户历史上经常看哪些情报,逐渐构建用户画像,当再次收到新的数据后,为用户挖掘出他可能最感兴趣的数据。
  2. 推荐情报产品。情报产品的数据比较固定(比如 F16的基本属性数据),而且种类也较少。根据用户历史查看频率、当前收到的情报内容等,为用户做出产品推荐。

因为当前因为数据问题,没有直接的用户使用历史记录,暂时处在算法研究阶段,因此使用豆瓣电影推荐数据集,作为实验数据集,与1部数据集有很大的相似之处,关键数据字段基本相同。

数据集

豆瓣数据集

movie: Movie_id Name Genres Storyline Tags
rating: Rating_id User_id Movie_id Rating Rating_time

1部数据

基础字段:标题 内容 标签 所属分类
交互数据:浏览时长 点赞 评分 评论 下载 订阅 收藏

数据映射思路

将1部所收集的隐式反馈数据,通过函数映射到显示的评分数据:

基于豆瓣电影的推荐方法研究 - 图1

算法思路

  1. 基于物品相似度的方法
  2. 基于时间序列的推荐,构建用户画像,计算用户对物品的预估评分,然后推荐Top-K的数据

基于物品相似度的方法

  1. 整理数据集,获得每个用户的评分记录,按照时间顺序排列
  2. 将电影向量化表示。使用 gensim提供的word2vec方法,将文本向量化,并使用PCA进行降维。 name 用10维表示,storyline 用50维表示,tags 用10维表示
  3. 划分数据集,并构造测试集。构造推荐单元,将每个用户观看的前20部电影(评分大于等于4分的),作为用户的先验数据,将后面的电影(得分大于等于4分的),混合其他19部电影,作为候选池
  4. 建立相似度计算模型
  5. 进行推荐实验,评估Top-K的实验结果,寻找合适的K值,并分配name、storyline、tags这三部分的权重占比。

优点:

  • 这个方法就是计算物品的相似度,推荐出来相似度最高的物品。是常用的推荐方法,基于固定数学公式的计算,推荐效率较高,相比较来说,易于实现。

缺点:

  • 推荐效果对word2vec表示后的向量有一定的依赖。但如果基于标签自行构建one-hot向量表示,工作量大,而且降维处理和gensim内部的方法也是类似的。

基于时间序列的推荐

  1. 整理数据集,获得每个用户的评分记录,按照时间顺序排列
  2. 将电影向量化表示。使用 gensim提供的word2vec方法,将文本向量化,并使用PCA进行降维。 name 用10维表示,storyline 用50维表示,tags 用10维表示
  3. 划分数据集,并构造测试集。构造推荐单元,将每个用户观看的前20部电影(评分大于等于4分的),作为用户的先验数据,将后面的电影(得分大于等于4分的),混合其他19部电影,作为候选池
  4. 计算模型

预估评分:基于豆瓣电影的推荐方法研究 - 图2

其中:基于豆瓣电影的推荐方法研究 - 图3

用户偏好的矩阵描述就是 A

使用logistics回归,loss函数为:
基于豆瓣电影的推荐方法研究 - 图4