20180608 开始第三章的学习
20180620 完成大致内容的阅读
20180621 (计划)阅读论文完善《在登陆时要求用户对一些物品进行反馈》这一章的遗留部分
冷启动问题是什么?
推荐系统是建立在大量的用户行为数据上的,如果一个个性化推荐系统在启动之初,不具备大量的用户行为数据,怎么设计一个个性化推荐系统并且让用户对推荐的结果满意,初步 产生用户粘性。这就是冷启动问题需要考虑的范畴。利用用户的注册信息
主要是如何通过用户注册时填写的人口统计信息给用户提供粗粒度的个性化推荐。人口统计信息包括:年龄、性别、工作、学历、居住地、国际、民族等。
基于注册信息的个性化推荐算法基本流程如下:
- 获取用户的注册信息
- 根据用户的注册信息对用户进行分类
- 给用户推荐他所属分类的用户喜欢的物品
一种简单的推荐方式是:分别保存用户的性别-物品相关表、年龄-物品相关表、学历-物品相关表。当新来一个用户时,按照用户填写的基本信息分别查询这些表,并将这些表中的topN按照一定权重相加,得到最终的推荐表。另一种方式是考虑组合特征,比如将年龄性别作为一个特征来处理。
基于注册信息的推荐最重要的第三步,计算每个特征的用户喜欢的物品。一般可以这样定义物品i在具有特征f的用户中的热门程度:其中N(i)表示喜欢物品i的用户集合,U(f)表示具有特征f的用户集合。分母用于避免热门物品具有太高的权重,$\alpha$为了解决稀疏问题,一般$\alpha$的值比较大。
使用Last.fm的年龄、性别、国家和喜好物品的数据集,通过实验可以发现分类的粒度越细致,召回率、准确率和覆盖率就会越高。比如单纯使用性别-物品(相当于2个类别)进行推荐的效果不如使用性别、年龄段、国家三个特征(2 * 5 * |国家数目|个类别)进行推荐。
在登陆时要求用户对一些物品进行反馈
对于需要用户首先对物品进行评分,然后才能开启个性化推荐的系统来说,需要解决的首要问题是,如何选择让用户进行评分的启动物品,一般来说需要具有以下的特征:
- 热门
- 具有代表性和区分性
- 启动物品集合需要有多样性 启动物品需要具有高覆盖率来覆盖几乎主流的用户兴趣。
在论文Adaptive Bootstrapping of Recommender Systems Using Decision Trees中,作者使用决策树设计了一个选择启动物品集合的算法。选择合适的启动物品这个问题,也可以看成是选择最能区分人群的物品,决策树算法在每层划分节点的时候,都会选择信息熵最大的那个特征进行划分。那么类比到这里,我们可以在划分时,使用能最大程度划分用户兴趣的物品。方差可以用来衡量一群用户的兴趣程度。(暂时先到这里,这部分还没有看懂,等我看了论文之后补充)
利用物品的内容信息
主要是针对物品冷启动问题。新物品需要能够在第一时间展现给用户。在前一章的UserCF和ItemCF中,UserCF对新加入的物品不敏感,因为他的工作原理是推荐与用户兴趣相似的一群用户喜欢的物品,因此新物品进入推荐列表需要解决第一推动力问题,然后才能扩散到更多的用户列表中。ItemCF的原理是推荐给用户和他历史喜欢的物品相似的物品,系统会事先计算好物品-物品相关性矩阵,新的物品不会存在于这个矩阵中。虽然可以通过频繁更新物品相似度表来解决,但是基于用户行为计算物品相似度非常耗时。所以也需要利用物品内容进行相似性计算物品相关度矩阵,然后推荐给用户。
物品的相似性计算:
- 使用空间向量模型将物品的文字表述或者是关键字转化为空间向量(中文需要经历分词、关键字抽取、重要性排序TF-IDF、关键字向量),空间向量的每个分量都是权值,表示关键字对应的权重。可以使用TF-IDF计算权重,避免热门关键词对向量构建的影响。
- 使用余弦相似计算来物品对应的向量两两之间的相似性。考虑到计算的时间复杂度,可以先创建关键字-物品倒排表(和UserCF的原理类似)
- 利用之前的ItemCF的方式,将新物品推荐给用户。
基于物品内容的推荐算法---ContentItemKNN与ItemCF算法的比较
基于物品内容的推荐算法ContentItemKNN,也就是上面提到的先利用空间向量计算余弦相似性,然后基于相似性进行推荐的算法,具有计算简单并且可以解决物品冷启动问题,但是当内容向量比较稀疏的时候,它在准确率和召回率上的表现都仅仅优于随机推荐,差于mostpopular推荐,更差于ItemCF。只有当用户的行为强烈收到某一内容属性影响的时候,ContentItemKNN才会在精度上优于ItemCF(在github数据集上的表现,ContentItemKNN要优于ItemCF ,因为作者这一个内容属性是一个强属性)。但是这种强内容不是所有物品都会拥有的。总结来说,ContentItemKNN算法强烈受到内容多少以及内容质量的影响,不如ItemCF普适。
空间向量模型在内容数据丰富的时候效果很好,但是在内容稀疏的时候则不能很好的衡量两个物品之间的相似度。有时候两篇文章应该是相同的,但是因为标题的关键字表面上没有关系,因此空间向量模型不能知道其中的关系。这时候就需要话题模型来建立文章、话题和关键字之间的联系。经典的话题模型是LDA,关于这个算法的具体思想可以参考David M. Blei的论文“Latent Dirichlet Allocation”
引入专家系统
对物品进行人工的标记,比如电影可以标记心情、剧情类型、类别、故事时间、地点、观众类型、获奖情况、风格、主旨、画面技术等等。Jinni在电影标记中采用了半人工半自动的方式,在专家标记了一定样本之后使用自然语言理解和机器学习技术,通过分析用户对电影的评价和电影自身的内容属性对新电影进行自我标记。同时还设置了用户反馈界面,通过用户反馈进行改善。