`

Bayes文本分类算法案例 学习笔记

阅读更多
在文本分类中,假设我们有一个文档d∈X,X是文档向量空间(document space),和一个固定的类集合C={c1,c2,c3,...,cj},类别又称为标签.显然,文档向量空间是一个高纬度空间.我们把一堆打了标签的文档集合<d,c>作为训练样本,<d,c>∈X×C,
例如:<d,c>={Beijing joins the World Trade Organization,China}
对于这个只有一句话的文档,我们把它归类到China,即打上China标签.
我们期望用某种训练算法,训练出一个函数y,能够将文档映射到某一个类别:y:X→C
这种类型的学习方法叫做有监督学习,因为事先有一个监督者(我们事先给出了一堆打好标签的文档),像个老师一样监督着整个学习过程.
朴素贝叶斯分类器是一种有监督学习,常见有两种模型,多项式模型(multinomial model)和伯努利模型(Bernoulli model).

多项式模型案例:
给定一组分类好了的文本训练数据,如下:
dociddoc类别 in C=China?
1Chinese Beijing Chineseyes
2Chinese Chinese Shanghaiyes
3Chinese Macaoyes
4Tokyo Japan Chineseno

给定一个新样本Chinese ChineseChinese Tokyo Japan,对其进行分类?

该文本用属性向量表示为d=(Chinese,Chinese,Chinese,Tokyo,Japan),类别集合为Y{yes,no}.

先验概率计算如下:
类yes下总共有8个单词,类no下总共有3个单词,训练样本单词总数为11,因此P(yes)=8/11,P(no)=3/11.

类条件概率计算如下:
P(Chinese|yes)=(5+1)/(8/6)=6/14=3/7
P(Japan|yes)=P(Tokyo|yes)=(0+1)/(8+6)=1/14
P(Chinese|no)=(1+1)/(3+6)=2/9
P(Japan|no)=P(Tokyo|no)=(1+1)/(3+6)=2/9

分母中的8是指yes类别下text的长度,也即训练样本的单词总数,6是指训练样本有Chinese,Beijing,Shanghai,Macao,Tokyo,Japan共6个单词,3是指no类别下总共有3个单词.

后验概率计算如下:
P(yes|d) = 3/7×3/7×3/7×1/14×1/14×8/11=108/184877≈0.00058417
P(no|d) = 2/9×2/9×2/9×2/9×2/9×3/11=32/216513≈0.00014780
因此,这个文档属于类别China


伯努利模型:
1.基本原理:
P(c)=类c下文件总数/整个训练样本的文件总数
P(tk|c)=(类c下包含单词tk的文件数+1)/(类c下单词总数+2)
在这里,m=2,p=1/2.

类yes下总共有3个文件,类no下有1个文件,训练样本文件总数为4,因此
P(yes)=3/4,P(Chinese|yes)=(3+1)/(3+2)=4/5
P(Japan|yes)=P(Tokyo|yes)=(0+1)/(3+2)=1/5
P(Beijing|yes)=P(Macao|yes)=P(Shanghai|yes)=(1+1)/(3+2)=2/5
P(Chinese|no)=(1+1)/(1+2)=2/3
P(Japan|no)=P(Tokyo|no)=(1+1)/(1+2)=2/3
P(Beijing|no)=P(Macao|no)=P(Shanghai|no)=(0+1)/(1+2)=1/3

后验概率计算:
P(yes|d)=P(yes)×P(Chinese|yes)×P(Japan|yes)×P(Tokyo|yes)×(1-P(Beijing|yes))
×(1-P(Shanghai|yes))×(1-P(Macao|yes))=3/4×4/5×1/5×1/5×(1-2/5)×(1-2/5)
×(1-2/5)=81/15625≈0.005
P(no|d)=1/4×2/3×2/3×2/3×(1-1/3)×(1-1/3)×(1-1/3)=16/729≈0.022

因此,这个文档不属于China

两种模型的区别:
二者的计算粒度不一样,多项式模型以单词为粒度,伯努利模型以文件为粒度,因此二者的先验概率和类条件概率计算方法不同
计算后验概率时,对于一个文档d,多项式模型中,只有在d中出现过的单词,才会参与后验概率计算,伯努利模型中,没有在d中出现,但是在全局单词表中出现的单词,也会参与计算,不过是作为"反方"参与的.


分享到:
评论

相关推荐

    基于改进TF-IDF的朴素Bayes文本分类器毕业设计报告.doc

    朴素Bayes算法是一种常用的文本分类算法,但是传统的朴素Bayes算法在计算特征权重时,给每个特征词分配相同的权重,这会导致分类效果不佳。 为了改进朴素Bayes文本分类算法,本文提出了基于改进的TF-IDF的朴素Bayes...

    基于机器学习的中文文本分类算法的研究与实现

    而卷积神经网络则利用其在图像处理领域的优势,通过学习文本的局部特征,来适应文本分类任务。 在实际应用中,文本分类可以广泛应用于新闻分类、情感分析、垃圾邮件过滤等领域,为信息管理和决策提供有力支持。通过...

    文本分类算法的比较研究

    本文主要通过对三种常用的文本分类算法——朴素贝叶斯(Naive Bayes)、K近邻(K-Nearest Neighbor, KNN)和支持向量机(Support Vector Machine, SVM)进行了比较实验研究,探讨了它们在中文文本分类中的表现。...

    C# 版 Bayes 文本分类器

    总的来说,C#版Bayes文本分类器是一个涉及概率统计、数据预处理、字典数据结构和算法实现的综合项目。通过这个项目,开发者可以深入理解贝叶斯定理在文本分类中的应用,并掌握C#编程技巧。在实际应用中,还可以结合...

    Bayes分类算法 VC实现

    Bayes分类算法广泛应用于垃圾邮件过滤、情感分析、文本分类、推荐系统等领域。由于其简单且易于并行化,对于大数据集处理尤为有效。 综上所述,Bayes分类算法是基于概率的统计分类方法,通过结合先验和后验概率来...

    基于改进TF-IDF的朴素Bayes文本分类器设计.pdf

    基于改进TF-IDF的朴素Bayes文本分类器设计.pdf

    Bayes分类算法

    Bayes分类算法是一种基于概率理论的机器学习方法,它利用贝叶斯定理来预测未知类别的数据实例。该算法在处理小规模数据集时表现出色,且由于其简单性和易于理解的特性,常被用于教学和初学者的实践项目。 在Python...

    《文本分类大综述:从浅层到深度学习》

    这些方法的优点是可以自动地学习文本特征,提高分类准确率,但缺点是计算速度慢、需要大量的训练数据。 文本分类的挑战 文本分类面临的挑战包括: * 处理高维度和稀疏的文本特征 * 处理类别不平衡的问题 * 提高...

    bayes_贝叶斯分类算法matlab_

    利用贝叶斯分类算法进行数据的分析,非常实用而且方便的方法

    文本分类中的特征提取和分类算法综述.doc

    kNN算法是一种基于实例的学习算法,它可以对文本文档进行分类,但其计算复杂度较高。Native Bayes算法是一种基于概率论的分类算法,它可以对文本文档进行分类,但其假设了特征之间独立性。 在本文中,我们采用了kNN...

    KNN文本分类算法研究

    当前,多种算法被广泛应用于文本分类任务,包括支持向量机(Support Vector Machine, SVM)、K近邻算法(K-Nearest Neighbour, KNN)、朴素贝叶斯算法(Naive Bayes, NB)、神经网络算法(Neural Network, NN)和...

    文本分类MFC(含主流降维算法和分类算法)

    文本分类是自然语言处理领域中的一个关键任务,其目的是将文本数据按照预定义的类别进行...通过学习和理解这些算法,你可以构建更有效的文本分类系统,适应各种应用场景,如情感分析、新闻主题分类、垃圾邮件过滤等。

    bayes模糊算法与实例

    4. **实例应用**:贝叶斯模糊算法常常应用于分类和预测任务,例如图像识别、语音识别、医疗诊断等。在这些场景中,模糊逻辑可以处理数据的不精确性,而贝叶斯定理则用于更新模型的参数。 5. **算法调试**:在实际...

    几种常用文本分类算法性能比较与分析.docx

    kNN算法是一种基于实例的学习方法,其核心思想是通过计算待分类样本与训练集中所有样本之间的距离,选取最近的k个邻居,并将这些邻居中最常见的类别作为待分类样本的预测类别。 - **优点**:算法直观易懂,实现简单...

    Di.zip_bayes 分类_分类器_诊断_贝叶斯_贝叶斯分类算法

    在文件“Di.zip_bayes 分类_分类器_诊断_贝叶斯_贝叶斯分类算法”中,我们可以推断出其包含的是一个应用或诊断工具,它们与贝叶斯分类算法密切相关。同时,“www.pudn.com.txt”这一文本文件可能提供了理论解释、...

    基于Bayes的newsgroup 18828文本分类器的Python实现

    在"基于Bayes的newsgroup 18828文本分类器的Python实现"中,我们关注的是如何利用Python来实现一个针对20 newsgroups数据集的分类器,该数据集包含18828篇新闻组文章,涵盖了不同的主题。 1. **文本分类基础**: -...

    BNUPCU.rar_其他_分类算法_文本分类_文本分类器

    文本分类是自然语言处理(NLP)领域的一个重要...开发者可以参考`MessageClassifier.java`的源码学习文本分类算法的实现,结合`ReadMe.txt`了解如何运行和使用分类器。这对于研究或开发自己的文本分类系统非常有帮助。

Global site tag (gtag.js) - Google Analytics