基于内容的推荐系统
转自http://blog.sina.com.cn/s/blog_6f7265cf0101nbfm.html
推荐系统随处可见,比如推荐歌词、推荐广告、推荐文章,这里谈到的是基于内容的推荐系统。
基于内容的推荐(Content-based Recommendations),根据用户过去喜欢的产品,为用户推荐和他过去喜欢的产品相似的产品。主要包括以下三个步骤:
一、产品的表示,也可以称为特征的表示。产品可以包括图片、文章、数据等等,基本上可以分为两类,一类是结构化数据,可以直接明确其中的意义;另一类是非结构化数据,比如文章的内容,无法直接确定意义,通常需要转换。在转换的方法中常用的词频-逆文档频率(term frequency–inverse document frequency,简称TF-IDF)。词典里第k个词与第j篇文章中对应的TF-IDF值为:
其中,TF()为第k个词在文章j中出现的次数,nk是所有文章中包括第k个词的文章数量。第k个词在文章j中的权重为:
有了词在文章中的权重之后就可以表示出该文章的特征向量。哦也~
二、为用户的喜好建立模型,即profile。这里需要以前的该用户数据,也可以看成是监督学习。训练集就是用户数据,里面的类别就是喜好程度。简单介绍一些分类方法:
1.贝叶斯分类器
我们需要一个分类模型,即类条件概率和先验概率,这样每有一个候选集里的值都有一个后验概率。贝叶斯分类器的关键是类条件概率的计算。
贝叶斯分类器里很重要的一种算法是朴素贝叶斯分类器(Naive Bayes,简称NB)。
前提假设:每个词出现的概率相互独立。虽然假设不靠谱,但结果惊人的好。常被用来做文本分类,往往是很多分类为最先被尝试的算法。这里因为是朴素贝叶斯分类器,类条件概率相互独立,可以计算每个属性的条件概率值然后连乘。
另外还有贝叶斯信念网、高斯混合模型等算法,不再介绍。
2.决策树
当数据数量少而且是结构化属性,可以考虑。如若不然,例如文章,效果就不一定好,不多做介绍。
3.神经网络
也是输入输出的对应函数的一种模型,输出可以看成是喜好程度,不多做介绍。
4.专家系统
专家系统是源于里面有很多的推理规则。
5.最近邻
最近邻方法(k-Nearest Neighbor,简称kNN),也是分类器的一种,优点是不需要训练。
6.线性分类器
找到线性判决面,比如SVM。
7.最大熵
熵是度量数据的变化程度,可以反映出能量大小。用分布模拟出训练数据,使分布的熵最大化,即最大熵模型。
三、产生结果。有了模型之后,就可以针对候选集里的每一个数据进行模型值的估计,然后将最能匹配的前N个返回。
基于内容推荐的优点:
1.用户之间相互独立,profile只针对本人的模型训练。
2.易于理解。
3.新的候选集可以立即判定。
基于内容推荐的缺点:
1.特征抽取困难而且不太准确。
2.无法挖掘潜在兴趣。
3.新用户没有推荐。
目前大部分的推荐系统都是以其他算法为主(如协同过滤),而辅以基于内容推荐以解决主算法在某些情况下的不精确性(如解决新候选集问题)。