首页 > 代码库 > 基于朴素贝叶斯的内容推荐算法

基于朴素贝叶斯的内容推荐算法

论文出处: http://www.cs.utexas.edu/~ml/papers/libra-sigir-wkshp-99.pdf

引言

这篇文章里面将会详细介绍基于多项式贝叶斯的内容推荐算法的符号以及术语,公式推导以及核心思想,学习如何从文本分类的角度来实现物品推荐。详细了解算法过程后,你应该可以利用里面的公式来计算出某个用户对于单词级别的喜好强度列表(profile),根据这个强度大小来对其他物品(需先用该强度来对该物品做加权算出该物品的喜好强度)做一个推荐的排序,从而得到用户可能最喜欢的一些物品序列。

 

符号与术语

物品Item: 即用户打分以及待推荐的对象。

Solts: Item的一些属性,比如Item是一本书,那么solts就可能是书的title, author, related-title, related-author, 摘要, 用户评论等等。这些属性初始值一般都为自然语言文本, 需要通过一些手段对其进行处理, 比如分词和词干提取等等, 最终每个solts将得到一个 a bag of words,称作Documents,简写D或d.

Words: 单词

 

核心思想:

将文本分类看作喜欢和不喜欢两种分类,计算出用户对于各slot中的单词的喜好强度矩阵,根据这个值计算出用户对于物品的喜好强度。

 

 

算法步骤详解

1.物品特征分析以及文本处理

在这个阶段,需要给物品建立划分多个属性Solts,进行一些操作,比如合并相同或相似的Solts,

得到每个属性的自然语言文本字符串,并对该文本进行分词,词干提取等处理形成可供算法使用的Documents。

这个物品不仅仅局限于刚才提到的书,也可能是链接URL,那么属性可能就是URL所在网页的关键词,描述,摘要,所属的网站等等,这个属性的选择根据你物品的本身特征来决定。

 

2.learning a profile

在这个过程中,待分析的Item只是用户相关联的那些Item,因此计算量比遍历整个数据集要小很多。这个相关可以以多种形式表现,可以是该用户对该Item进行了评价,或者仅仅是访问了这个链接URL,但是不管是何种相关方式,我们只把其看作两个类别,喜欢和不喜欢。比如评分1-10分,那么1-5就是喜欢,6-10就是不喜欢。如果是URL,那么访问了就是喜欢,否则就是不喜欢。

 

为什么只看作两个类别?

相比于预测出物品某个属性的评分值rating,该算法只需要得到一个物品属性的ordered list就可以了(评分值高的排在前面),因此分类任务就转化为一个probabilistic binary categorization问题来预测这个物品是否是用户喜欢的。

 

公式推导

另外一个需要注意的是,在这个算法模型中,物品特征并不是a bag of words,而是 a vector of bags,因此不能直接用朴素贝叶斯来进行分类。但是针对某个solt,还是可以用多项式贝叶斯进行分类,即假设Documents的词汇表Vocabulary为V,  为词汇表中的单词,为类别j的概率, 那么根据朴素贝叶斯公式:

 

 

将我们的算法模型代入(1)式子,即将D由代替, 且加上一个给定类别j这个条件,上述公式就可以转化为

 

 

另外根据物品是由solts组成的这一事实,可以得到物品B的概率为组成B的所有solts的概率之积,并且这个等式在给定类别j的条件下也成立,可以推导出公式(3)

 

 

最后对于物品-solts应用朴素贝叶斯公式并将公式(3)和(2)依次代入得到最终的P(类别|物品)的概率, 推导过程如下

 

这里的S是solts的数量, 是a bag of words of specific solts, 而在第m个solt中的第i个单词。由于前面提到待分析的Item只是用户相关联的那些Item,即每个物品B用户都有对应的rating评分,因此可以根据朴素贝叶斯的最大似然的方式进行参数估计,从而确定参数

 

符号和术语

对于用户评分过的每个物品,因为只有两个类别因此物品都有两个评分的值, 记做为喜欢的情况,为不喜欢的情况

具体的取值有以下两种情况,如果是之前提到的访问链接URL这种形式,那么=1,=0

如果是评分制,假设 以区间1-10进行评分,评分值为r,那么, 。接下来就可以根据的值来对参数进行估计了,这里需要一些朴素贝叶斯参数估计的知识,因此建议看这篇文章的Maximum-Likelihood estimates for the Naive Bayes Model部分了解,这里不详细说明,只罗列出结果公式

其中N为总物品数,m为solts的数量,为物品喜欢或不喜欢的评分值,为物品的第m个solt中单词出现的次数。

上述公式(8)的分母可能为0,因此必须采用smooth方法进行避免,推荐采用Laplace平滑系数,即分子+1, 分母加上N, 最终我们得到了单词在属性下的喜好强度列表

喜好强度计算公式如下

 

这个计算公式的值就反映了solt中的某个单词对于用户喜好起到的作用,如果上述式子>0,则用户更倾向于喜欢该物品,而且值越大表明该单词起到的喜欢作用越大。遍历slots和词汇表V调用该公式就得到了一个单词喜好强度矩阵,如图

 

有了这个矩阵我们就是对新的物品进行推荐了, 首先我们计算出新物品各solt中单词出现的次数, 然后次数乘以这个矩阵中的强度得到用户对于该新物品的solt的喜好强度值,然后再根据实际情况给每个solt加一个权重值,根据此权重值进行加权就得到了用户对于该新物品的喜好强度值,一般按此值进行倒序排序呈现给用户即可完成推荐