朴素贝叶斯分类算法原理
一、朴素贝叶斯分类简介
朴素贝叶斯(Naive Bayesian)是基于贝叶斯定理和特征条件独立假设的分类方法,它通过特征计算分类的概率,选取概率大的情况进行分类,因此它是基于概率论的一种机器学习分类方法。因为分类的目标是确定的,所以也是属于监督学习。
朴素贝叶斯有如下几种:
- 离散型朴素贝叶斯: MultinomialNB
- 连续型朴素贝叶斯: GaussianNB
- 混合型朴素贝叶斯: MergedNB
二、原理
朴素贝叶斯基于条件概率、贝叶斯定理和独立性假设原则。
(1) 条件概率原理原理
基于概率论的方法告诉我们,当只有两种分类时:
如果p1(x,y)>p2(x,y),那么分入类别1
如果p1(x,y)<p2(x,y),那么分入类别2
(2) 贝叶斯定理
p(ci∣x,y)=p(x,y∣ci)p(ci)p(x,y)p(c_i|x,y)=\frac{p(x,y|c_i)p(c_i)}{p(x,y)}p(ci∣x,y)=p(x,y)p(x,y∣ci)p(ci)
其中,x,y表示特征变量,ci表示分类,p(ci|x,y)即表示在特征为x,y的情况下分入类别ci的概率,因此,结合条件概率和贝叶斯定理,有:
如果p(c1|x,y)>p(c2|x,y),那么分类应当属于c1;
如果p(c1|x,y)<p(c2|x,y),那么分类应当属于c2
贝叶斯定理最大的好处是可以用已知的三个概率去计算未知的概率,而如果仅仅是为了比较p(ci|x,y)和p(cj|x,y)的大小,只需要已知两个概率即可,分母相同,比较p(x,y|ci)p(ci)和p(x,y|cj)p(cj)即可。
(3) 特征条件独立假设原则
见QA4.
三、朴素贝叶斯分类的流程
- 数据准备:收集数据,并将数据预处理为数值型或者布尔型,如对文本分类,需要将文本解析为词向量
- 训练数据:根据训练样本集计算词项出现的概率,训练数据后得到各类下词汇出现概率的向量
- 测试数据:用测试样本集去测试分类的准确性
四、优缺点
优点
朴素贝叶斯算法假设了数据集属性之间是相互独立的,因此算法的逻辑性十分简单,并且算法较为稳定,当数据呈现不同的特点时,朴素贝叶斯的分类性能不会有太大的差异。换句话说就是朴素贝叶斯算法的健壮性比较好,对于不同类型的数据集不会呈现出太大的差异性。
当数据集属性之间的关系相对比较独立时,朴素贝叶斯分类算法会有较好的效果
。对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练。
对缺失数据不太敏感,算法也比较简单,常用于文本分类。
缺点
- 属性独立性的条件同时也是朴素贝叶斯分类器的不足之处。数据集属性的
独立性在很多情况下是很难满足的
,因为数据集的属性之间往往都存在着相互关联,如果在分类过程中出现这种问题,会导致分类的效果大大降低。 - 需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。
- 由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。
- 对输入数据的表达形式很敏感。
五、平滑处理
有时候样本量较少的时候,无论该样本的其他属性是什么,计算出来的分类结果始终是一种分类,这样的情况不合理。为了避免上述弊端的出现,我们在计算概率值时要进行平滑处理,常用 拉普拉斯平滑处理
P(c)=∣Dc+1∣∣D∣+NP(c) = \frac{|D_c+1|}{|D|+N}P(c)=∣D∣+N∣Dc+1∣
P(xi∣c)=∣Dcxi+1∣∣Dc∣+NiP(x_i|c) = \frac{|D_{cx_i}+1|}{|D_c|+N_i}P(xi∣c)=∣Dc∣+Ni∣Dcxi+1∣
拉普拉斯修正避免了因训练集样本不充分而导致的概率值为零的问题。
参考:
- Naive Bayes
- 机器学习之朴素贝叶斯(NB)分类算法与Python实现
- EM(最大期望)算法
QA:
- 基于概率论的方法和基于统计学的方法:
基于概率论的方法是通过概率来衡量事件发生的可能性。概率论和统计学恰好是两个相反的概念,统计学是抽取部分样本进行统计来估算总体的情况,而概率论是通过总体情况来估计单个事件或者部分事情的发生情况。
- 朴素贝叶斯,朴素在什么地方:
之所以叫朴素贝叶斯,因为它简单、易于操作,基于特征独立性假设,假设各个特征不会相互影响,这样就大大减小了计算概率的难度。
- 概率论中的基本概念
(1)事件交和并:
A和B两个事件的交,指的是事件A和B同时出现,记为A∩B;
A和B两个事件的并,指的是事件A和事件B至少出现一次的情况,记为A∪B。
(2)条件概率(conditional probability):
某个事件发生时另外一个事件发生的概率,如事件A发生条件下事件B发生的概率:
P(B∣A)=P(A∩B)P(A)<=>P(B∣A)=P(A∣B)P(A)P(B)P(B|A)=\frac{P(A \cap B)}{P(A)} <=> P(B|A)=\frac{P(A|B)}{P(A)}P(B)P(B∣A)=P(A)P(A∩B)<=>P(B∣A)=P(A)P(A∣B)P(B)
P(A∩B)=P(A)P(B∣A)<=>P(A∩B)=P(B)P(A∣B)P(A \cap B)=P(A)P(B|A) <=> P(A \cap B)=P(B)P(A|B)P(A∩B)=P(A)P(B∣A)<=>P(A∩B)=P(B)P(A∣B)
- P(B)称为"先验概率"(Prior probability),即在A事件发生之前,我们对B事件概率的一个判断。
- P(B|A)称为"后验概率"(Posterior probability),即在A事件发生之后,我们对B事件概率的重新评估。
- P(A|B)/P(A)称为"可能性函数"(Likelyhood),这是一个调整因子,使得预估概率更接近真实概率。
所以,条件概率可以理解成下面的式子:
后验概率 = 先验概率 x 调整因子
(3)独立事件交的概率:
两个相互独立的事件,其交的概率为: P(A∩B)=P(A)P(B)P(A \cap B)=P(A)P(B)P(A∩B)=P(A)P(B)
- 贝叶斯定理(Bayes’s Rule):
如果有k个互斥且有穷个事件:B1,B2···,Bk ,并且,P(B1)+P(B2)+···+P(Bk)=1和一个可以观测到的事件A,那么有:
P(Bi∣A)=P(Bi∩A)P(A)=P(Bi)P(A∣Bi)P(B1)P(A∣B1)+P(B2)P(A∣B2)+⋅⋅⋅+P(Bk)P(A∣Bk)P(B_i | A)=\frac{P(B_i \cap A)}{P(A)}=\frac{P(B_i)P(A | B_i)}{P(B_1)P(A|B_1)+P(B_2)P(A|B_2)+···+P(B_k)P(A|B_k)}P(Bi∣A)=P(A)P(Bi∩A)=P(B1)P(A∣B1)+P(B2)P(A∣B2)+⋅⋅⋅+P(Bk)P(A∣Bk)P(Bi)P(A∣Bi)
- p(A) : 事件A发生的概率;
- p(B∩A) : 事件B 和事件A 同时发生的概率;
- p(B|B) : 表示事件B在事件A发生的条件下发生的概率。
THE END.
朴素贝叶斯分类算法原理相关推荐
- 第六篇:基于朴素贝叶斯分类算法的邮件过滤系统
前言 朴素贝叶斯算法最为广泛而经典的应用毫无疑问是文档分类,更具体的情形是邮件过滤系统. 本文详细地讲解一个基于朴素贝叶斯分类算法的邮件过滤系统的具体实现. 本文侧重于工程实现,至于其中很多算法的细节 ...
- 【机器学习原理】朴素贝叶斯分类算法
文章目录 一.朴素贝叶斯公式 1. 从统计角度看分类问题 2. 贝叶斯公式的基本思想 贝叶斯的基本逻辑 3. 用贝叶斯公式进行选择 贝叶斯版的预测未来 二.朴素贝叶斯分类的算法原理 1. 朴素贝叶斯分 ...
- 数据挖掘:基于朴素贝叶斯分类算法的文本分类实践
前言: 如果你想对一个陌生的文本进行分类处理,例如新闻.游戏或是编程相关类别.那么贝叶斯分类算法应该正是你所要找的了.贝叶斯分类算法是统计学中的一种分类方法,它利用概率论中的贝叶斯公式进行扩展.所以, ...
- 机器学习笔记之朴素贝叶斯分类算法
朴素贝叶斯分类算法: 优点:在数据较少的情况下仍然有效,可以处理多分类问题. 缺点:对于输入数据的准备方式较为敏感. 适用数据类型:标称型数据(离散型数据) 算法原理: 对于某一个条件,这个条件下哪个 ...
- 关于朴素贝叶斯分类算法(Naive Bayesian classification)
一.简介 贝叶斯分类是一类分类算法的总称,算法以贝叶斯定理为基础,所以称为贝叶斯分类.本文将首先介绍分类问题,对分类问题进行一个正式的定义.然后,介绍贝叶斯分类算法的基础--贝叶斯定理.最后,通过实例 ...
- 朴素贝叶斯分类算法python实现
前言 本文介绍机器学习分类算法中的朴素贝叶斯分类算法并给出伪代码,Python代码实现. 词向量 朴素贝叶斯分类算法常常用于文档的分类,而且实践证明效果挺不错的. 在说明原理之前,先介绍一个叫词向量的 ...
- 【python代码实现】朴素贝叶斯分类算法
目录 前置知识 1.概念 2.算法原理 2.1.条件概率 2.2.全概率 2.3.先验概率 2.4.后验概率 朴素贝叶斯分类算法 1.构建数据集 2.分类概率 3.条件概率 4.先验概率 前置知识 1 ...
- 机器学习经典算法——朴素贝叶斯分类算法
目录 简介 基本概念 贝叶斯定理 贝叶斯公式的本质内涵 代码 托马斯·贝叶斯 简介 朴素贝叶斯分类算法作为机器学习最经典的算法之一,该算法是一种有监督学习算法.其理论基础是"贝叶斯定理&qu ...
- 朴素贝叶斯分类算法python代码
原理 条件概率 (conditional probability) 是指在事件 B 发生的情况下,事件 A 发生的概率.通常记为 P(A | B). 贝叶斯公式中,P(A)称为"先验概率&q ...
最新文章
- 特斯拉“纯视觉路线”能去掉ISP吗?
- ssh时出现 Agent admitted failure to sign using the key
- Consumer设计-high/low Level Consumer
- Cordova工程里android平台相关的index.html是怎么加载的
- SQL 查询数据库中包含指定字符串的相关表和相关记录
- MySQL2索引优化
- Python中import导入模块
- js正则表达式验证密码
- XML——XML的那些事
- Linux 内存管理(二)——伙伴系统
- 【渝粤题库】陕西师范大学201951 明清小说史 作业
- 中科大一所学校撑起中国人工智能半壁江山
- JAVA.犹抱琵琶半遮面
- css 里面写响应式布局,CSS3怎么做出响应式布局
- 编程金融小白学 股票期权 lv.7 希腊字母 Theta
- (十五):常用的十种算法(下)
- 华为北京研究所第一届黑客马拉松比赛-基于Android防止儿童走失
- python:用OLS 求企业的净利润年平均增长率
- LeetCode 36. Valid Sudoku(九宫格数独)
- QQ空间蓝色字体,点击跳转到加好友页面方法分享