引言

这篇文章里面将会具体介绍基于多项式贝叶斯的内容推荐算法的符号以及术语,公式推导以及核心思想,学习怎样从文本分类的角度来实现物品推荐。

具体了解算法过程后,你应该能够利用里面的公式来计算出某个用户对于单词级别的喜好强度列表(profile),依据这个强度大小来对其它物品(需先用该强度来对该物品做加权算出该物品的喜好强度)做一个推荐的排序,从而得到用户可能最喜欢的一些物品序列。


符号与术语

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

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

Words: 单词

三者的关系能够用下图表示

基于朴素贝叶斯的内容推荐算法_公式推导


核心思想:

1.将文本分类看作喜欢和不喜欢两种分类

2.将物品看作由solt组成,而且solt是由a bag of words组成

3.计算出用户对于各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,  基于朴素贝叶斯的内容推荐算法_自然语言_02为词汇表中的单词。基于朴素贝叶斯的内容推荐算法_文本分类_03基于朴素贝叶斯的内容推荐算法_自然语言_04为类别j的概率, 那么依据朴素贝叶斯公式:


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


将我们的算法模型代入(1)式子,即将D由基于朴素贝叶斯的内容推荐算法_朴素贝叶斯_06取代, 且加上一个给定类别j这个条件,上述公式就能够转化为


基于朴素贝叶斯的内容推荐算法_公式推导_07


另外依据物品是由solts组成的这一事实。能够得到物品B的概率为组成B的全部solts的概率之积。而且这个等式在给定类别j的条件下也成立,能够推导出公式(3)


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


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


基于朴素贝叶斯的内容推荐算法_自然语言_09

这里的S是solts的数量, 基于朴素贝叶斯的内容推荐算法_朴素贝叶斯_06是a bag of words of specific solts, 而基于朴素贝叶斯的内容推荐算法_多项式_11在第m个solt中的第i个单词。因为前面提到待分析的Item仅仅是用户相关联的那些Item。即每一个物品B用户都有相应的rating评分,因此能够依据朴素贝叶斯的最大似然的方式进行參数预计,从而确定參数基于朴素贝叶斯的内容推荐算法_朴素贝叶斯_12基于朴素贝叶斯的内容推荐算法_文本分类_13


符号和术语

对于用户评分过的每一个物品基于朴素贝叶斯的内容推荐算法_朴素贝叶斯_14,由于仅仅有两个类别因此物品都有两个评分的值, 记做基于朴素贝叶斯的内容推荐算法_朴素贝叶斯_15基于朴素贝叶斯的内容推荐算法_多项式_16为喜欢的情况,基于朴素贝叶斯的内容推荐算法_文本分类_17为不喜欢的情况

详细基于朴素贝叶斯的内容推荐算法_自然语言_18的取值有下面两种情况。假设是之前提到的訪问链接URL这样的形式,那么基于朴素贝叶斯的内容推荐算法_多项式_16=1,基于朴素贝叶斯的内容推荐算法_文本分类_17=0

如果是评分制,如果 以区间1-10进行评分,评分值为r,那么基于朴素贝叶斯的内容推荐算法_多项式_21。 基于朴素贝叶斯的内容推荐算法_公式推导_22

接下来就能够依据基于朴素贝叶斯的内容推荐算法_自然语言_18的值来对參数进行预计了,这里须要一些朴素贝叶斯參数预计的知识。因此建议看​​这篇文章​​的Maximum-Likelihood estimates for the Naive Bayes Model部分了解。这里不具体说明,仅仅罗列出结果公式

基于朴素贝叶斯的内容推荐算法_公式推导_24

基于朴素贝叶斯的内容推荐算法_文本分类_25

基于朴素贝叶斯的内容推荐算法_公式推导_26

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

当中N为总物品数,m为solts的数量。基于朴素贝叶斯的内容推荐算法_自然语言_18为物品基于朴素贝叶斯的内容推荐算法_公式推导_29喜欢或不喜欢的评分值,基于朴素贝叶斯的内容推荐算法_多项式_30为物品基于朴素贝叶斯的内容推荐算法_公式推导_29的第m个solt中单词基于朴素贝叶斯的内容推荐算法_朴素贝叶斯_32出现的次数。

上述公式(8)的分母可能为0,因此必须採用smooth方法进行避免,推荐採用Laplace平滑系数。即分子+1, 分母加上N, 终于我们得到了单词基于朴素贝叶斯的内容推荐算法_朴素贝叶斯_32在属性基于朴素贝叶斯的内容推荐算法_自然语言_34下的喜好强度列表

喜好强度计算公式例如以下


基于朴素贝叶斯的内容推荐算法_多项式_35

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

基于朴素贝叶斯的内容推荐算法_文本分类_36


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