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

论文出处: 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加一个权重值,根据此权重值进行加权就得到了用户对于该新物品的喜好强度值,一般按此值进行倒序排序呈现给用户即可完成推荐

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

时间: 2024-08-02 13:14:50

基于朴素贝叶斯的内容推荐算法的相关文章

基于朴素贝叶斯的定位算法

1 定位背景介绍 一说到定位大家都会想到gps,然而gps定位有首次定位缓慢(具体可以参考之前的博文<LBS定位技术>).室内不能使用.耗电等缺陷,这些缺陷大大限制了gps的使用.在大多数移动互联网应用例如google地图.百度地图等,往往基于wifi.基站来进行定位. 一般APP在请求定位的时候会上报探测到的wifi信号.基站信号.以wifi为例,手机会探测到周围各个wifi(mac地址)对应的信号强度(RSSI),即收集到信号向量(<WF1, RSSI1> <WF2, R

《机器学习实战》学习笔记:基于朴素贝叶斯的分类方法

概率是许多机器学习算法的基础,在前面生成决策树的过程中使用了一小部分关于概率的知识,即统计特征在数据集中取某个特定值的次数,然后除以数据集的实例总数,得到特征取该值的概率. 目录: 一.基于贝叶斯理论的分类方法 二.关于朴素贝叶斯的应用场景 三.基于Python和朴素贝叶斯的文本分类 1.准备数据 2.训练算法 3.测试算法 四.小结 以下进入正文: 一.基于贝叶斯理论的分类方法 假设有两类数据组成的数据集如下: 其中,假设两个概率分布的参数已知,并用p1(x,y)表示当前数据点(x,y)属于类

(数据挖掘-入门-8)基于朴素贝叶斯的文本分类器

主要内容: 1.动机 2.基于朴素贝叶斯的文本分类器 3.python实现 一.动机 之前介绍的朴素贝叶斯分类器所使用的都是结构化的数据集,即每行代表一个样本,每列代表一个特征属性. 但在实际中,尤其是网页中,爬虫所采集到的数据都是非结构化的,如新闻.微博.帖子等,如果要对对这一类数据进行分类,应该怎么办呢?例如,新闻分类,微博情感分析等. 本文就介绍一种基于朴素贝叶斯的文本分类器. 二.基于朴素贝叶斯的文本分类器 目标:对非结构化的文本进行分类 首先,回顾一下朴素贝叶斯公式: 特征.特征处理:

详解基于朴素贝叶斯的情感分析及 Python 实现

相对于「 基于词典的分析 」,「 基于机器学习 」的就不需要大量标注的词典,但是需要大量标记的数据,比如: 还是下面这句话,如果它的标签是: 服务质量 - 中 (共有三个级别,好.中.差) ╮(╯-╰)╭,其是机器学习,通过大量已经标签的数据训练出一个模型, 然后你在输入一条评论,来判断标签级别 宁馨的点评 国庆活动,用62开头的信用卡可以6.2元买一个印有银联卡标记的冰淇淋, 有香草,巧克力和抹茶三种口味可选,我选的是香草口味,味道很浓郁. 另外任意消费都可以10元买两个马卡龙,个头虽不是很大

基于朴素贝叶斯的文本分类

前言:学习机器学习的过程意识到,数学是工科的基石.很多数学公式似懂非懂,因此有了这篇博客,想在学习每个模型的过程中搞懂其中的数学理论. 贝叶斯决策论 1.前置知识:先验概率与后验概率 先验概率P(B):根据以往经验和分析得到的概率 先验概率是一种常识性.经验性认知,比如抛硬币正反面的概率是1/2. 后验概率P(A|B):某个因素的到来影响了对某个结果发生可能性的判断 后验概率是基于已知,对结果发生的可能性一种推测. 比如:文本分类中,假设文章类别为3类,没有数据时,观测到类别c的概率是先验概率P

基于朴素贝叶斯算法的情感分类

环境 win8, python3.7, jupyter notebook 正文 什么是情感分析?(以下引用百度百科定义) 情感分析(Sentiment analysis),又称倾向性分析,意见抽取(Opinion extraction),意见挖掘(Opinion mining),情感挖掘(Sentiment mining),主观分析(Subjectivity analysis),它是对带有情感色彩的主观性文本进行分析.处理.归纳和推理的过程,如从评论文本中分析用户对"数码相机"的&qu

基于朴素贝叶斯的花生品种识别

最近一段时间,正在学习机器学习与模式识别,为了验证算法,仍然用了之前做过的项目的一些图片作为数据采集的样本,进行数据采集.前段时间,做了一个花生籽粒的识别程序,是基于SVM+HOG的,这次则是采用朴素贝叶斯来进行识别.采集了20个品种,每个品种50个样本,共1K个数据. 朴素贝叶斯分类器(Naive Bayes Classifier,或 NBC)发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率.同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单.理论上,NBC模型与

《机器学习实战》学习笔记:基于朴素贝叶斯的垃圾邮件过滤

概率是许多机器学习算法的基础,在前面生成决策树的过程中使用了一小部分关于概率的知识,即统计特征在数据集中取某个特定值的次数,然后除以数据集的实例总数,得到特征取该值的概率. 之前的基础实验中简单实现了朴素贝叶斯分类器,并正确执行了文本分类,这一节将贝叶斯运用到实际场景,垃圾邮件过滤这一实际应用. 实例:使用朴素贝叶斯过滤垃圾邮件 在上一节:http://blog.csdn.net/liyuefeilong/article/details/48383175中,使用了简单的文本文件,并从中提取了字符

基于朴素贝叶斯的书籍评价信息分类任务

import pandas as pd import jieba from sklearn.feature_extraction.text import CountVectorizer import numpy as np from sklearn.naive_bayes import MultinomialNB # 加载数据 data = pd.read_csv("./data.csv",encoding='ansi') print("data:\n",data)