基于概论率的分类方法
优点:在数据较少的情况下仍然有效,可以处理多类别问题
缺点:对于输入数据的准备方式较为敏感
使用数据类型:标称型数据
朴素贝叶斯是贝叶斯决策理论的一部分,所以讲述朴素贝叶斯之前有必要快速了解一下贝叶斯决策理论。
假设现在我们有一个数据集,它由两类数据组成,数据分布如图4-1所示:
条件概率
接下来花的时间讲讲概率与条件概率。如果你对p(x,y|c1)符号很熟悉,你可以跳过
假设现在有一个装了7块石头的罐子,其中3块是灰色的,4块是黑色的(图4-2)。如果从罐子中随机取出一块石头,那么是灰色石头的可能性是多少?由于取石头有7种可能,其中3种为灰色,所以取出灰色石头的概率为3/7.那么取到黑色石头的概率又是多少呢?很显然,是4/7.我们使用P(gray)来表示取到灰色石头的概率,其概率值可以通过灰色石头数目除以总的石头数目来得到。
如果这7块石头如图4-3所示放在两个桶中,那么上述概率应该如何计算?
要计算P(gray)或者P(black),事先得知道石头所在桶的信息会不会改变结果?你有可能已经想到计算从B桶中取到灰色石头的概率的办法,这就是所谓的条件概率(conditional probability)。假定计算的是从B桶取到灰色石头的概率,这个概率可以记作P(gray|bucketB),我们称之为“在已知石头出自B桶的条件下,取出灰色石头的概率”。不难得到,P(gray|bucketA)值为2/4,P(gray|bucketB)的值为1/3.
条件概率的计算公式如下所示:
P(gray|bucketB)= P(gray|bucketB)/P(bucketB)
我们来看看上述公式是否合理。首先,用B桶中灰色石头的个数除以两个桶中总的石头数,得到P(gray and bucketB)=1/7。其次,由于B桶中有3块石头,而总石头数为7,于是P(bucketB)就等于3/7.于是有P(gray|bucketB)= P(gray and bucketB)/P(bucketB)= (1/7)/(3/7)= 1/3。这个公式虽然对于这个简单例子来说有点复杂,但当存在更多特征时是非常有效的。用代数方法计算条件概率时,该公式也很有用。
另一种有效计算条件概率的方法称为贝叶斯准则。贝叶斯准则告诉我们如何交换条件概率中的条件与结果,即如果已知P(x|c),要求P(c|x),那么可以使用下面的计算方法:
P(c):先验概率
P(x|c):后验概率
P(x|c)/P(x)称为"可能性函数"(Likelyhood),这是一个调整因子,使得预估概率更接近真实概率。
后验概率 = 先验概率 x 调整因子
使用条件概率来分类
刚才提到贝叶斯决策理论要求计算两个概率p1(x,y)和p2(x,y):
如果p1(x,y)>p2(x,y),那么属于类别1;
如果p2(x,y)>p1(x,y),那么属于类别2。
但这两个准则并不是贝叶斯决策理论的所有内容。使用p1()和p2()只是为了尽可能简化描述,而真正需要计算和比较的是p(c1|x,y)和p(c2|x,y)。这些符号所代表的具体意思是:给定某个由x,y表示的数据点,那么该数据点来自类别c1的概率是多少?数据点来自类别c2的概率又是多少?主意这些概率与刚才给出的概率p(x,y|c1)并不一样,不过可以使用贝叶斯准则来交换概率中条件与结果。具体地,应用贝叶斯准则得到:
如果p(c1|x,y)>p(c2|x,y),那么属于类别c1;
如果p(c1|x,y)<p(c2|x,y),那么属于类别c2。
使用贝叶斯准则,可以通过已知的三个概率值来计算未知的概率值。
sklearn
高斯朴素贝叶斯
http://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.GaussianNB.html