当前位置:   article > 正文

朴素贝叶斯(Naive Bayes)_fitcnb函数

fitcnb函数

目录

1 概念

1.1 概率论基础

1.2 贝叶斯公式

1.3 朴素贝叶斯分类器

2 算法的优缺点

3 MATLAB代码

参考文献


1 概念

1.1 概率论基础

(1)条件概率公式

设A,B是两个事件,且P(A)>0,P(B)>0,由图1可知,在事件B已经发生的情况下,事件A发生的概率为事件A和事件B的交集除以事件B,即:P(A|B)=P(A∩B)/P(B);

同理,在事件A已经发生的情况下,事件B发生的概率为事件A和事件B的交集除以事件A,即:P(B|A)=P(A∩B)/P(A)。

图1 事件A与事件B

(2)全概率公式

如果事件组A_{1}A_{2},.... 满足:1)A_{1}A_{2}....两两互斥,即A1A2=∅,i\neq ji,j=1,2,...,且P(A_{i})>0,i=1,2,...

                                                  2)A1A2...=Ω,则称事件组A_{1}A_{2},.... 是样本空间Ω的一个划分。

      此时B为任一事件,则有:P(B)=\sum_{i=1}^{n}P(A_{i})P(B|A_{i})                                                      (1.1-1)

(3)链式法则

对于事件组A_{1}A_{2},....,A_{n},有:

P(A_{1},A_{2},...,A_{n})=P(A_{1}|A_{2},...,A_{n})*P(A_{2}|A_{3},...,A_{n})\cdots P(A_{n-1}|A_{n})*P(A_{n})        (1.1-2)

1.2 贝叶斯公式

根据条件概率的计算公式得,P(A∩B)=P(B)*P(A|B)=P(A)*P(B|A),通过转换该公式可以得到贝叶斯公式:

                                                     P(A|B)=\frac{P(A)*P(B|A)}{P(B)}                       (1.2-1)

假设事件A表示为类别,事件B表示为特征,则有:P(类别 | 特征)=P(类别)*P(特征 | 类别) / P(特征)

注意:如果 A 和 B 是相互独立的两个事件,则:P(A|B) = P(A) 或 P(B|A) = P(B),因此贝叶斯公式的前提是各个事件不相互独立。

P(A)是先验概率,表示每种类别分布的概率;

P(B|A)是条件概率,表示在某种类别前提下,某事发生的概率;

P(A|B)是后验概率,表示某事发生了,并且它属于某一类别的概率,有了这个后验概率,便可对样本进行分类。后验概率越大,说明某事物属于这个类别的可能性越大,便越有理由把它归到这个类别下。

将上述贝叶斯公式推广到一般情况,假设事件A本身又包含多种可能性,即 A 是一个集合:\left \{ A_{1},A_{2},...,A_{n} \right \},那么对于集合中任意的A_{i},贝叶斯定理可用下式表示:

                                                              P(A_{i}|B)=\frac{P(A_{i})*P(B|A_{i})}{P(B)}

由全概率公式可得,P(A_{i}|B)=\frac{P(A_{i})*P(B|A_{i})}{\sum_{i=1}^{n}P(A_{i})P(B|A_{i})}                   (1.2-2)

1.3 朴素贝叶斯分类器

条件概率P(B|A)是所有特征上的联合概率,难以从有限的训练样本直接估计得到,所以基于贝叶斯公式(1.2-1)来估计后验概率P(A|B)存在困难。为解决这个问题,朴素贝叶斯分类器采用了“特征条件独立性假设”:对已知类别,假设所有特征相互独立,即假设每个特征独立地对分类结果产生影响

在存在多个特征的情况下,式(1.2-1)改写为:P(A|b_{1},b_{2},...,b_{n})=\frac{P(A)*P(b_{1},b_{2},...,b_{n}|A)}{P(b_{1},b_{2},...,b_{n})}             (1.3-1)

根据链式法则可得,P(b_{1},b_{2},...,b_{n}|A)=P(b_{1}|A)*P(b_{2}|A,b_{1})\cdots P(b_{n}|A,b_{1},b_{2},...,b_{n-1})              (1.3-2)

由“特征条件独立性假设”知,每个特征b_{i}与其它特征都不相关,所以有P(b_{i}|A,b_{j})=P(b_{i}|A),i\neq j ,则式(1.3-2)改写为:

                                                                P(b_{1},b_{2},...,b_{n}|A)=\prod_{i=1}^{n}P(b_{i}|A)                                            (1.3-3)

将式(1.3-3)代入式(1.3-1)可得,P(A|b_{1},b_{2},...,b_{n})=\frac{P(A)*\prod_{i=1}^{n}P(b_{i}|A)}{P(b_{1},b_{2},...,b_{n})}                                         (1.3-4)

由于对所有类别来说P(b_{1},b_{2},...,b_{n})相同,因此当计算对象所属类别时,可直接省去式(1.3-4)中的分母部分,从而得到朴素贝叶斯分类器的表达式:

                                                   P(A|b_{1},b_{2},...,b_{n})=P(A)*\prod_{i=1}^{n}P(b_{i}|A)                                             (1.3-5)      

其中,A 是一个类别集合:\left \{ A_{1},A_{2},...,A_{j} \right \},依据式(1.3-5)计算对象所属各个类别的概率,取概率最大的一类即为该对象所属类别。

2 算法的优缺点

优点:算法实现简单、高效,分类性能较好;

缺点:样本的各个属性之间必须独立,否则,分类效果会较差。

3 MATLAB代码

(1)MATLAB自带的贝叶斯算法函数fitcnb用于数据分类

  1. Nb=fitcnb(trainData,trainLabel);
  2. y_nb=Nb.predict(testData);

(2)自编MATLAB程序实现朴素贝叶斯分类器,进而对数据进行分类,源码地址见:基于朴素贝叶斯分类器的识别

参考文献

[1]全概率公式、贝叶斯公式推导过程

[2]概率论的链式法则

[3]朴素贝叶斯分类模型(一)

[4]朴素贝叶斯算法实现分类以及Matlab实现

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/982563
推荐阅读
相关标签
  

闽ICP备14008679号