之前介绍了NB算法的基本原理,这一篇来介绍其具体实际应用。
NB算法计算过程
首先,将上一篇的NB分类器的公式写下来:
假设给定一个数据集D
我们可以先来计算(1)式中的P(C[k])
其中,I是指示函数,之前有介绍过。k的取值范围从1到k。
接下来计算(1)式的右半部分,我们有
其中a[j]表示第j个特征的取值。
那么,对于一个新的样本z=[z1,z2,...zn],我们只需计算
就能确定新的样本z的类别。
千万不要被上面的各种公式吓到,其实计算内容很简单,下面我们就来举个例子实际体会下。
实战
假设我们有一个数据集D如下
其中,x1和x2为样本的2个特征,y为类别变量。那么现在给一个新的x=[2,A],该如何判断x的类别呢?
根据上面的公式,首先要计算先验概率
P(y=1)=6/9=2/3;P(y=-1)=3/9=1/3
然后再计算条件概率,即每个类别下的不同特征的不同取值的概率。
先来算y=1时的各个特征取值的概率,我们有
P(x1=1 | y=1)=4/6=2/3;P(x1=2 | y=1)=0;P(x1=3 | y=1)=2/6=1/3;
P(x2=A | y=1)=4/6=2/3;P(x2=B | y=1)=2/6=1/3
再来计算y=-1时,各个特征的取值概率,即
P(x1=1 | y=-1)=0;P(x1=2 | y=-1)=2/3;P(x1=3 | y=-1)=1/3;
P(x2=A | y=-1)=1/3;P(x2=B | y=-1)=2/3
拉普拉斯平滑
在上面的计算过程中,我们发现,在给定新的样本x时,其类别的概率可能为0。为了防止这种情况的发生,我们通常在计算时要给分子分母加上一个正数,具体操作如下。
首先,在计算先验概率时,新的公式为
其中,K为y的类别个数。
其次,在计算条件概率时,新的公式为
其中,a为每个特征可取值的个数。
当λ=1时,我们就把新的计算方式称为拉普拉斯平滑。
运用拉普拉斯平滑,对上面的例子重新进行计算,如下所示:
先验概率
P(y=1)=7/11;P(y=-1)=4/11
y=1时的条件概率
P(x1=1 | y=1)=5/9;P(x1=2 | y=1)=1/9;P(x1=3 | y=1)=3/9=1/3;
P(x2=A | y=1)=5/8;P(x2=B | y=1)=3/8
y=-1时的条件概率
P(x1=1 | y=-1)=1/6;P(x1=2 | y=-1)=3/6=1/2;P(x1=3 | y=-1)=2/6=1/3;
P(x2=A | y=-1)=2/5;P(x2=B | y=-1)=3/5
因此,对于新的x=[2,A],分别计算
P(y=1)P(x1=2 | y=1)P(x2=A |y=1)=35/792 (8)
P(y=-1)P(x1=2 | y=-1)P(x2=A |y=-1)=4/55 (9)
因为(9)式结果大于(8)式,因此将新的x分为y=-1类。
看起来复杂,实际却不难的NB算法,你掌握了吗?
领取专属 10元无门槛券
私享最新 技术干货