朴素贝叶斯方法(Naive Bayes)

本文主要描述了朴素贝叶斯分类方法,包括模型导出和学习描述。实例部分总结了《machine learning in action》一书中展示的一个该方法用于句子感情色彩分类的程序。1

  • 方法概述
  • 学习(参数估计)
  • 实现:朴素贝叶斯下的文本分类

模型概述

朴素贝叶斯方法,是指
朴素:特征条件独立
贝叶斯:基于贝叶斯定理

根据贝叶斯定理,对一个分类问题,给定样本特征x,样本属于类别y的概率是

p(y|x)=p(x|y)p(y)p(x)。。。。。。(1)

在这里,x是一个特征向量,将设x维度为M。因为朴素的假设,即特征条件独立,根据全概率公式展开,公式(1)可以表达为

p(y=ck|x)=∏Mi=1p(xi|y=ck)p(y=ck)∑kp(y=ck)∏Mi=1P(xi|y=ck)。。。。(2)

这里,只要分别估计出,特征xi在每一类的条件概率就可以了。类别y的先验概率可以通过训练集算出,同样通过训练集上的统计,可以得出对应每一类上的,条件独立的特征对应的条件概率向量。

如何统计,就是下一部分——学习——所关心的内容。

学习(参数估计)

下面介绍如何从数据中,学习得到朴素贝叶斯分类模型。概述分类方法,并提出一个值得注意的问题。

学习

训练集TrainingSet={(x1,y1),(x2,y2),...,(xN,yN)}
包含N条训练数据,其中 xi=(x(1)i,x(2)i,...,x(M)i)T是M维向量,yi∈{c1,c2,...cK}属于K类中的一类。

学习 1.首先,我们来计算公式(2)中的p(y=ck)

p(y=ck)=∑Ni=1I(yi=ck)N。。。。(3)

其中I(x)为指示函数,若括号内成立,则计1,否则为0。

学习 2.接下来计算分子中的条件概率,设M维特征的第j维有L个取值,则某维特征的某个取值ajl,在给定某分类ck下的条件概率为:

p(xj=ajl|y=ck)=∑Ni=1I(xji=ajl,yi=ck)∑Ni=1I(yi=ck)。。。(4)

经过上述步骤,我们就得到了模型的基本概率,也就完成了学习的任务。

分类

通过学到的概率,给定未分类新实例X,就可以通过上述概率进行计算,得到该实例属于各类的后验概率p(y=ck|X),因为对所有的类来说,公式(2)中分母的值都相同,所以只计算分子部分即可,具体步骤如下:

分类 1.计算该实例属于y=ck类的概率

p(y=ck|X)=p(y=ck)∏j=1np(X(j)=x(j)|y=ck)。。。(5)

分类 2.确定该实例所属的分类y

y=argmaxckp(y=ck|X)。。。。(6)

于是我们得到了新实例的分类结果

拉普拉斯平滑

到这里好像方法已经介绍完了,实则有一个小问题需要注意,在公式(3)(4)中,如果从样本中算出的概率值为0该怎么办呢?
下面介绍一种简单方法,给学习步骤中的两个概率计算公式,分子和分母都分别加上一个常数,就可以避免这个问题。更新过后的公式如下:

p(y=ck)=∑Ni=1I(yi=ck)+λN+Kλ。。。。(7)

K是类的个数

p(xj=ajl|y=ck)=∑Ni=1I(xji=ajl,yi=ck)+λ∑Ni=1I(yi=ck)+Ljλ。。。(8)

Lj是第j维特征的最大取值

可以证明,改进以后的(7)(8)仍然是概率。平滑因子λ=0即为(3)(4)实现的最大似然估计,这时会出现在本节开始时提到的0概率问题;而λ=1则避免了0概率问题,这种方法被称为拉普拉斯平滑

实现:朴素贝叶斯下的文本分类

根据上面的算法流程,在这里实现一个句子极性划分的例子。所谓句子极性是指,句子所表达的情感色彩,例如积极/消极,这里(书里)使用的是侮辱性/非侮辱性。其实是什么类别不重要,只要给定有标签的训练数据,就可以得到分类模型。

下面简述实现思想和流程,给出代码。

算法思想和流程

给定的训练集是标定了 侮辱性/非侮辱性 的句子(因为是英语句子,所以基本视分词为已经解决的问题,如果是汉语,则要先进行分词),我们认为特征就是句子中的单个词语。单个词语有极性表征,整个句子所包含的单词的极性表征就是句子的极性。
由以上的基础,应用朴素贝叶斯分类,就变成了这样的问题

初始化步,构建可以表征句子的特征向量(词汇表)。并根据这个特征向量,把训练集表征出来。从训练集中分离部分数据作为测试集。

学习步,计算类的先验概率特征向量对应每一类的条件概率向量

分类步, 计算测试集中待分类句子在每一类的分类后验概率,取最大值作为其分类,并与给定标签比较,得到误分类率。

时间: 2024-07-31 16:13:57

朴素贝叶斯方法(Naive Bayes)的相关文章

【资源分享】今日学习打卡--朴素贝叶斯法 (naive bayes classifier)

今日学习打卡,是一个非常简单的模型,朴素贝叶斯法(naive bayes classifier) 总得来说就是贝叶斯 + naive 通过,贝叶斯来计算事件发生概率: 然后,naive就是假设各个因素之间相互独立,互不影响. 在现实生活中,因素经常是有内在联系的.如:是否今天下雨,考虑因素有:气压,湿度,温度.实际上这些因素是有内在联系的,但是模型中假设它们相互独立,所以称为naive.这样,在计算中相当简单,且往往预测结果还算不错的. 链接: https://pan.baidu.com/s/1

