一般物品都有关于内容的分类,如书籍有科技、文学、历史等,商品有食物、衣物、家电等。基于内容的推荐就是根据这些属性、用户的历史评分以及操作记录计算出用户对不同内容属性的喜好程度。
以电影评分为例,A用户对《银河护卫队》《变形金刚》《星际迷航》三部电影都有评分,平均分为4.7((5+4+5)/3=4.7),对《三生三世》《美人鱼》《北京遇上西雅图》三部爱情剧的评分为2.3((3+2+2)/3=2.3。显然,A用户对科幻电影有明显偏好,可以预测用户对于科幻电影《独立日》的评分为4.7(当然这种推荐是很粗糙的),同理对于电影《三生三世》评分为2.3,因此推荐《独立日》给用户A。而用户B,则优先推荐《三生三世》。
基于内容的推荐算法基本可以分一下3个步骤:
1)内容的特征提取:即提取每个带推荐物品的特征(属性)。特征通常分为结构化的(structured)和非结构化的(unstructured)特征,结构化特征就是将特征限定在特定范围内,例如电影分类,通常限定有“爱情、战争。。。。”等特征,特征一旦设定好就是固定的。非结构化特征往往无固定格式,最常用的是非结构化数据就是文章。例如文章的推荐,我们往往将文本上的非结构化特征转换为结构化特征计入模型中使用。
例如:设个待推荐文章的集合为,所有文章的词的集合为,称之为词典。最终使用一个向量来表示每一篇文章,例如第篇文章表示为,其中表示第1个词在第篇文章的权重,该值越大越重要。的计算有如下几种方法:
1.基础统计:若词出现在第篇文章,则,否则,或者表示词在第个商品的出现次数。
2.词频统计法:基础统计法只考虑了词是否出现在某一文章,但并没有考虑其整体频次,例如一些常用词“我们、其他”等,大部分文章都会包含且没有什么实际意义,所以我们引入词频-逆文档频率(term frequency-inverse document frequency,简称TF-IDF),第篇文章里的第个词对应的TF-IDF为:。其中,表示第个词在第个商品中的出现次数,显然TF越大表明该词越重要,表示包含第个词的文章数量,显然越小词越重要,从而TF值越大,最终第个词在文章中的权重可以表示为:
归一化权重是为了把所有表示量归一到一个量级上,此时每篇文章表示为一个特征向量,对于用户的内容偏好,最简单的办法就是取用户喜欢文章特征向量的平均值,例如用户喜欢1、3、7文章,那么该用户的内容特征向量为:,用户在文章上的得分可用余弦公式计算:
2)用户偏好计算:利用用户显示评分或者隐式操作,计算用户不同特征上的偏好,例如用户A在科幻下的分数为4.7((5+4+5)/3=4.7),对于时间比较敏感的用户,分数可以添加时间衰减,time表示用户评分到现在的时间间隔。
3)内容召回:将待推荐物品特征与用户偏好匹配,得到用户最有可能喜欢的物品池,例如A用户的物品池为科幻电影的物品池,B用户的物品池为爱情电影的物品池。
4)物品排序:对于召回物品池内的物品进一步进行排序,例如用A户喜欢科幻电影,对于科幻电影物品池再根据之前打分进行排序。
内容的推荐方法有如下优点:
1)物品没有冷启动问题(物品冷启动问题一般对于物品时效性很强的网站十分重要,例如新闻网站,此时假如物品并不能被及时的推荐给用户,物品的价值就会大大降低。),因为物品的内容特征不依赖于用户数据,当然同时推荐的物品不会存在过于热门的问题;
2)可以为有特殊兴趣爱好的用户进行推荐;
3)原理简单,易于定位。