贝叶斯分类方法---简单入门
朴素贝叶斯分类法
首先是“朴素”一词的由来:为了简化计算,方法假设一个属性值在给定类上的影响独立于其它属性的值,称为类条件独立性。
先验概率:根据以往的分析得到的概率。后验概率:事情已经发生,要求这件事情发生的原因是由某个因素引起的可能性的大小。
贝叶斯定理如下:
p(X),p(H)都是先验概率,可以由训练数据求的。p(X|H)为后验概率。现在大致的概念已经扫清,接下来则是如何在朴素贝叶斯分类器中使用贝叶斯定理。
假设有M个分类(K1,K2,......,Km),给定数据为X,那么X属于Ki分类的条件为:
P(Ki | X) > P(Kj | X) 1<= i,j <=m, i != j
由于P(X) 是不变的,所以只需要比较 P(X | Ki)P(Ki) 的大小。
工作过程如下(举例说明):
(1)假设D是训练数据。分为两类C4 = yes , C4 = No
Age(C1) 收入(C2) 信用(C3) 购买(C4
年轻 高 高 No
年轻 低 高 Yes
年老 高 高 No
年老 高 高 Yes
年老 高 低 Yes
年轻 高 低 yes
则:P(C4 = no) = P(C4 = yes) = 1/2 = 0.5 。
P(C1 = 年老 | C4 = yes) = 1/2 = 0.5 。P(C1 = 年老 | C4 = no) = 1/2 = 0.5 。
P(C2 = 高 | C4 = yes) =3/4。P(C2 = 高 | C4 = no) =1/2。
P(C3 = 高 | C4 = yes) = 1/2。P(C3 = 高 | C4 = no) = 1。
假设此时有一个用户X(C1 = 年老,C2 = 高, C3 = 高),计算是属于购买,还是没购买。
则:P(X|C4 = yes) = 0.5 *0.75 * 0.5 = 0.1875 。P(X|C4 = no) = 0.5 * 0.5 * 1 = 0.25 。
所以:用户X最有可能不会购买,属于C4 = no 的分类。
存在问题:
如果遇到零概率怎么办?
单的规避技巧:(拉普拉斯校准)如果训练数据D很大,以至于对每个计数+1造成的概率变化可以忽略不计,可以避免概率数值为零的情况。
如 0 / 100 , 10 / 100 , 90 / 100 转变为 1 /103, 11/103, 91 / 103
scikit-learn
在scikit-learn中,一共有3个朴素贝叶斯的分类算法类。分别是GaussianNB,MultinomialNB和BernoulliNB。其中GaussianNB就是先验为高斯分布的朴素贝叶斯,MultinomialNB就是先验为多项式分布的朴素贝叶斯,而BernoulliNB就是先验为伯努利分布的朴素贝叶斯。