基于内容的推荐
一、概念
基于内容的推荐算法(Content-Based Recommendations ,CB)理论依据主要来自于信息检索和信息过滤,是最早被使用的推荐算法,它的思想非常简单:根据用户过去喜欢的物品(item),为用户推荐和他过去喜欢的物品相似的物品。而关键就在于这里的物品相似性的度量,这才是算法运用过程中的核心。
举个例子来说,在音乐网站或者资讯网站注册过程中用户需要选择自己的兴趣标签,这就是为了把合适的内容推荐给用户。
需要注意的是物品的特征抽取一般很难。如果系统中的物品是文档(如个性化阅读中),那么我们现在可以比较容易地使用信息检索里的方法来”比较精确地”抽取出物品的特征。但很多情况下我们很难从物品中抽取出准确刻画物品的特征,比如电影推荐中物品是电影,社会化网络推荐中物品是人,这些物品属性都不好抽。其实,几乎在所有实际情况中我们抽取的物品特征都仅能代表物品的一些方面,不可能代表物品的所有方面。
二、实现基于内容的推荐
1、执行步骤
step 1: 物品表示(Item Representation)
为每个物品抽取出一些特征(也就是item的content)来表示此物品。
真实应用中的物品往往都会有一些可以描述它的属性。这些属性通常可以分为两种:结构化的属性与非结构化的属性。所谓结构化的属性就是这个属性的意义比较明确,其取值限定在某个范围;而非结构化的属性往往其意义不太明确,取值也没什么限制,不好直接使用。比如在交友网站上,物品就是人,一个物品会有结构化属性如身高、学历、籍贯等,也会有非结构化属性(如item自己写的交友宣言,博客内容等等)。对于结构化数据,我们自然可以拿来就用;但对于非结构化数据(如文章),我们往往要先把它转化为结构化数据后才能在模型里加以使用。
step 2: 特征学习(Profile Learning)
利用一个用户过去喜欢(及不喜欢)的物品的特征数据,来学习出此用户的喜好特征。
假设用户已经对一些物品给出了他的喜好判断,喜欢其中的一部分物品,不喜欢其中的另一部分。那么,这一步要做的就是通过用户过去的这些喜好判断,为他产生一个模型。有了这个模型,我们就可以根据此模型来判断用户是否会喜欢一个新的物品。所以,我们要解决的是一个典型的有监督分类问题,理论上机器学习里的分类算法都可以照搬进这里。
step 3: 生成推荐列表(Recommendation Generation)
通过比较上一步得到的用户画像与候选物品的特征,为此用户推荐一组相关性最大的物品。用户画像与物品属性的相关性可以使用如余弦相似度等度量方法获得。
2、数据示例
ratings.txt
1 | userId,movieId,rating,timestamp |
movies.txt
1 | movieId,title,genres |
数据集下载
链接:https://pan.baidu.com/s/14yGqGzTrlK63SgQujnH-bA
提取码:xol5
3、代码实现
1 | # coding: utf-8 |