One PUNCH Man——朴素贝叶斯

朴素贝叶斯算法介绍

朴素贝叶斯,之所以称为朴素,是因为其中引入了几个假设(不用担心,下文会提及)。而正因为这几个假设的引入,使得模型简单易理解,同时如果训练得当,往往能收获不错的分类效果,因此这个系列以naive bayes开头和大家见面。

因为朴素贝叶斯是贝叶斯决策理论的一部分,所以我们先快速了解一下贝叶斯决策理论。

假设有一个数据集,由两类组成(简化问题),对于每个样本的分类,我们都已经知晓。数据分布如下图:
在这里插入图片描述
现在,出现一个新的点 ( x , y ) (x,y) (x,y),其分类位置。假设我们以 p 1 ( x , y ) p_1(x,y) p1(x,y) p 2 ( x , y ) p_2(x,y) p2(x,y)分别表示数据点属于红色一类的概率和属于蓝色一类的概率。
我们提出这样的规则:
如果 p 1 ( x , y ) > p 2 ( x , y ) p_1(x,y)>p_2(x,y) p1(x,y)>p2(x,y),那么点 ( x , y ) (x,y) (x,y)属于红色方,否则属于蓝色方。
换人类的语言来描述这一规则:选择概率高的一类作为新点的分类。这就是贝叶斯决策理论的核心思想,即选择具有最高概率的决策。
现在,用条件概率的方式定义这一贝叶斯分类准则:
p ( r e d ∣ x , y ) &gt; p ( b l u e ∣ x , y ) p(red|x,y)&gt;p(blue|x,y) p(redx,y)>p(bluex,y),那么点 ( x , y ) (x,y) (x,y)属于红色方,否则如果 p ( r e d ∣ x , y ) &lt; p ( b l u e ∣ x , y ) p(red|x,y)&lt;p(blue|x,y) p(redx,y)<p(bluex,y),那么点属于 ( x , y ) (x,y) (x,y)蓝色方。

所以,如果不是二元的分类,而是多元的。
那么我们只需要计算:
m a x ( p ( c 1 ∣ x , y ) , p ( c 2 ∣ x , y ) , p ( c 3 ∣ x , y ) , . . . ) max(p(c1|x,y),p(c2|x,y),p(c3|x,y),...) max(p(c1x,y),p(c2x,y),p(c3x,y),...)

在概率论中,我们知道该公式:
p ( c ∣ x ) = p ( x ∣ c ) p ( c ) p ( x ) p(c|x)=\frac{p(x|c)p(c)}{p(x)} p(cx)=p(x)p(xc)p(c)

比如:
判断一条微信朋友圈是不是广告。
前置条件是:我们已经拥有了一个平日广大用户的朋友圈内容库,这些朋友圈当中,如果真的是在做广告的,会被“热心网友”打上“广告”的标签,我们要做的是把所有内容分成一个一个词,每个词对应一个维度,构建一个高维度空间 (别担心,这里未出现向量计算)。
当出现一条新的朋友圈ad,我们也将其分词,然后投放到朋友圈词库空间里。
P ( a d ∣ X ) = p ( X ∣ a d ) p ( a d ) p ( X ) P(ad|X)=\frac{p(X|ad)p(ad)}{p(X)} P(adX)=p(X)p(Xad)p(ad),该概率表示,已知朋友圈内容而这条朋友圈是广告的概率。这里的 X X X表示多个特征(词) x 1 , x 2 , x 3 . . . x_1,x_2,x_3... x1,x2,x3...组成的特征向量。
所以,由公式: P ( n o t − a d ∣ X ) = p ( X ∣ n o t − a d ) p ( n o t − a d ) p ( X ) P(not-ad | X) = \frac{p(X|not-ad)p(not-ad) }{p(X)} P(notadX)=p(X)p(Xnotad)p(notad)

比较上面两个概率的大小,如果 p ( a d ∣ X ) &gt; p ( n o t − a d ∣ X ) p(ad|X) &gt; p(not-ad|X) p(adX)>p(notadX),则这条朋友圈被划分为广告,反之则不是广告。

朴素贝叶斯定义

  1. X = { x 1 , x 2 , x 3 . . . } X=\{x_1,x_2,x_3...\} X={x1,x2,x3...}为一个待分类项,而每个 x i x_i xi X X X的一个特征属性。
  2. 由目标类别集合 C = { c 1 , c 2 , c 3 , . . . } C=\{c_1,c_2,c_3,...\} C={c1,c2,c3,...}
  3. 计算 m a x { P ( c 1 ∣ x ) , P ( c 2 ∣ x ) , P ( c 3 ∣ x ) . . . } max\{P(c_1|x),P(c_2|x),P(c_3|x)...\} max{P(c1x),P(c2x),P(c3x)...},最终结果就是最大概率的那个类别。

那么现在的关键就是如何计算第3步中的各个条件概率。我们可以这么做:

  1. 找到一个已知分类的待分类项集合,这个集合叫做训练样本集。
  2. 统计得到在各类别下各个特征属性的条件概率估计。即。
  3. 如果各个特征属性是条件独立的,则根据贝叶斯定理有如下推导:
    p ( c i ∣ x ) = p ( x ∣ c i ) p ( c i ) p ( x ) p(c_i|x)=\frac{p(x|c_i)p(c_i)}{p(x)} p(cix)=p(x)p(xci)p(ci)

因为分母对于所有类别为常数,因为我们只要将分子最大化皆可。又因为各特征属性是独立的(这里要引入朴素贝叶斯假设了。如果认为每个词都是独立的特征,彼此之前没有必然联系,虽然现实中,一条朋友圈内容中,相互之间的词不会是相对独立的,因为我们的自然语言是讲究上下文的),所以有:
P ( x ∣ c i ) P ( c i ) = P ( x 1 ∣ c i ) P ( x 2 ∣ c i ) . . . P ( x n ∣ c i ) ⋅ P ( c i ) = P ( c i ) ⋅ ∏ j = 1 m P ( x i ∣ c i ) P(x|c_i)P(c_i)=P(x_1|c_i)P(x_2|c_i)...P(x_n|c_i)·P(c_i)=P(c_i)·\prod_{j=1}^{m}P(x_i|c_i) P(xci)P(ci)=P(x1ci)P(x2ci)...P(xnci)P(ci)=P(ci)j=1mP(xici)

回到上一节的栗子,至此, P ( x i ∣ a d ) P(x_i|ad) P(xiad)很容易求解(每个词在朋友圈里出现的概率), P ( a d ) P(ad) P(ad)为词库中广告朋友圈占所有朋友圈(训练集)的概率。我们的问题也就迎刃而解了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值