贝叶斯公式由英国数学家贝叶斯 ( Thomas Bayes 1702-1761 ) 发展,用来描述两个条件几率之间的关系,好比 P(A|B) 和 P(B|A)。按照乘法法则,能够马上导出:P(A∩B) = P(A)*P(B|A)=P(B)*P(A|B)。如上公式也可变形为:P(A|B)=P(B|A)*P(A)/P(B)。因为其有着坚实的数学基础,贝叶斯分类算法的误判率是很低的。贝叶斯方法的特色是结合先验几率和后验几率,即避免了只使用先验几率的主观偏见,也避免了单独使用样本信息的过拟合现象。贝叶斯分类算法在数据集较大的状况下表现出较高的准确率,同时算法自己也比较简单。算法
贝叶斯(Thomas Bayes,1702—1761),英国牧师、业余数学家。生活在18世纪的贝叶斯生前是位受人尊敬的英格兰长老会牧师。为了证实上帝的存在,他发明了几率统计学原理,遗憾的是,他的这一美好愿望至死也未能实现。贝叶斯在数学方面主要研究几率论。他首先将概括推理法用于几率论基础理论,并创立了贝叶斯统计理论,对于统计决策函数、统计推断、统计的估算等作出了贡献。1763年发表了这方面的论著,对于现代几率论和数理统计都有很重要的做用。1758年发表了另外一著做《机会的学说概论》。贝叶斯所采用的许多术语都被沿用至今。贝叶斯思想和方法对几率统计的发展产生了深远的影响。今天,贝叶斯思想和方法在许多领域都得到了普遍的应用。从二十世纪20~30年代开始,几率统计学出现了“频率学派”和“贝叶斯学派”的争论,至今,两派的恩恩怨怨仍在继续。spring
朴素贝叶斯分类是基于贝叶斯几率的思想,假设属性之间相互独立,求得各特征的几率,最后取较大的一个做为预测结果。虽然这个简化方式在必定程度上下降了贝叶斯分类算法的分类效果,可是在实际的应用场景中,极大地简化了贝叶斯方法的复杂性。简而言之,朴素贝叶斯是较为简单的一种分类器。函数
属性独立性:事件B的发生不对事件A的发生形成影响,这样的两个事件叫作相互独立事件。然而其属性独立性假设在现实世界中大多不能成立,例如: “spring”的后面更有可能跟着“MVC”。学习
A和B中至少有一件事情发生:A∪B; A与B同时发生:A∩B(或AB);若是P(AB) =P(A)P(B),称A,B 相互独立。即:从数学上说,若N (N≥2) 个事件相互独立,则必须知足这样的条件:其中任意k (N ≥ k ≥2)个事件同时发生的几率等于该k个事件单独发生时的几率的乘积。spa
例:假设事件相互独立,P(spring) = 0.2,P(MVC) = 0.8, 则 P(spring MVC) = 0.2 * 0.8=0.163d
逻辑回归经过拟合曲线(或者学习超平面)实现分类,决策树经过寻找最佳划分特征进而学习样本路径实现分类,支持向量机经过寻找分类超平面进而最大化类别间隔实现分类。相比之下,朴素贝叶斯另辟蹊径,经过考虑特征几率来预测分类。blog
举个例子:如今有100我的,鱼龙混杂,好人和坏人的个数都差很少。如今要利用他们来训练一个“坏蛋识别器”。这时应该怎么办呢?咱们无论他们以前干过什么事,只单看他们的长相。也就是说,咱们在区别好人坏人时,只考虑他们的样貌特征。好比说“笑”这个特征,它能够是“甜美的笑”、“随和的笑”、“憨厚的笑”、“没心没肺的笑”、“微笑”等等,这些更多是“好人的笑”;也能够是“阴险的笑”、“不怀好意的笑”、“色眯眯的笑”、“冷笑”、“皮笑肉不笑”等等,这些更多是“坏人的笑”。单单就“笑”这个特征来讲,一个好人发出“好人的笑”的几率更大,频率更高;而坏人则是发出“坏人的笑”的几率更大,频率更高。固然,好人也有发出坏笑的时候,坏人也有发出好人的笑的时候,这些就都是噪声了。事件
除了笑以外,这里能够用的特征还有纹身,性别等。朴素贝叶斯把相似“笑”这样的特征几率化,构成一个“人的样貌向量”以及对应的“好人/坏人标签”,训练出一个标准的“好人模型”和“坏人模型”,这些模型都是各个样貌特征几率构成的。这样,当一个品行未知的人来了之后,咱们能够迅速获取他(她)的样貌特征向量,分别输入“好人模型”和“坏人模型”,输出两个几率值。若是“坏人模型”输出的几率值大一些,那这我的颇有可能就是个坏人了。ci
决策树又是怎么作的呢?决策树可能先看性别,由于它发现给定的带标签人群里面坏人中男性更多,这个特征眼下最能区分坏人和好人,而后按性别先把一拨人分红两拨;接着看“笑”这个特征,由于它是接下来最有区分度的特征,根据不一样的“笑”再把两拨人分红四拨;接下来看纹身......最后发现好人要么在学堂读书,要么在田里种地,要么在山上砍柴。而坏人呢,要么在大街上溜达,要么在地下买卖白粉,要么在海里当海盗。这些有次序的特征就像路上的一个个垫脚石(树的节点)同样,构成通往不一样地方的路径(树的枝丫),这些不一样路径的目的地(叶子)就是一个类别容器,包含了一类人。一个品行未知的人来了,按照其样貌特征顺序及其对应的特征值,不断走啊走,最后走到了学堂或农田,那就是好人;走到了地下或大海,那就是坏人。能够看出来,两种分类模型的原理是很不相同的。数学
【例】给定以下数据:
帅? |
性格? |
财富? |
上进? |
嫁不嫁? |
帅 |
很差 |
穷 |
不上进 |
不嫁 |
不帅 |
好 |
穷 |
上进 |
不嫁 |
帅 |
好 |
穷 |
上进 |
嫁 |
不帅 |
好 |
富 |
上进 |
嫁 |
帅 |
很差 |
穷 |
上进 |
不嫁 |
不帅 |
很差 |
穷 |
不上进 |
不嫁 |
帅 |
好 |
富 |
不上进 |
嫁 |
不帅 |
好 |
富 |
上进 |
嫁 |
帅 |
好 |
富 |
上进 |
嫁 |
不帅 |
很差 |
富 |
上进 |
嫁 |
帅 |
好 |
穷 |
不上进 |
不嫁 |
帅 |
好 |
穷 |
不上进 |
不嫁 |
如今咱们的问题是,假设有一对男女友,男生向女生求婚,此男生的四个特色分别是不帅,性格很差,穷,不上进,请你来判断一下该女生是嫁仍是不嫁?
这是一个经典的分类问题,转换为数学问题就是比较p(嫁|(不帅、性格很差、穷、不上进))和p(不嫁|(不帅、性格很差、穷、不上进))的几率,就能给出嫁或者不嫁的答案!
这里咱们运用到朴素贝叶斯公式:
咱们须要求p(嫁|(不帅、性格很差、穷、不上进)),这是咱们如今不知道的,可是经过朴素贝叶斯公式能够转化为三个较为简单的量:
p(不帅、性格很差、穷、不上进|嫁)、p(不帅、性格很差、穷、不上进)、p(嫁)。
p(不帅、性格很差、穷、不上进|嫁) = p(不帅|嫁)*p(性格很差|嫁)*p(穷|嫁)*p(不上进|嫁),那么咱们就要从给定的数据中分别统计出右边这几个几率,就能够求出左边的几率!
咱们将上面的公式整理一下,获得:
接下来咱们一个一个地进行统计计算。
p(嫁)=?
首先咱们整理的训练数据中,嫁的样本数以下:
帅? |
性格? |
财富? |
上进? |
嫁不嫁? |
帅 |
好 |
穷 |
上进 |
嫁 |
不帅 |
好 |
富 |
上进 |
嫁 |
帅 |
好 |
富 |
不上进 |
嫁 |
不帅 |
好 |
中 |
上进 |
嫁 |
帅 |
好 |
中 |
上进 |
嫁 |
不帅 |
很差 |
富 |
上进 |
嫁 |
则 p(嫁) = 6/12(总样本数) = 1/2
接下来求p(不帅|嫁)=?
嫁的状况下不帅的样本数以下:
帅? |
性格? |
财富? |
上进? |
嫁不嫁? |
不帅 |
好 |
富 |
上进 |
嫁 |
不帅 |
好 |
中 |
上进 |
嫁 |
不帅 |
很差 |
富 |
上进 |
嫁 |
则p(不帅|嫁) = 3/6 = 1/2
再求p(性格很差|嫁)= ?
嫁的状况下性格很差的样本数以下:
帅? |
性格? |
财富? |
上进? |
嫁不嫁? |
不帅 |
很差 |
富 |
上进 |
嫁 |
则p(性格很差|嫁)= 1/6
求p(穷|嫁) = ?
嫁的状况下穷的样本数以下:
帅? |
性格? |
财富? |
上进? |
嫁不嫁? |
帅 |
好 |
穷 |
上进 |
嫁 |
则p(穷|嫁) = 1/6
再求p(不上进|嫁) = ?
嫁的状况下不上进的样本数以下:
帅? |
性格? |
财富? |
上进? |
嫁不嫁? |
帅 |
好 |
富 |
不上进 |
嫁 |
则p(不上进|嫁) = 1/6
下面开始求分母,p(不帅),p(性格很差),p(矮),p(不上进)
统计样本以下:
帅? |
性格? |
财富? |
上进? |
嫁不嫁? |
帅 |
很差 |
穷 |
不上进 |
不嫁 |
不帅 |
好 |
穷 |
上进 |
不嫁 |
帅 |
好 |
穷 |
上进 |
嫁 |
不帅 |
好 |
富 |
上进 |
嫁 |
帅 |
很差 |
穷 |
上进 |
不嫁 |
不帅 |
很差 |
穷 |
不上进 |
不嫁 |
帅 |
好 |
富 |
不上进 |
嫁 |
不帅 |
好 |
富 |
上进 |
嫁 |
帅 |
好 |
富 |
上进 |
嫁 |
不帅 |
很差 |
富 |
上进 |
嫁 |
帅 |
好 |
穷 |
不上进 |
不嫁 |
帅 |
好 |
穷 |
不上进 |
不嫁 |
不帅统计如上标黄所示,占5个,那么p(不帅) = 5/12
帅? |
性格? |
财富? |
上进? |
嫁不嫁? |
帅 |
很差 |
穷 |
不上进 |
不嫁 |
不帅 |
好 |
穷 |
上进 |
不嫁 |
帅 |
好 |
穷 |
上进 |
嫁 |
不帅 |
好 |
富 |
上进 |
嫁 |
帅 |
很差 |
穷 |
上进 |
不嫁 |
不帅 |
很差 |
穷 |
不上进 |
不嫁 |
帅 |
好 |
富 |
不上进 |
嫁 |
不帅 |
好 |
富 |
上进 |
嫁 |
帅 |
好 |
富 |
上进 |
嫁 |
不帅 |
很差 |
富 |
上进 |
嫁 |
帅 |
好 |
穷 |
不上进 |
不嫁 |
帅 |
好 |
穷 |
不上进 |
不嫁 |
性格很差统计如上标黄所示,占4个,那么p(性格很差) = 4/12 = 1/3
帅? |
性格? |
财富? |
上进? |
嫁不嫁? |
帅 |
很差 |
穷 |
不上进 |
不嫁 |
不帅 |
好 |
穷 |
上进 |
不嫁 |
帅 |
好 |
穷 |
上进 |
嫁 |
不帅 |
好 |
富 |
上进 |
嫁 |
帅 |
很差 |
穷 |
上进 |
不嫁 |
不帅 |
很差 |
穷 |
不上进 |
不嫁 |
帅 |
好 |
富 |
不上进 |
嫁 |
不帅 |
好 |
富 |
上进 |
嫁 |
帅 |
好 |
富 |
上进 |
嫁 |
不帅 |
很差 |
富 |
上进 |
嫁 |
帅 |
好 |
穷 |
不上进 |
不嫁 |
帅 |
好 |
穷 |
不上进 |
不嫁 |
穷统计如上标黄所示,占7个,那么p(穷) = 7/12
帅? |
性格? |
财富? |
上进? |
嫁不嫁? |
帅 |
很差 |
穷 |
不上进 |
不嫁 |
不帅 |
好 |
穷 |
上进 |
不嫁 |
帅 |
好 |
穷 |
上进 |
嫁 |
不帅 |
好 |
富 |
上进 |
嫁 |
帅 |
很差 |
穷 |
上进 |
不嫁 |
不帅 |
很差 |
穷 |
不上进 |
不嫁 |
帅 |
好 |
富 |
不上进 |
嫁 |
不帅 |
好 |
富 |
上进 |
嫁 |
帅 |
好 |
富 |
上进 |
嫁 |
不帅 |
很差 |
富 |
上进 |
嫁 |
帅 |
好 |
穷 |
不上进 |
不嫁 |
帅 |
好 |
穷 |
不上进 |
不嫁 |
不上进统计如上标黄所示,占5个,那么p(不上进) = 5/12
到这里,要求p(不帅、性格很差、穷、不上进|嫁),所须要的全部项所有求出来了,下面咱们带入数据进去便可算出:
=(1/2*1/6*1/6*1/6*1/2)/(5/12*1/3*7/12*5/12)
下面咱们根据一样的方法来求p(不嫁|不帅,性格很差,穷,不上进),彻底同样的作法,为了加深理解,咱们再来过一遍。首先公式以下:
下面咱们也一个一个地来进行统计计算,这个公式里面,分母和上一个公式是同样的,因此咱们不须要再算一次分母了,只需算分子部分。
p(不嫁)=?
首先咱们整理的训练数据中,不嫁的样本数以下:
帅? |
性格? |
财富? |
上进? |
嫁不嫁? |
帅 |
很差 |
穷 |
不上进 |
不嫁 |
不帅 |
好 |
穷 |
上进 |
不嫁 |
帅 |
很差 |
穷 |
上进 |
不嫁 |
不帅 |
很差 |
穷 |
不上进 |
不嫁 |
帅 |
好 |
穷 |
不上进 |
不嫁 |
帅 |
好 |
穷 |
不上进 |
不嫁 |
则p(不嫁)= 6/12(总样本数) = 1/2
p(不帅|不嫁) = ?
不嫁的状况下不帅的样本数以下:
帅? |
性格? |
财富? |
上进? |
嫁不嫁? |
不帅 |
好 |
穷 |
上进 |
不嫁 |
不帅 |
很差 |
穷 |
不上进 |
不嫁 |
则p(不帅|不嫁) = 2/6 = 1/3
p(性格很差|不嫁) = ?
不嫁的状况下性格很差的样本数以下:
帅? |
性格? |
财富? |
上进? |
嫁不嫁? |
帅 |
很差 |
穷 |
不上进 |
不嫁 |
帅 |
很差 |
穷 |
上进 |
不嫁 |
不帅 |
很差 |
穷 |
不上进 |
不嫁 |
则p(性格很差|不嫁) = 3/6 = 1/2
p(穷|不嫁) = ?
不嫁的状况下穷的样本数以下:
帅? |
性格? |
财富? |
上进? |
嫁不嫁? |
帅 |
很差 |
穷 |
不上进 |
不嫁 |
不帅 |
好 |
穷 |
上进 |
不嫁 |
帅 |
很差 |
穷 |
上进 |
不嫁 |
不帅 |
很差 |
穷 |
不上进 |
不嫁 |
帅 |
好 |
穷 |
不上进 |
不嫁 |
帅 |
好 |
穷 |
不上进 |
不嫁 |
则p(矮|不嫁) = 6/6 = 1
p(不上进|不嫁) = ?
不嫁的状况下不上进的样本数以下:
帅? |
性格? |
财富? |
上进? |
嫁不嫁? |
帅 |
很差 |
穷 |
不上进 |
不嫁 |
不帅 |
很差 |
穷 |
不上进 |
不嫁 |
帅 |
好 |
穷 |
不上进 |
不嫁 |
帅 |
好 |
穷 |
不上进 |
不嫁 |
则p(不上进|不嫁) = 4/6 = 2/3
那么根据公式:
=(1/3*1/2*1*2/3*1/2)/(5/12*1/3*7/12*5/12)
很显然(1/3*1/2*1*2/3*1/2) > (1/2*1/6*1/6*1/6*1/2)
因而有p(不嫁|不帅、性格很差、穷、不上进) > p(嫁|不帅、性格很差、穷、不上进)
因此咱们根据朴素贝叶斯算法能够给这个女生答案,是不嫁!