博客内容源于《统计机器学习》一书的阅读笔记。Python的源码实现源于《机器学习实战》部分内容。
首先,需要回顾下面的三个重要的公式:
- 条件概率:
P(A|B)=P(AB)P(B)- 全概率公式:
P(A)=∑iP(A|Bi)P(Bi)- 贝叶斯(Bayes)公式:
P(Bi|A)=P(A|Bi)P(Bi)∑iP(A|Bi)P(Bi)
1. 朴素贝叶斯法的学习
朴素贝叶斯(naive bayes)法是基于贝叶斯定理与条件独立假设的分类方法。朴素贝叶斯基于两个重要的假设建立的:
1. 一个特征出现的概率与其他特征(条件)独立;(特征独立性)
2. 每个特征同等重要。(特征均衡性)
【算法描述】
设输入空间
X⊆Rn
为
n
维向量的集合,输出空间为类标记集合
由 P(X,Y) 独立同分布产生。
朴素贝叶斯法通过 训练数据集学习联合概率分布 P(X,Y) 。先验概率分布:
条件概率分布:
于是学习到联合概率分布 P(X,Y) 。
【分类】
朴素贝叶斯法分类时,对给定的输入
x
,通过学习到的模型计算后验概率分布
由于前面已经假设了特征独立,所以有:
将上式带入到 P(Y=ck|X=x) 中,得到(朴素贝叶斯的基本公式):
那么,朴素贝叶斯分类器就可以表示为:
由于上述表示中的分母对于所有的 ck 都是相同的,所以可以略去分母,表示成:
先验概率 ( Prior probability)
先验概率是在缺乏某个事实的情况下描述一个变量; 而后验概率是在考虑了一个事实之后的条件概率. 先验概率通常是经验丰富的专家的纯主观的估计.后验概率 ( posterior probability)
后验概率是指通过调查或其它方式获取新的附加信息,利用贝叶斯公式对先验概率进行修正,而后得到的概率。
2. 朴素贝叶斯法使用流程
- 计算先验概率和条件概率
P(Y=ck)=∑Ni=1I(yi=ck)N,k=1,2,...,K.P(X(j)=ajl|Y=ck)=∑Ni=1I(x(j)i,yi=ck)∑Ni=1I(yi=ck)j=1,2,...,n;l=1,2,...,Sj;k=1,2,...,K - 对于给定的实例
x=(x(1),x(2),...,x(n))T
,计算:
P(Y=ck)∏j=1nP(X(j)=x(j)|Y=ck)k=1,2,...,K - 确定实例
x
的分类
y=argmaxckP(Y=ck)∏j=1nP(X(j)=x(j)|Y=ck)k=1,2,...,K
3. 举例
- 首先计算先验概率和条件概率
P(Y=1)=915,P(Y=−1)=615P(X(1)=1|Y=1)=29,P(X(1)=2|Y=1)=39,P(X(1)=3|Y=1)=49P(X(2)=S|Y=1)=19,P(X(2)=M|Y=1)=49,P(X(2)=L|Y=1)=49P(X(1)=1|Y=−1)=36,P(X(1)=2|Y=−1)=26,P(X(1)=3|Y=−1)=16P(X(2)=S|Y=−1)=36,P(X(2)=M|Y=−1)=26,P(X(2)=L|Y=−1)=16 - 对于给定的
x=(2,S)T
计算:
P(Y=1)P(X(1)=2|Y=1)P(X(2)=S|Y=1)=915⋅39⋅19=145P(Y=−1)P(X(1)=2|Y=−1)P(X(2)=S|Y=−1)=615⋅26⋅36=115 - 根据得出的概率,取得最大的概率的类,所以:
y=−1.