朴素贝叶斯分类器是一个以贝叶斯定理为基础,广泛应用于情感分类领域的优美分类器。本文尝试分析贝叶斯分类器,并以鸢尾花数据集给出例子。
首先给出贝叶斯公式:
贝叶斯定理是关于随机事件A和B的条件概率(或边缘概率)的一则定理。其中P(A|B)是在B发生的情况下A发生的可能性。
贝叶斯定理也称贝叶斯推理,早在18世纪,英国学者贝叶斯(1702~1763)曾提出计算条件概率的公式用来解决如下一类问题:假设H[1],H[2]…,H[n]互斥且构成一个完全事件,已知它们的概率P(H[i]),i=1,2,…,n,现观察到某事件A与H[1],H[2]…,H[n]相伴随机出现,且已知条件概率P(A|H[i]),求P(H[i]|A)。——摘自百度百科
给一个最简单的例子,只有两个有关联的随机事件A和B。
现在假设你是一个银行职员,现在你的经理给你了一份任务:将一款理财产品推销出去。
假定事件A:购买该理财产品 B:该用户存款金额超过了100万。并给你一万名用户的情况,包含了是否该买该理财产品,该用户的存款金额。
那么作为一个用户职员,应该做什么?应该去找那些人购买这个理财产品的意愿较强,也就是说P(A|B)大还是P(A|~B)大,然后我们就可以选择性的去推销产品了。那么如何获得P(A|B)呢?我们有一万名用户的情况后,我们可以知道一下几个概率:P(A),P(B),P(B|A),P(~B|A)
那么我们就很容易的可以由贝叶斯公式获得P(A|B)和(A|~B)了。这样就可以针对性的进行推销了。
假设对于某个数据集,随机变量C表示样本为C类的概率,F1表示测试样本某特征出现的概率,套用基本贝叶斯公式,则如下所示:
但是当测试样本中不仅仅具有一个样本特征,而具有多个样本特征时,应该怎么做呢?
很简单,只需要推广一下就可以了:
这里给出几个易混淆的定义:
先验概率(prior probability)是指根据以往经验和分析得到的概率,如全概率公式,它往往作为"由因求果"问题中的"因"出现的概率。
先验概率(Prior)。是指根据以往经验和分析得到的概率,如全概率公式,它往往作为"由因求果"问题中的"因"出现的概率。如P(C)是C的先验概率,可以从已有的训练集中计算分为C类的样本占所有样本的比重得出。
证据(Evidence)。即上式P(F1),表示对于某测试样本,特征F1出现的概率。同样可以从训练集中F1特征对应样本所占总样本的比例得出。
似然(likelihood)。即上式P(F1|C),表示如果知道一个样本分为C类,那么其的特征为F1的概率是多少。
此时如果给定一堆特征我们就可以根据上式求解出。但是这个式子太复杂啦,当N比较小的时候还是可以接受的,但是当N很大的时候计算就变得十分复杂了。这时候应该怎么办?
朴素贝叶斯
朴素表示各个特征值相互独立
在这里,为了简化计算,朴素贝叶斯算法做了一假设:“朴素的认为各个特征相互独立”。这么一来,上式的分子就简化成了
这样我们就可以很轻松地根据数据集求得,假设样本具有三种类别,分别为,那么我们可以根据该贝叶斯公式简单地求得:
我们选取出三者的最大值作为该数据的预测值。
分析这个过程,我们发现获得的过程中需要除去这一相同的值,所以我们可以直接用作为预测值,选取较大的预测值作为结果。
另外,贝叶斯公式推导能够成立有个重要前期,就是各个证据(evidence)不能为0。如果某个证据为0,那么可以得到:也为0,由于我们的数据集并没有涵盖所有的数据,我们只能说这时候出现的概率较小,不能完全确定的说为0。而显示某些特征未出现在测试集中的情况是可以发生的。因此实现上通常要做一些小的处理,例如把所有计数进行+1(加法平滑(additive smoothing,又叫拉普拉斯平滑(Laplace smothing))。而如果通过增加一个大于0的可调参数alpha进行平滑,就叫Lidstone平滑。
拉普帕斯平滑变化,这个名字看起来挺高大上,其实原理很简单:如果我们的数据集内没有出现该证据,我们怎么办?造一个就好了,但是其他的证据不乐意了,你给它造了一个,我们呢?所以我们对所有的证据(不管出现的还是没出现的)都加一,这样就避免了证据为0的情况出现。
在所有6个分为C=1的影评样本中,某个特征F1=1不存在,则P(F1=1|C=1) = 0/6,P(F1=0|C=1) = 6/6。经过加法平滑后,P(F1=1|C=1) = (0+1)/(6+2)=1/8,P(F1=0|C=1) = (6+1)/(6+2)=7/8。