朴素贝叶斯分类器简述

基本原理

本文基于《机器学习实战》第四章:基于概率论的分类方法–朴素贝叶斯。

目标: 给定一条文本(text):“my dog has flea”,判断此文本是侮辱性的(Abusive)还是非侮辱性的(Non-Abusive)。

书中使用朴素贝叶斯进行分类:

01 先用已知样本训练贝叶斯分类器。

假定现在只有 c 0 c_0 c0 c 1 c_1 c1两类text,且每类text都包含 f 0 f_0 f0 f n f_n fn种特征,则很容易统计出每个类对应的各个特征的概率,即 p ( f i ∣ c 0 ) p(f_i|c_0) p(fic0)的值。下列表格以 c 0 c_0 c0类为例:

特征 f 0 f_0 f0 f 1 f_1 f1 f 2 f_2 f2 f n f_n fn
概率$p_(f_0c_0)$$p(f_1c_0)$$p(f_2

朴素贝叶斯理论假定每个特征之间是相互独立的,则:
p ( t e x t ∣ c i ) = p ( f 0 ∣ c i ) p ( f 1 ∣ c i ) . . . p ( f n ∣ c i ) i ∈ 0 , 1 { p(text|c_i)} = p(f_0|c_i)p(f_1|c_i)...p(f_n|c_i) \quad i \in{0,1} p(textci)=p(f0ci)p(f1ci)...p(fnci)i0,1

p ( c i ) = 0.5 p(c_i) = 0.5 p(ci)=0.5

02 用未知数据测试

特征 f 1 f_1 f1 f 4 f_4 f4 f 5 f_5 f5
数量111

已知需要测试的文本只包含三种特征,分别为: f 1 f_1 f1 f 4 f_4 f4 f 5 f_5 f5,且每个特征的数量都为1。

判断:该文本属于哪一类,即判断 p ( c 0 ∣ t e x t ) p(c_0|text) p(c0text) p ( c 1 ∣ t e x t ) p(c_1|text) p(c1text)的大小?
p ( c i ∣ t e x t ) = a r g m a x p ( t e x t ∣ c i ) p ( c i ) = a r g m a x p ( f 1 , f 4 , f 5 ) ∣ c i ) p ( c i ) = a r g m a x p ( f 1 ∣ c i ) p ( f 4 ∣ c i ) p ( f 5 ∣ c i ) p ( c i ) \begin{aligned} p(c_{i}|text)& = argmax \quad { p(text|c_i)p(c_i) } \\ & = argmax \quad { p(f_1,f_4,f_5)|c_i)p(c_i) } \\ & = argmax \quad {p(f_1|c_i)p(f_4|c_i)p(f_5|c_i)p(c_i)} \end{aligned} p(citext)=argmaxp(textci)p(ci)=argmaxp(f1,f4,f5)ci)p(ci)=argmaxp(f1ci)p(f4ci)p(f5ci)p(ci)
如果: p ( c 0 ∣ t e x t ) > p ( c 1 ∣ t e x t ) p(c_0|text) > p(c_1|text) p(c0text)>p(c1text),则属于 c 0 c_0 c0类;否则,属于 c 1 c_1 c1类。

贝叶斯分类需要求以下值:

1 在中 c i c_i ci类中,各个特征对应的概率,即 p ( f i ∣ c j ) p(f_i|c_j) p(ficj)

2 c i c_i ci类的概率,即 p ( c i ) p(c_i) p(ci)

基本方法

01 创建文本列表

已知一些实验文本样本(sample),并且知道这些样本对应的标签(Label),其中label中0表示侮辱性文字,1表示非侮辱性文字。

<sample, label>
text1:<“my dalmation is so cute, I love him”, 0>
text2:<“stop posting stupid worthless garbage”, 1>
text3:<“mr licks ate my steak how to stop him”, 0>
……

接下来基于上述的实验样本,创建一个不包含重复单词的文本列表,称之为VocabList,其实就是所有特征单词的集合。即这个VocabList包含上述所有文本中的单词,且不重复。

VocabList = [ ‘cute’, ‘love’, ‘help’, ‘garbage’ , ‘quit’, ‘I’, ‘problems’, ‘is’, ‘park’, ……, ‘my’]

02 构建词向量,将文本变为数字

构建词向量基于第一步的text和VocabList,为方便说明,使用下面的简单例子进行阐述。

< text > = <“my cat is so cute”, 0>(0表示非侮辱性言论)​

