朴素贝叶斯分类是一种十分简单的分类算法,它的核心思想就是:求解某样本在此特征组合情况下属于各个类别的概率,哪个类别对应的概率最大,就猜测属于该类别。举个例子,当你看到今天的温度,湿度和空气状况,判断今天属于春天还是冬天;假如你在北京,今天气温5度,干燥,轻度雾霾,那么你就很可能觉得今天应该是冬天了;就是根据一组特征值来判断属于哪种类别的概率大。
其数学定义如下:
假设类别集合为C={c1,c2,...,cn},特征集合为A={A1,A2,...,An}。在某一组特征值为{a1,a2,...,an}的情况下,求解属于某类别ci的概率,这其实是一个条件概率,该概率为:
p(ci|a1,a2,...,an)
在实际应用中,直接求解这个值可能有些不现实,我们可以根据贝叶斯定理进行变换一下:
p(ci|a1,a2,...,an)=p(ci)∗p(a1,a2,...,an|ci)p(a1,a2,...,an)
用朴素的语言可以表达为:
posterior(后验概率)=prior(先验概率)∗likelihoor(似然概率)evidence(边际概率)
实际中,我们只关心分子部分,因为分母不依赖于类别
C而且特征
{a1,a2,...an}的值是给定的,于是分母可以认为是一个常数。这样求解重点就等价于
p(ci)p(ci|a1,...,an),重复使用链式法则,可将该式写成条件概率的形式,如下所示:
p(ci)p(ci|a1,...,an) =p(ci)p(ci|a1)p(a2,a3,...,an|ci,a1) =p(ci)p(ci|a1)p(a2|ci,a1)p(a3,...,an|ci,a1,a2) =p(ci)p(ci|a1)p(a2|ci,a1)p(a3|c,a1,a2)...p(an|ci,a1,...,an−1)由于朴素贝叶斯假设各特征之间是相互独立的,则有:
p(ai|C,aj)=p(ai|C)
所以有:
p(ci)p(ci|a1,...,an)=p(ci)p(a1|ci)...p(an|ci)
=p(ci)∏k=1np(ak|ci)
而
p(ci)我们一般用类别
i的样本数量除以总样本数量来估计,即:
p(ci)=D(i):类别i样本数量D:总的样本数量
而对于
p(ak|ci),只需要找出所有的类别为i的样本中,第k个属性中,取值为
ak的比例。
这样便可以算出每种类别对应的p(ci|a1,a2,...,an)值,而这个p值较大的类就是该特征值对有可能所属的类别。
离散型举例
下图是一个例子:根据天气状况决定要不要去打球:
现在假设有一个新的样本,{sunny,cool,high,true}
我们可以求解两类分别对应的概率p(play=yes|sunny,cool,high,true)和p(play=no|sunny,cool,high,true),假设前者为py后者为pn,根据前面的:
p(ci|a1,a2,...,an)=p(ci)∗p(a1,a2,...,an|ci)p(a1,a2,...,an)
由于分母都相同,可以不同考虑,仅仅去比较分子的大小。所以转化为计算分子部分,求解分子部分公式为:
p(ci)p(ci|a1,...,an)=p(ci)∏k=1np(ak|ci)
则有:
py=p(yes)∗p(sunny|yes)∗p(cool|yes)∗p(high|yes)∗p(true|yes)pn=p(no)∗p(sunny|no)∗p(cool|no)∗p(high|no)∗p(true|no)
而p(yes)=914 ,即训练样本中,类型为yes所占的比例。同理,p(yes)=514,二者都是先验概率。
而p(sunny|yes)=29,即所有为yes类的样本中,天气为sunny所占的比例;同理p(sunny|no)=35。其他的类似求解,最后解得:p(cool|yes)=13,p(cool|no)=15;p(high|yes)=13,p(high|no)=45;p(true|yes)=13,p(true|no)=35;。所以带入可以得:
py=0.2;pn=0.8
此时
pn>py,所以,不会出去打球。
连续型举例:
对于连续型的情况,数学推导过程都差不多,但是在计算各种概率时不能仅仅用样本比例来求解,试想一下,测试样本中特征的取值可能压根就没有在已知样本中出现,这时候需要预测一下特征的分布情况(如果分布未知,一般用高斯分布,高斯分布其实就是正态分布,只是叫法不一样)。
而我们需要用已知的样本数据来求解分布的未知参数(例如高斯分布模型中的参数的均值和方差),得到分布的参数之后,就可以根据输入的值来得到相应的概率。
下面是一个连续性的例子:
根据身高,体重和脚的尺寸来猜测性别。样本数据如下图所示:
现在我们有一个测试样本,{6,130,8},我们需要判断这个样本的性别。同样,我们仅仅计算分子,分母不考虑,因为是一样的。
首先求解先验概率:
p(男)=0.5,p(女)=0.5
然后计算似然概率:
以身高为例,男性身高的高斯分布为:
p(height|男)=12πσ2−−−−√exp(−(x−μ)22σ2)
其中
{μ=5.855,σ2=3.6033e−02},将
x=6带入,可以得到
p(height=6|男)=1.5789,同理可以计算得:
p(weight=130|男)=5.9881e−06,p(footsize=8|男)=1.3112e−3 p(height=6|女)=2.2346e−1,p(weight=130|女)=1.6789e−2,p(footsize=8|女)=2.8669e−04最终带入公式可以得:
{pmale=6.1984e−09,pfemale=5.3778e−04}
显然为女性的概率更大,所以猜测是女性。