贝叶斯定理
英国数学家贝叶斯(Thomas Bayes)曾经给出如下定理:
P(A)表示A事件发生的概率,P(B)表示B事件发生的概率;P(A|B)表示在B事件已经确定发生的情况下,发生A事件的概率;P(B|A)表示在A事件已经确定发生的情况下,发生B事件的概率;P(AB)表示AB事件同时发生的概率。所以:
P(A)P(B|A)=P(AB)=P(B)P(A|B)
也就是说,A事件发生的概率乘以A事件已发生条件下B事件发生的概率,和B事件发生的概率乘以B事件已发生条件下A事件发生的概率,这二者是相等的,都等于AB事件同时发生的概率。
(特例:如果A、B是独立事件,互不相关,那么P(A)=P(A|B),P(B)=P(B|A),于是:P(A)P(B)=P(AB)。)
变换一下得到:
P(B|A)=P(B)P(A|B)/P(A)
在很多场景下,P(A|B)是容易得出的,但是P(B|A)不容易获得,这时可以利用贝叶斯公式求得。
我们还可以把贝叶斯定理推论到三元情形:
P(A|B,C)=P(B|A)P(A)P(C|A,B) / (P(B)P(C|B))
朴素贝叶斯分类(Naive Bayesian Classification)
假设具备如下分类:C1, C2, C3, … Cn,
同时,待分类项x具备如下相关属性分类项:a1, a2, a3, … an,
接着我们定义x属于Ck分类,当且仅当:P(Ck|x)=max{P(C1|x), P(C2|x), … P(C3|x)}。这一步是属于对分类器的应用。
也就是说,根据x的相关属性分类项来判断,和哪一分类最匹配时,x就算属于该分类。
下面我们开始进行分类器的构建:
1、确定相关特征属性分类项。就是上述的a1, a2, … an,对于x出现在某分类Ci中的概率,等于每个特征属性出现在该分类中的概率之积:
P(x|Ci)=P(a1|Ci)P(a2|Ci)…P(an|Ci) —— 公式A
2、整理取得训练样本。这个样本的数量和准确性会大大影响到分类的准确性,很多时候需要清洗样本数据。
3、分别计算每个类别下每个相关属性的概率,即:
P(ak|Ci),其中1<=k<=m,ak表示任一相关属性,1<=i<=n,Ci表示任一分类。
根据贝叶斯定理和公式A,可以得到x事件出现在Ci分类中的概率:
P(Ci|x)P(x)=P(Ci)P(x|Ci)=P(Ci)P(a1|Ci)P(a2|Ci)…P(an|Ci) —— 公式B
通过比较对任意的i,1<=i<=n的时候,P(Ci|x)P(x)的取值,从中找到最大值,就可以找到x的分类——因为对于不同的i,P(x)在是恒定值,所以对此问题而言,比较P(Ci|x)P(x)的最大值和比较P(Ci|x)的最大值是一致的。
举一个具体的例子:
一批商品,分类C1是正品,C2是次品。现在有两个属性分类项:a1表示质量,划为<1千克和>=1千克两个分类;a2表示体积,划为<1cm³和>=1cm³两个分类。
经过100个商品的样本统计,其中正品有80个,其中有60个质量<1千克,20个质量>=1千克,有40个体积<1cm³,40个体积>=1cm³;而余下的次品20个中,有5个质量<1千克,15个质量>=1千克,4个体积<1cm³,16个体积>=1cm³。
也就是说:
P(C1)=80/100, P(a1<1|C1)=60/80, P(a1>=1|C1)=20/80, P(a2<1|C1)=40/80, P(a2>=1|C1)=40/80
P(C2)=20/100, P(a1<1|C2)=5/20, P(a1>=1|C2)=15/20, P(a2<1|C2)=4/20, P(a2>=1|C2)=16/20
下面使用已经计算完成的分类器进行分类:
有一个待分类的商品x,它的质量是0.8千克,体积是1.1cm³,那么:
根据公式B:
P(x)P(C1|x)=P(C1)P(x|C1)=P(C1)P(a1<1|C1)P(a2>=1|C1)=0.3
P(x)P(C2|x)=P(C2)P(x|C2)=P(C2)P(a1<1|C2)P(a2>=1|C2)=0.12
所以,该商品判断为C1正品。
文章系本人原创,转载请保持完整性并注明出自《四火的唠叨》
相关推荐
人工智能_项目实践_朴素贝叶斯分类器_朴素贝叶斯文本分类器 **数据:**搜狗文本分类语料库 **分类器:**朴素贝叶斯分类器 NBC(Naive Bayesian Classifier) **编程语言:**Python+jieba分词库+nltk+sklearn
使用朴素贝叶斯分类Iris数据,含Iris原始数据和实验报告
该文档为朴素贝叶斯分类算法的实现步骤,包括源码注解和详细步骤
实现朴素贝叶斯分类器算法基本功能,代码有注释,还包括一个垃圾邮件过滤的实例。另外我这次用的是python2.7版,如果用python3的可能需要根据提示修改几个语法(sorted函数的参数)。
java实现朴素贝叶斯分类算法
机器学习领域一个非常重要理论就是贝叶斯理论,本文就是一篇关于使用朴素贝叶斯分类器来进行多维数据分类的学习使用文档,由于使用latex进行排版,所以就直接上传PDF文档了,如有问题可以在CSDN上私信我,多谢批评...
朴素贝叶斯分类器的代码,还有一些hadoop运行时出现的问题
朴素贝叶斯分类器 MATLAB 源代码,里面含有使用实例,用的是 UCI 的 mushroom 数据集。 分类器详细介绍见: http://blog.csdn.net/yunduanmuxue/article/details/39693917
朴素贝叶斯分类器.本例用于识别手写的数字A~J!!!!
这个是我自己写的朴素贝叶斯分类器,离散化用的是信息增益率算的!里面有Readme.txt说的还算详细,程序里也有注释!程序写的比较简单,希望高手能指点!这个是个VS工程。 忘说了,如果自己做测试数据集的话,最后...
资源难得啊,花钱买的,基于属性加权的朴素贝叶斯分类算法.kdh
本文实例讲述了朴素贝叶斯分类算法原理与Python实现与使用方法。分享给大家供大家参考,具体如下: 朴素贝叶斯分类算法 1、朴素贝叶斯分类算法原理 1.1、概述 贝叶斯分类算法是一大类分类算法的总称 贝叶斯分类算法...
基于权重的朴素贝叶斯分类器设计与实现基于权重的朴素贝叶斯分类器设计与实现基于权重的朴素贝叶斯分类器设计与实现基于权重的朴素贝叶斯分类器设计与实现基于权重的朴素贝叶斯分类器设计与实现基于权重的朴素贝叶斯...
基于朴素贝叶斯分类器的简单手写体数字识别 .
在VC6.0编译环境下使用C++编写的朴素贝叶斯分类程序
模式识别朴素贝叶斯分类器下载模式识别朴素贝叶斯分类器下载
Python 文本数据 药品数据挖掘NLP朴素贝叶斯分类 自然语言处理 向量化 python输入输出函数编写 jupyter notebook numpy pandas sklearn 数据分析 数据挖掘
主要介绍了Python实现的朴素贝叶斯分类器,结合具体实例形式分析了基于Python实现的朴素贝叶斯分类器相关定义与使用技巧,需要的朋友可以参考下
针对朴素贝叶斯分类算法中缺失数据填补问题,提出一种基于改进EM(Expectation Maximization)算法的朴素贝叶斯分类算法。该算法首先根据灰色相关度对缺失数据一个估计,估计值作为执行EM算法的初始值,迭代执行E步M...
朴素贝叶斯分类是一种十分简单的分类算法,叫它朴素贝叶斯分类是因为这种方法的思想真的很朴素,朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此...