VocabList = [ ‘cute’, ‘love’, ‘help’, ‘garbage’ , ‘quit’, ‘I’, ‘problems’, ‘is’, ‘park’, ‘my’](为说明方便,VocabList 只设置了10个单词。)

方法:

1.先构建一个与VocabList 大小相同的向量 W = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] W= [0,0,0,0,0,0,0,0,0,0] W=[0,0,0,0,0,0,0,0,0,0]
2.从text中逐个取出单词,然后在VocabList遍历该单词,假设该单词出现在VocabList 的第5个位置,则向量W的第5个位置置1;如果没找到该单词,什么都不干。

按照上述方法,text构建的向量 W = [ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 1 ] W= [1,0,0,0,0,0,0,1,0,1] W=[1,0,0,0,0,0,0,1,0,1],而这个向量中的0或者1,就是表示某个单词的有无,同一个单词重复了n次,那么向量里面对应的值就为n。

03 基于词向量,计算概率

已知各个特征之间是相互独立的,这是朴素贝叶斯的假设。

概率计算公式变为:
W = [ f 0 , f 1 , f 2 , f 3 , f 4 , f 5 , f 6 , f 7 , f 8 , f 9 ] W= [f_0,f_1,f_2,f_3,f_4,f_5,f_6,f_7,f_8,f_9] W=[f0,f1,f2,f3,f4,f5,f6,f7,f8,f9]

p ( c i ∣ W ) = p ( W ∣ c i ) p ( c i ) p ( W ) p(c_{i}|W) = \frac { p(W|c_i)p(c_i) }{p(W)} \qquad p(ciW)=p(W)p(Wci)p(ci)

p ( c i ∣ W ) = p ( f 0 , f 1 . . . f 9 ∣ c i ) p ( c i ) p ( W ) p(c_{i}|W) = \frac { p(f_0,f_1...f_9|c_i)p(c_i) }{p(W)} \qquad p(ciW)=p(W)p(f0,f1...f9ci)p(ci)

因为各特征之间是相互独立的,所以 p ( W ∣ c i ) = p ( f 0 ∣ c i ) ( f 1 ∣ c i ) ( f 2 ∣ c i ) . . . ( f 9 ∣ c i ) p(W|c_i) = p(f_0|c_i)(f_1|c_i)(f_2|c_i)...(f_9|c_i) p(Wci)=p(f0ci)(f1ci)(f2ci)...(f9ci)。比较各 p ( c i ∣ W ) p(c_{i}|W) p(ciW)之间的大小只需要比较 p ( W ∣ c i ) p ( c i ) { p(W|c_i)p(c_i) } p(Wci)p(ci)乘积的大小,因为分母 p ( W ) p(W) p(W)都是一样的。
p ( W ∣ c i ) = p ( f 0 ∣ c i ) ( f 1 ∣ c i ) ( f 2 ∣ c i ) . . . ( f 9 ∣ c i ) p(W|c_i) = p(f_0|c_i)(f_1|c_i)(f_2|c_i)...(f_9|c_i) p(Wci)=p(f0ci)(f1ci)(f2ci)...(f9ci)

其中 p ( f 0 ∣ c i ) p(f_0|c_i) p(f0ci)的意思是 f 0 f_0 f0所对应的单词在 c i c_i ci类文档中的概率是多少?
p ( f i ∣ c 0 ) = c 0 类 中 特 征 f i 的 个 数 c 0 类 中 所 有 样 本 的 个 数 p(f_i|c_0) = \frac {c_0类中特征f_i的个数}{c_0类中所有样本的个数} \qquad p(fic0)=c0c0fi
还以下面两个词组为例:

< text > = <“my cat is so cute”, 0>(0表示非侮辱性言论)​

VocabList = [ ‘cute’, ‘love’, ‘help’, ‘garbage’ , ‘quit’, ‘I’, ‘problems’, ‘is’, ‘park’, ‘my’]

text构建的词向量是: W = [ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 1 ] W= [1,0,0,0,0,0,0,1,0,1] W=[1,0,0,0,0,0,0,1,0,1]

这个text属于非侮辱性言论,则text中的单词且又出现在VocabList 中则为 c 0 c_0 c0类,这里是’my’和’cute’。

单词cute是VocabList 中的一个特征,那么这个单词的概率是:
p ( c u t e ∣ c 0 ) = 1 2 p(cute|c_0) = \frac {1}{2} \qquad p(cutec0)=21
这里只是为了简要说明,单词量很少,显得概率不合理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值