贝叶斯算法和决策树、SVM 一样,是分类算法。用来衡量标签和特征之间的概率关系,属于有监督学习算法。

因为贝叶斯是基于概率论的算法,了解算法之前,需要了解概率论的两个概念:

  • 联合概率:“ X 取值为 x ” 和“ Y 取值为 y ”两个事件同时发生的概率。表示为 
  • 条件概率:在“ X 取值为 x ”的前提下,“ Y 取值为 y ”的概率。表示为

在概率论中可以证明,两个事件的联合概率等于这两个事件任意条件概率 * 这个条件事件本身的概率。推出贝叶斯理论公式:

举例说明(案例摘自于阮一峰博客)

假设以下是医院病人的症状和职业的特征,对应疾病标签也如图所示:

症状 职业 疾病
打喷嚏 护士 感冒
打喷嚏 农夫 过敏
头痛 建筑工人 脑震荡
头痛 建筑工人 感冒
打喷嚏 教师 感冒
头痛 教师 脑震荡

那么,现在又来了第七个病人,是一个打喷嚏的建筑工人。请问他患上感冒的概率有多大?根据贝叶斯公式计算:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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(感冒|打喷嚏x建筑工人)
    = 0.66 x 0.33 x 0.5 / 0.5 x 0.33
    = 0.66

因此,这个打喷嚏的建筑工人,有 66% 的概率是得了感冒。同理,可以计算这个病人患上过敏或脑震荡的概率。比较这几个概率,就可以知道他最可能得什么病。这就是贝叶斯分类器的基本方法:在统计资料的基础上,依据某些特征,计算各个类别的概率,从而实现分类。

朴素贝叶斯理论公式(具体公式不再推导):

朴素贝叶斯中的“朴素”一词的来源就是假设各特征之间相互独立。这一假设使得朴素贝叶斯算法变得简单,但有时会牺牲一定的分类准确率。

朴素贝叶斯的种类
**

  • 高斯朴素贝叶斯:如果特征 x 是连续型变量。可以假设 x 服从高斯分布(正态分布)。根据正态分布的概率密度函数即可计算出
  • 多项式朴素贝叶斯:假设概率分布是服从一个简单多项式分布。多项式分布具体解释为:实验包括 n 次重复试验,每项试验都有不同的可能结果。在任何给定的试验中,特定结果发生的概率是不变的。比如:掷骰子在[1,2,3,4,5,6]中取值,6 种结果互不干涉,且只要样本量足够大 ,概率都是 1/6 。这就是一个多项分布;
  • 伯努利朴素贝叶斯:就是数据集中可以存在多个特征,但每个特征都是二分类的,可以以布尔变量表示,也可以表示 为{0,1}或者{-1,1}等任意二分类组合。比如抛硬币。