一、介绍
贝叶斯定理是英国数学家托马斯·贝叶斯提出的,为了解决一个“逆概率”问题。
贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。
贝叶斯算法和决策树、SVM 一样,是分类算法。用来衡量标签和特征之间的概率关系,属于有监督学习算法。
因为贝叶斯是基于概率论的算法,了解算法之前,需要了解概率论的几个概念:
- 联合概率:A事件和B事件同时发生的概率,P(AB)或者P(A,B)、P(A∩B)
- 条件概率:P(B|A): A事件发生的条件下,B事件发生的概率; P(A|B): B事件发生的条件下,A事件发生的概率
- 先验概率:事件发生前的预判概率。可以是基于历史数据的统计,可以由背景常识得出,也可以是人的主观观点给出。一般都是单独事件概率,如P(A),P(B)
- 后验概率:事件发生后求的反向条件概率;或者说,基于先验概率求得的反向条件概率。概率形式与条件概率相同。
P(AB) = P(BA)
= P(A|B)P(B)
=P(B|A)P(A)
通过 P ( A ∣ B ) P(A|B) P(A∣B)来求 P ( B ∣ A ) P(B|A) P(B∣A): P ( B ∣ A ) = P ( A ∣ B ) ∗ P ( B ) P ( A ) {P(B|A)}=\frac {P(A|B)*P(B)}{P(A)} P(B∣A)=P(A)P(A∣B)∗P(B)
分母可以根据全概率公式分解为:
最终公式变为:
举例说明
假设以下是医院病人的症状和职业的特征,对应疾病标签也如图所示:
那么,现在又来了第7个病人,是一个打喷嚏的建筑工人。请问他患上感冒的概率有多大?
根据贝叶斯公式计算:
P(A|B) = P(B|A) P(A) / P(B)
P(感冒|打喷嚏x建筑工人)
= P(打喷嚏x建筑工人|感冒) x P(感冒)
/ P(打喷嚏x建筑工人)
# 假定"打喷嚏"和"建筑工人"这两个特征是独立的,因此,上面的等式就变成了
P(感冒|打喷嚏x建筑工人)
= P(打喷嚏|感冒) x P(建筑工人|感冒) x P(感冒)
/ P(打喷嚏) x P(建筑工人)
其中:
P(打喷嚏|感冒):感冒发生的条件下,是打喷嚏引起的概率【查表可知3个样本,2个是打喷嚏】
= 2/3=0.66
P(建筑工人|感冒):感冒发生的条件下,是建筑工人的概率【查表可知3个样本,1个是建筑工人】
= 1/3=0.33
P(感冒):6个样本中有3个是感冒
= 3/6=0.5
P(打喷嚏)=3/6=0.5
P(建筑工人)=2/6=0.33
所以:
P(感冒|打喷嚏x建筑工人)
= 0.66 x 0.33 x 0.5 / 0.5 x 0.33
= 0.66
因此,这个打喷嚏的建筑工人,有 66% 的概率是得了感冒。同理,可以计算这个病人患上过敏或脑震荡的概率。比较这几个概率,就可以知道他最可能得什么病。这就是贝叶斯分类器的基本方法:在统计资料的基础上,依据某些特征,计算各个类别的概率,从而实现分类。
朴素贝叶斯中的“朴素”一词的来源就是假设各特征之间相互独立。这一假设使得朴素贝叶斯算法变得简单,但有时会牺牲一定的分类准确率。
朴素贝叶斯分类的优缺点
优点:
- (1) 算法逻辑简单,易于实现
- (2)分类过程中时空开销小
缺点:
- 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。
- 而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。
二、朴素贝叶斯的种类
-
高斯朴素贝叶斯:如果特征 x 是连续型变量。可以假设 x 服从高斯分布(正态分布)。根据正态分布的概率密度函数即可计算出P(X | Y=1);
-
多项式朴素贝叶斯:假设概率分布是服从一个简单多项式分布。多项式分布具体解释为:实验包括 n 次重复试验,每项试验都有不同的可能结果。在任何给定的试验中,特定结果发生的概率是不变的。比如:掷骰子在[1,2,3,4,5,6]中取值,6 种结果互不干涉,且只要样本量足够大 ,概率都是 1/6 。这就是一个多项分布;
-
伯努利朴素贝叶斯:就是数据集中可以存在多个特征,但每个特征都是二分类的,可以以布尔变量表示,也可以表示 为{0,1}或者{-1,1}等任意二分类组合。比如抛硬币。
参考
https://zhuanlan.zhihu.com/p/78297343
https://zhuanlan.zhihu.com/p/26262151
https://zhuanlan.zhihu.com/p/34687829
https://my.oschina.net/airship/blog/1519643