`
蒙面考拉
  • 浏览: 160212 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

基于朴素贝叶斯分类器的文本分类(一)

 
阅读更多

 Preface

        本文缘起于最近在读的一本书 -- Tom M.Mitchell 的《机器学习》 书中第 6 章详细讲解了贝叶斯学习的理论知识,为了将其应用到实际中来,参考了网上许多资料,从而得此文。文章将分为两个部分,第一部分将介绍贝叶斯学习的相关理论 ( 如果你对理论不感兴趣,请直接跳至第二部分<<基于朴素贝叶斯分类器的文本分类算法(下) >> ) 。第二部分讲如何将贝叶斯分类器应用到中文文本分类,随文附上示例代码。

 Introduction

我们在《概率论和数理统计》这门课的第一章都学过贝叶斯公式和全概率公式,先来简单复习下:

条件概率

定义   A, B 是两个事件,且 P(A)>0  P(B A)=P(AB)/P(A) 为在条件 A 下发生的条件事件 B 发生的条件概率。

乘法公式   P(A)>0  则有 P(AB)=P(B A)P(A)

全概率公式和贝叶斯公式

定义   S 为试验 E 的样本空间, B1, B2, …Bn E 的一组事件,若 BiBj=Ф, i≠j, i, j=1, 2, …,n; B1 B2 Bn=S 则称 B1, B2, …, Bn 为样本空间的一个划分。

定理   设试验 E 的样本空间为, A E 的事件, B1, B2, …,Bn 为的一个划分,且 P(Bi)>0 (i=1, 2, …n) ,则 P(A)=P(A B1)P(B1)+P(A B2)+ …+P(A Bn)P(Bn) 称为全概率公式。

定理   设试验俄 E 的样本空间为 S A E 的事件, B1, B2, …,Bn 为的一个划分,则

P(Bi A)=P(A Bi)P(Bi)/∑P(B Aj)P(Aj)=P(B Ai)P(Ai)/P(B)

称为贝叶斯公式。说明: i j 均为下标,求和均是 1 n  

 下面我再举个简单的例子来说明下。

示例 1

考虑一个医疗诊断问题,有两种可能的假设:( 1 )病人有癌症。( 2 )病人无癌症。样本数据来自某化验测试,它也有两种可能的结果:阳性和阴性。假设我们已经有先验知识:在所有人口中只有 0.008 的人患病。此外,化验测试对有病的患者有 98% 的可能返回阳性结果,对无病患者有 97% 的可能返回阴性结果。

上面的数据可以用以下概率式子表示:

P(cancer)=0.008,P( cancer)=0.992

P( 阳性 |cancer)=0.98,P( 阴性 |cancer)=0.02

P( 阳性 | cancer)=0.03 P( 阴性 | cancer)=0.97

假设现在有一个新病人,化验测试返回阳性,是否将病人断定为有癌症呢?我们可以来计算极大后验假设:

P( 阳性 |cancer)p(cancer)=0.98*0.008 = 0.0078

P( 阳性 | cancer)*p( cancer)=0.03*0.992 = 0.0298

因此,应该判断为无癌症。

 贝叶斯学习理论

        贝叶斯是一种基于概率的学习算法,能够用来计算显式的假设概率,它基于假设的先验概率,给定假设下观察到不同数据的概率以及观察到的数据本身(后面我们可以看到,其实就这么三点东西,呵呵)。

       我们用 P(h) 表示没有训练样本数据前假设 h 拥有的初始概率,也就称为 h 的先验概率,它反映了我们所拥有的关于 h 是一个正确假设的机会的背景知识。当然如果没有这个先验知识的话,在实际处理中,我们可以简单地将每一种假设都赋给一个相同的概率。类似, P(D) 代表将要观察的训练样本数据 D 的先验概率(也就是说,在没有确定某一个假设成立时 D 的概率)。然后是 P(D/h) ,它表示假设 h 成立时观察到数据 D 的概率。在机器学习中,我们感兴趣的是 P(h/D), 也就是给定了一个训练样本数据 D, 判断假设 h 成立的概率,这也称之为后验概率,它反映了在看到训练样本数据 D 后假设 h 成立的置信度。(注:后验概率 p(h/D) 反映了训练数据 D 的影响,而先验概率 p(h) 是独立于 D 的)。

 

 

P(h|D) = P(D|h)P(h)/p(D), 从贝叶斯公式可以看出,后验概率 p(h/D) 取决于 P(D|h)P(h) 这个乘积,呵呵,这就是贝叶斯分类算法的核心思想。我们要做的就是要考虑候选假设集合 H ,并在其中寻找当给定训练数据 D 时可能性最大的假设 h h 属于 H )。

       简单点说,就是给定了一个训练样本数据(样本数据已经人工分类好了),我们应该如何从这个样本数据集去学习,从而当我们碰到新的数据时,可以将新数据分类到某一个类别中去。那可以看到,上面的贝叶斯理论和这个任务是吻合的。

朴素贝叶斯分类

 

也许你觉得这理论还不是很懂,那我再举个简单的例子,让大家对这个算法的原理有个快速的认识。(注:这个示例摘抄自《机器学习》这本书的第三章的表 3-2.

假设给定了如下训练样本数据,我们学习的目标是根据给定的天气状况判断你对 PlayTennis 这个请求的回答是 Yes 还是 No

 

Day

Outlook

Temperature

Humidity

Wind

PlayTennis

D1

Sunny

Hot

High

Weak

No

D2

Sunny

Hot

High

Strong

No

D3

Overcast

Hot

High

Weak

Yes

D4

Rain

Mild

High

Weak

Yes

D5

Rain

Cool

Normal

Weak

Yes

D6

Rain

Cool

Normal

Strong

No

D7

Overcast

Cool

Normal

Strong

Yes

D8

Sunny

Mild

High

Weak

No

D9

Sunny

Cool

Normal

Weak

Yes

D10

Rain

Mild

Normal

Weak

Yes

D11

Sunny

Mild

Normal

Strong

Yes

D12

Overcast

Mild

High

Strong

Yes

D13

Overcast

Hot

Normal

Weak

Yes

D14

Rain

Mild

High

Strong

No

 

 可以看到这里样本数据集提供了 14 个训练样本,我们将使用此表的数据,并结合朴素贝叶斯分类器来分类下面的新实例:

(Outlook = sunny,Temprature = cool,Humidity = high,Wind = strong)

我们的任务就是对此新实例预测目标概念 PlayTennis 的目标值 (yes no).

由上面的公式可以得到:

可以得到:

      P(PlayTennis =yes) = 9/14 = 0.64,P(PlayTennis=no)=5/14 = 0.36

      P(Wind=Stong| PlayTennis =yes)=3/9=0.33,p(Wind=Stong| PlayTennis =no)=3/5 = 0.6

其他数据类似可得,代入后得到:

P(yes)P(Sunny|yes)P(Cool|yes)P(high|yes)P(Strong|yes) = 0.0053

P(no)P(Sunny|no)P(Cool|no)P(high|no)P(Strong|no)=0.0206

因此应该分类到 no 这一类中。

 

贝叶斯文本分类算法

       好了,现在开始进入本文的主旨部分:如何将贝叶斯分类器应用到中文文本的分类上来?

根据联合概率公式(全概率公式)

 

M—— 训练 文本集 合中经过踢 出无用词去除文本预处理之后关键字的数 量。

分享到:
评论

相关推荐

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

    朴素贝叶斯分类器是一种基于概率的机器学习方法,它在文本分类领域有着广泛的应用。该模型基于贝叶斯定理,并且通过“朴素”这一假设来简化计算,即假设特征之间是相互独立的。这一假设使得朴素贝叶斯分类器能够高效...

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

    朴素贝叶斯分类器基于贝叶斯定理,该定理表述为:P(A|B) = P(B|A) * P(A) / P(B),其中A和B是两个事件。在文本分类中,A代表类别,B代表特征。我们想要计算给定特征集B时,文档属于类别A的概率。 二、Python实现 ...

    基于hadoop的朴素贝叶斯分类器

    朴素贝叶斯分类器是一种基于概率的机器学习算法,它基于贝叶斯定理和特征条件独立假设。在大数据处理领域,结合Hadoop框架可以实现大规模数据集的分类任务。Hadoop是一个开源分布式计算框架,它允许在大量廉价硬件上...

    人工智能-项目实践-朴素贝叶斯分类器-朴素贝叶斯文本分类器

    人工智能_项目实践_朴素贝叶斯分类器_朴素贝叶斯文本分类器 **数据:**搜狗文本分类语料库 **分类器:**朴素贝叶斯分类器 NBC(Naive Bayesian Classifier) **编程语言:**Python+jieba分词库+nltk+sklearn

    朴素贝叶斯分类器算法

    朴素贝叶斯分类器是一种基于概率的机器学习算法,它基于贝叶斯定理和特征条件独立假设。在"朴素贝叶斯分类器算法"中,我们主要关注以下几个知识点: 1. **贝叶斯定理**:贝叶斯定理是统计学中的一个重要概念,用于...

    基于朴素贝叶斯分类器的文本分类算法(C语言).doc

    基于朴素贝叶斯分类器的文本分类算法(C语言).doc

    基于朴素贝叶斯算法的文本分类程序_Python

    尽管在实际问题中这一假设往往过于简化,但在许多情况下,朴素贝叶斯分类器仍然能够取得不错的效果。 在文本分类中,每个文档可以看作是由一系列单词(特征)组成的,朴素贝叶斯算法计算每个类别的先验概率(文档...

    基于权重的朴素贝叶斯分类器设计与实现.pdf

    ### 基于权重的朴素...综上所述,基于权重的朴素贝叶斯分类器的设计与实现,为文本分类领域带来了新的突破,不仅理论上有创新,而且在实践中也展示了显著的改进效果,对于推动文本信息处理技术的发展具有重要意义。

    基于Hadoop实现朴素贝叶斯文本分类器.zip

    最后,利用这些概率统计信息构建朴素贝叶斯分类器,当有新的文本数据需要分类时,同样通过MapReduce框架进行预测。 在这个项目中,“Hadoop-Naive-Bayes-main”可能包含了实现这个功能的源代码。源码可能包括了数据...

    一种文本处理中的朴素贝叶斯分类器

    朴素贝叶斯分类器作为一种基于概率的机器学习模型,在文本分类领域具有广泛的应用。该文首先介绍了朴素贝叶斯分类器的基本原理,包括特征独立性假设,并探讨了如何训练及应用朴素贝叶斯分类器来进行文本分类。此外,...

    朴素贝叶斯分类Iris数据

    在分类阶段,对于一个新的未知样本,朴素贝叶斯分类器会计算其属于每个类别的后验概率P(class|features),并将其分配到概率最大的类别。由于朴素贝叶斯假设特征之间相互独立,这简化了计算,使得模型训练和预测效率...

    基于朴素贝叶斯机器学习算法实现情感文本分析与分类

    #清磁盘啦~,CSDN“网盘”真好用,感谢CSDN~ 机器学习,基于朴素贝叶斯机器学习算法实现对情感文本分析与分类(含数据集),sgns.weibo.bigram-char,使用gensim加载预训练中文分词

    基于朴素贝叶斯分类器的文本分类算法(C语言)-综合文档

    基于朴素贝叶斯分类器的文本分类算法是自然语言处理领域中的一种常见算法。朴素贝叶斯分类器(Naive Bayes Classifier)是一种基于贝叶斯定理的分类算法,它假设每个特征之间是相互独立的。该算法广泛应用于文本分类...

    论文研究-朴素贝叶斯分类器的构建 .pdf

    朴素贝叶斯分类器是一种基于贝叶斯定理的概率分类方法,它简单且易于实现,广泛应用于文本分类、垃圾邮件过滤、情感分析等众多领域。朴素贝叶斯分类器的核心是基于属性条件独立的假设,即一个属性的出现不影响其他...

    基于朴素贝叶斯方法的垃圾邮件分类器

    朴素贝叶斯分类器基于贝叶斯定理和特征条件独立假设,计算每个类别的先验概率以及每个特征在每个类别下的条件概率。 4. 测试与评估:将测试集(可能包含ham和spam邮件)输入到训练好的模型中,比较预测结果与真实...

    C++实现朴素贝叶斯分类器

    朴素贝叶斯分类器是一种基于概率的机器学习算法,它基于贝叶斯定理和特征条件独立假设。在C++中实现朴素贝叶斯分类器,可以为各种数据分类任务提供一个高效且易于理解的解决方案。 首先,我们需要理解贝叶斯定理。...

    朴素贝叶斯分类器,用于识别手写的数字A~J

    朴素贝叶斯分类器是一种基于概率的机器学习算法,它在数据分类中有着广泛的应用,尤其是在文本分类、垃圾邮件过滤和图像识别等领域。这个特定的案例是针对手写数字的识别,目标是从A到J这10个字符进行区分。 在手写...

    朴素贝叶斯分类器

    朴素贝叶斯分类器是一种基于概率的机器学习算法,它基于贝叶斯定理和特征条件独立假设。在本项目中,我们有一个简单的朴素贝叶斯分类器实现,使用Python编程语言,可能还利用了诸如sklearn这样的机器学习库。 首先...

Global site tag (gtag.js) - Google Analytics