基于MapReduce的朴素贝叶斯算法的实现与分析

一、朴素贝叶斯(Na?ve Bayes)分类器

1.1 公式

    • 朴素贝叶斯是一个概率分类器

    • 文档 d 属于类别 c 的概率计算如下(多项式模型):

    • nd是文档的长度(词条的个数)

    • P(tk |c) 是词项tk 出现在类别c中文档的概率,即类别c文档的一元语言模型
    • P(tk |c) 度量的是当c是正确类别时tk 的贡献
    • P(c) 是类别c的先验概率
    • 如果文档的词项无法提供属于哪个类别的信息,那么我们直接选择P(c)最高的那个类别

1.2 具有最大后验概率的类别

§朴素贝叶斯分类的目标是寻找“最佳”的类别

§最佳类别是指具有最大后验概率(maximum a posteriori -MAP)的类别 cmap:

1.3 对数计算

§很多小概率的乘积会导致浮点数下溢出

§由于 log(xy) = log(x) + log(y), 可以通过取对数将原来的乘积计算变成求和计算

§由于log是单调函数,因此得分最高的类别不会发生改变

§因此,实际中常常使用的是:

1.4 零概率问题

如果某词项不再某类别中出现,则包含词项的文档属于该类别的概率P=0.

即一旦发生令概率,则无法判断类别。

解决方法:加一平滑。

§平滑前:

§平滑后: 对每个量都加上1

§B 是不同的词语个数 (这种情况下词汇表大小 |V | = B)

1.5 两种常见模型

这里需要提到贝叶斯模型的两个独立性假设:位置独立性和条件独立性。

多项式模型和贝努力模型。前者考虑出现次数,后者只考虑出现与不出现,即0 与 1问题。

1.6 算法过程

训练过程:

测试/应用/分类:

1.7 实例

首先,第一步,参数估计:

接着,第二步,分类:

因此, 分类器将测试文档分到c = China类,这是因为d5中起正向作用的CHINESE出现3次的权重高于起反向作用的 JAPAN和TOKYO的权重之和。

二、基于MR的并行化实现

分两个阶段进行,首先是训练获取分类器,然后是预测。

文件的输入格式:每一行代表一个文本,格式为:类别名+文件名+文本内容

2.1 训练阶段

训练阶段要计算两种概率:[1] 每种类别的先验概率 [2] 每个term(单词)在每个类别中得条件概率。

这里采用多项式模型计算条件概率。

这里有两个job完成,伪代码如下:

这两段代码来自dongxicheng的博客,原文地址http://dongxicheng.org/data-mining/naive-bayes-in-hadoop/

2.2 测试阶段

­将训练阶段得到的数据加载到内存中,计算文档在每个类别的概率,找出概率最大的类别。

三、MR分析

测试数据:搜狗实验室 http://www.sogou.com/labs/resources.html?v=1

这里要先要将所有文档转成需要的文本格式,即一行代表一篇新闻。

训练集:75000篇新闻;测试集:5000篇新闻

最终测得分类精度为82%。

参考资料:dongxicheng http://dongxicheng.org/data-mining/naive-bayes-in-hadoop/

作者:西芒xiaoP

出处:http://www.cnblogs.com/panweishadow/

若用于非商业目的,您可以自由转载,但请保留原作者信息和文章链接URL。

时间: 2024-08-26 10:04:52

基于MapReduce的朴素贝叶斯算法的实现与分析的相关文章

基于TF-IDF及朴素贝叶斯的短文本分类

概括:朴素贝叶斯分类器(Naïve Bayes classifier)是一种相当简单常见但是又相当有效的分类算法,在监督学习领域有着很重要的应用.朴素贝叶斯是建立在“全概率公式”的基础下的,由已知的尽可能多的事件A.B求得的P(A|B)来推断未知P(B|A),是的有点玄学的意思,敲黑板!!! 优点: 模型训练使用TF-IDF对训练数据做词频及概率统计: 分类使用朴素贝叶斯计算所有类目的概率; 适用于电商的短文本分类,加入部分人工干预,top3准确率可达到95%左右: 分类预测完全可解释,不存在神

基于概率论的分类方法:朴素贝叶斯算法实践学习

      关于本文说明,本人原博客地址位于http://blog.csdn.net/qq_37608890,本文来自笔者于2017年12月12日 13:03:46所撰写内容(http://blog.csdn.net/qq_37608890/article/details/78738552).             本文根据最近学习机器学习书籍 网络文章的情况,特将一些学习思路做了归纳整理,详情如下.如有不当之处,请各位大拿多多指点,在此谢过.          通过前两篇文章,我们对于k-近

朴素贝叶斯之MapReduce版

1,统计词出现的次数 1/计算类别的先验概率 *输入格式:类别+文档id+文档词(切分成A,b,c) *输出格式:类别+文档出现次数+文档出现的词的总数 2/计算每个词的条件概率 *输入格式:类别+文档id+文档词(切分成A,b,c) *输出格式:类别+词+词的总数 3/假设二分类问题-计算概率值 * 1类别+文档出现次数+文档出现的词的总数 * 2类别+词+词的总数 * 3类别+词+log(词的总数/文档出现的词的总数),类别-log(文档出现次数/sum(文档出现次数)) * 输入格式:类别

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

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

NLP系列(4)_朴素贝叶斯实战与进阶(转)

http://blog.csdn.net/han_xiaoyang/article/details/50629608 作者: 寒小阳 && 龙心尘 时间:2016年2月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/50629608 http://blog.csdn.net/longxinchen_ml/article/details/50629613 声明:版权所有,转载请联系作者并注明出处 1.引言 前两篇博文介绍了朴素贝叶

C#编程实现朴素贝叶斯算法下的情感分析

C#编程实现 这篇文章做了什么 朴素贝叶斯算法是机器学习中非常重要的分类算法,用途十分广泛,如垃圾邮件处理等.而情感分析(Sentiment Analysis)是自然语言处理(Natural Language Progressing)中的重要问题,用以对文本进行正负面的判断,以及情感度评分和意见挖掘.本文借助朴素贝叶斯算法,针对文本正负面进行判别,并且利用C#进行编程实现. 不先介绍点基础? 朴素贝叶斯,真的很朴素 朴素贝叶斯分类算法,是一种有监督学习算法,通过对训练集的学习,基于先验概率与贝叶

NLP系列(4)_朴素贝叶斯实战与进阶

作者: 寒小阳 && 龙心尘 时间:2016年2月. 出处: http://blog.csdn.net/han_xiaoyang/article/details/50629608 http://blog.csdn.net/longxinchen_ml/article/details/50629613 声明:版权所有,转载请联系作者并注明出处 1.引言 前两篇博文介绍了朴素贝叶斯这个名字读着"萌蠢"但实际上简单直接高效的方法,我们也介绍了一下贝叶斯方法的一些细节.按照老规

实现 | 朴素贝叶斯模型算法研究与实例分析

实现 | 朴素贝叶斯模型算法研究与实例分析(白宁超2018年9月4日09:03:21) 导读:朴素贝叶斯模型是机器学习常用的模型算法之一,其在文本分类方面简单易行,且取得不错的分类效果.所以很受欢迎,对于朴素贝叶斯的学习,本文首先介绍理论知识即朴素贝叶斯相关概念和公式推导,为了加深理解,采用一个维基百科上面性别分类例子进行形式化描述.然后通过编程实现朴素贝叶斯分类算法,并在屏蔽社区言论.垃圾邮件.个人广告中获取区域倾向等几个方面进行应用,包括创建数据集.数据预处理.词集模型和词袋模型.朴素贝叶斯

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

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