首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NB算法实例应用

之前介绍了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算法,你掌握了吗?

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201223A03ZMI00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券