朴素贝叶斯(Naive Bayes)及Python实现

朴素贝叶斯(Naive Bayes)及Python实现 http://www.cnblogs.com/sumai 1.模型 在GDA 中,我们要求特征向量 x 是连续实数向量.如果 x 是离散值的话,可以考虑采用朴素贝叶斯的分类方法. 以垃圾邮件分类为例子,采用最简单的特征描述方法,首先找一部英语词典,将里面的单词全部列出来.然后将每封邮件表示成一个向量,向量中每一维都是字典中的一个词的 0/1值,1 表示该词在邮件中出现,0 表示未出现. 比如一封邮件中出现了“ a”和“ buy”,没有出现“

PGM:贝叶斯网表示之朴素贝叶斯模型naive Bayes

http://blog.csdn.net/pipisorry/article/details/52469064 独立性质的利用 条件参数化和条件独立性假设被结合在一起,目的是对高维概率分布产生非常紧凑的表示. 随机变量的独立性 [PGM:概率论基础知识:独立性性质的利用] 条件参数化方法 Note: P(I), P(S | i0), P(S | i1)都是二项式分布,都只需要一个参数. 皮皮blog 朴素贝叶斯模型naive Bayes 朴素贝叶斯模型的学生示例 {这个示例很好的阐述了什么是朴素

朴素贝叶斯方法在乳腺肿块检测中的应用

写在开头: 临近毕业准备找工作,而机器学习方法是复习中不可缺少的一个重要部分,所以本篇博文是将之前做过的一个项目里面应用的机器学习方法——朴素贝叶斯方法,重点复习一遍.具体文章如下引用所示. Zhang S, Chen Z, Gu S, et al. Breast tumor detection in double views mammography based on Simple Bias[C]. Medical Imaging Physics and Engineering (ICMIPE)

朴素贝叶斯(naive bayes)

#coding=utf-8 #Naive Bayes #Calculate the Prob. of class:clsdef P(data,cls_val,cls_name="class"): cnt = 0.0 for e in data: if e[cls_name] == cls_val: cnt += 1 return cnt/len(data) #Calculate the Prob(attr|cls)def PT(data,cls_val,attr_name,attr_v

机器学习笔记之朴素贝叶斯(Naive Bayes)原理

为什么叫朴素贝叶斯? 朴素是指特征条件独立:贝叶斯是指基于贝叶斯定理. $x=\frac{{-b}\pm\sqrt{b^2-4ac}}{2a}$ $p(y=c_k|x)=\dfrac{\prod_{i=1}^{M}p(x^i|y=c_k)p(y=c_k)}{\sum_kp(y=c_k)\prod_{i=1}^{M}P(x^i|y=c_k)}$....(2) $$ % MathType!MTEF!2!1!+-% feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2

模式识别之贝叶斯---朴素贝叶斯(naive bayes)算法及实现

处女文献给我最喜欢的算法了 ⊙▽⊙ ---------------------------------------------------我是机智的分割线---------------------------------------------------- [important] 阅读之前你需要了解:1.概率论与数理统计基础 2.基本的模式识别概念 [begin] 贝叶斯决策论是模式分类问题最基础的概念,其中朴素贝叶斯更是由于其简洁成为学习模式分类问题的基础. 朴素贝叶斯的理论基础:源于概率论

【黎明传数==>机器学习速成宝典】模型篇05——朴素贝叶斯【Naive Bayes】(附python代码)

目录 先验概率与后验概率 什么是朴素贝叶斯 模型的三个基本要素 构造kd树 kd树的最近邻搜索 kd树的k近邻搜索 Python代码(sklearn库) 先验概率与后验概率 什么K近邻算法(k-Nearest Neighbor,kNN) 引例 有一个训练集包含100个实例,属性是皮肤颜色(黑.白.黄),标记是地区(亚洲.非洲.北美洲人).在训练集中有30个非洲人(28个黑人),有50个亚洲人(1个黑人),有20个北美洲人(5个黑人).请训练一个贝叶斯模型. 当一个训练集外的黑人来报道,我们该如何

【Spark MLlib速成宝典】模型篇04朴素贝叶斯【Naive Bayes】(Python版)

目录 朴素贝叶斯原理 朴素贝叶斯代码(Spark Python) 朴素贝叶斯原理 详见博文:http://www.cnblogs.com/itmorn/p/7905975.html 返回目录 朴素贝叶斯代码(Spark Python) 代码里数据:https://pan.baidu.com/s/1jHWKG4I 密码:acq1 # -*-coding=utf-8 -*- from pyspark import SparkConf, SparkContext sc = SparkContext('

深入理解朴素贝叶斯(Naive Bayes)

https://blog.csdn.net/li8zi8fa/article/details/76176597 朴素贝叶斯是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法.朴素贝叶斯原理简单,也很容易实现,多用于文本分类,比如垃圾邮件过滤.该算法虽然简单,但是由于笔者不常用,总是看过即忘,这是写这篇博文的初衷.当然,更大的动力来在于跟大家交流,有论述不妥的地方欢迎指正. 1.算法思想--基于概率的预测 逻辑回归通过拟合曲线(或者学习超平面)实现分类,决策树通过寻找最佳划分特征进而学习