一、朴素贝叶斯的推导 : e8 A& t N, A; h/ Y, G. t朴素贝叶斯学习(naive Bayes)是一种有监督的学习,训练时不仅要提供训练样本的特征向量X,而且还需提供训练样本的实际标记Y,是一种基于贝叶斯定理和特征条件独立假设的分类方法。) W% H. @# n* h9 Y, \8 ~5 v
0 J) }) v2 w( \" s6 K% ]1. 贝叶斯定理:! ]5 \8 M/ r2 V/ W1 J k5 f
7 f! c8 w; A) L+ m6 ~' b
贝叶斯定理: $ Q( l: \# C& g& j; d) @ 0 l1 {/ r& K! q$ p4 ~) @. s. f- Y4 e+ D* {/ _3 H% \& M5 S
对于分类问题,其中 可看作 在样本的特征为X的条件下,样本的类别为Y的条件概率,这正是分类问题中我们想求的;2 L; U& y: W" p% G; a" e
+ S; v3 K4 \% N6 l$ }
而右边中的 可看作 训练集中样本类别为Y的概率 , 可看作 在训练集中特征为X时,样本类别为Y的条件概率, 可看作 训练集中特征为X的样本概率。可看出,右边的值我们是可以通过计算得到的。其中 、 分别为 X和Y的先验概率,其值与训练集的选择有一定的关系。" i* _! g, k) J6 b2 |
9 G( j2 ~: W! Q# n6 f9 E
2. 特征条件独立假设1 r) A7 C( ~3 b4 M. j4 b( S
由 1 可知,特征向量 X 的维度不一定是一维的,可能是多维的: 。 . |4 A/ L+ c8 h) O8 d& C$ g( o1 l2 i& ^$ i5 d5 x
因此 样本类别Y 的取值 是跟 样本的每一个维度取值有关的。因此可由贝叶斯定理得出下式:- x1 c3 _3 o* ~0 n! y4 [' f
) ]+ G( k4 H$ [2 \! a' Q" k2 ], a# ` q' l. M/ I# a6 t% S2 J' F% B. \ C+ i) e8 h
又因为 朴素贝叶斯 对条件概率分布进行了条件独立性的假设,即同一类别中,样本的每一维度的特征都是 独立的 。朴素贝叶斯之所以“朴素”正因为这一假设。因此可有:$ C6 Q" |# L M! w1 | ^# y
& ]- N% ^9 Y r% s n& j 5 D" E7 o8 @5 z* j1 U
! @7 }8 p4 h3 @8 V3 \ Z4 G+ H; N
于是可得: - m+ O! `& M( m4 G! t0 f @" ~/ ?$ y6 B) E! a2 q
( i- Y) x% j: f
& O p1 {; o, U, U
又由 全概率分布公式 可得:5 E: D+ [6 K- }& S5 r; P5 k
- \4 d1 C! x/ Z ; ^& f& p; m% q( [1 n" w. a" Y8 a" U( a! F7 D
因此我们想要得到的 样本类别y 为: 1 T$ A9 p0 E6 `9 z* G/ e% V 2 t# e: b& O. [7 Z6 @ - P' s4 z& R( n$ C & |( _- `) @* m即 将概率最高的那个标记 作为预测样本的标签。 $ }7 \8 u h* u5 U, x; \5 d7 k7 }8 |# @
又因对于 每一个类别标记 来说:$ B/ d( B7 C, ]) E/ l: U
2 ?, L' J s- K% [* P8 M 为一常数。: Y. o5 M6 E7 k/ i+ _
/ n; H: i6 p: I( W" r
因此 概率最高的样本类别y 可简化表示为:; e5 o) b: |7 H0 ~2 b" H
( u/ o* e, |) D2 L8 a - u6 n; b- P$ l* M6 B, T" J0 u; v8 B8 x
因此 、 的求值是关键。 4 Q2 @" e0 j% I9 G# U2 j) m S2 l+ j3 W# ^$ e2 F二、朴素贝叶斯常用模型2 a* m$ ?- J, e9 d- b( B' r2 R# ]
在不同的朴素贝叶斯模型中, 的求值也不同。下列为朴素贝叶斯常见的三种模型。$ B, ~; ?$ W9 \: w+ y* u; y
% v- r9 K- f8 i4 s Lindex X Y + j( ?& E! i0 p 1 Yes,I like it. 1 9 \% I: |1 W$ `: k5 ^, V 2 No,I dislike it. 0' q& b7 F H2 b- r+ `4 j
7 T! s$ H$ g- m2 i! [
3 No,No.dislike it. ? ) G& ~" m' U X, W3 }; V. k————————————————' A) i5 n5 p f/ f- J
- M' [, a- M: j7 {% m
若使用词袋法,且 以 训练集中的文本 为词汇表,即将训练集中的文本中出现的单词都统计出来作为词典,那么记单词的数目为 n,这代表了文本的n个维度。通过统计,可得 n = 6 。 6 p5 G, N% n: b0 y 1 W5 C; H- F7 O7 x8 O8 S; T, V( x以上三个文本在这 6 个特征维度上的表示为:$ z/ Y8 p/ [/ g: k3 n$ L9 |+ @" J
' _) i, J* Q- e |6 e; g. {1 z [backcolor=rgba(0, 0, 0, 0.05)] Yes No I like dislike it ! n- P* q6 y/ p* B/ R2 j# I4 @" S[backcolor=rgba(0, 0, 0, 0.05)]X1 1 0 1 1 0 1X2 0 1 1 0 1 1 X3 0 2 0 0 1 1下面需要计算: 1 {" f7 v5 [. a& c$ N % E; @% d5 \ d3 ?3 t4 X% s多项分布朴素贝叶斯是以文本的单词为粒度进行计算的,因此通过训练集的学习可有:4 o& E4 M9 y0 r$ z
: i: V( E8 t ]* h0 [; N
P(Y=1) = 4/8 = 1/2 、 P(Y=0) = 4/8 = 1/2 $ z) f! `" M" S c( |% A/ v" D& Y, V由Laplace平滑公式计算可得:4 J' d! f, h9 O2 S4 W" f
. k' |7 Q! n( t6 q* o! dP(No|Y=1) = (0+1)/(4+6) = 1/10% P! a8 d( K6 H( H! x& w1 e
P(dislike|Y=1) = (0+1)/(4+6) = 1/100 ^) o/ j$ t4 C) L. B
P(it|Y=1) = (1+1)/(4+6) = 1/55 M- J4 k' t, s% B
------------------------------------" ~+ k" p: Z+ _: ^* i. p( J
P(No|Y=0) = (1+1)/(4+6) = 1/5 . N: L3 n q8 K; kP(dislike|Y=0) = (1+1)/(4+6) = 1/5 , e0 p, b9 X8 t3 SP(it|Y=0) = (1+1)/(4+6) = 1/5 $ \+ g# v7 A, h. ?3 w1 a" Q4 J4 c, B
所以:可计算出X3的样本标记Y=1和Y=0的相对概率: 3 |5 e" ?4 p4 a8 V & n3 F5 c6 D. U, |P(Y=1|X3) = P(Y=1)*P(No|Y=1)*P(No|Y=1)*P(dislike|Y=1)*P(it|Y=1)/ i4 a( T6 ?! s' _+ }! w& `5 G
= 1/2*1/10*1/10*1/10*1/5 = 1/10000 / O! n) z" n/ N' Z' I, u3 L# r
------------------------------------------' D& V4 n. [2 p6 P
P(Y=0|X3) = P(Y=0)*P(No|Y=0)*P(No|Y=0)*P(dislike|Y=0)*P(it|Y=0) + g1 W: S* m# f9 d" N! | = 1/2*1/5*1/5*1/5*1/5 = 1/1250 ; S- p, p; A, @4 }$ O/ f- u6 m" X& L' Z0 Y8 g- L% c0 k
为什么 P(Y=1|X3) + P(Y=0|X3)不等于1 ? 0 n4 X% n0 D8 F3 {0 P: k. c; ^ ) L$ e9 @& `' N* L0 p( K" z8 d> 因为计算时,分母P(x1,x2,...,xn)已经被省略掉. 6 g: e, Z& {: x, t$ V 1 Q* e" K9 J G S, o, s由公式 : . \( G m0 f6 t- K- |! {, I! {* A3 {- A6 x" ]+ ]; b, Y t9 ]: K. x7 o
可知,X3的类别标记应该为 Y=0 。以上即完成了对X3的类别预测。. d5 T9 P |4 D" i- n
( {; L L$ X- s- V$ k$ d- U) }0 }词汇表的选择:当预测样本的文本中出现训练集文本从未出现的新词时,这时会出现特征维度的缺失,这时可以以 现成的单词词典 作为词汇表,当然这时样本的维度会提高很多。 5 m* @4 x6 c3 T: y/ Q X# _4 L; v ; [( m7 g/ A$ V3 ^5 V& c1 h停用词的过滤:在文本当中,可以发现一些单词进行词袋法处理后,对文本的预测来说没有太多意义,比如上述的 it 、I等一些代词。我们可以 在词汇表和预测样本中 过滤掉这些单词来简化模型的计算过程。 - X& v) s" c9 c% T( ] 2 y0 Z. t& P/ |2 n3 P7 S3. 伯努利朴素贝叶斯模型 T& j. \0 @7 e$ V在伯努利朴素贝叶斯模型中,每个特征的取值是布尔型,或以0和1表示,所以伯努利模型中,每个特征值为0或者1。 x+ R- }; L* o3 `# V3 C6 x
+ p0 g7 l( ]# ^+ j$ _5 t
在文本分类中,多项分布朴素贝叶斯是以文本的单词为粒度(以特征为粒度)进行计算的,即计算该单词特征在对应的文档中出现的次数,而伯努利朴素贝叶斯是为文本为粒度(以样本为粒度)进行计算的,即计算 存在该单词特征的文档个数。因此伯努利朴素贝叶斯模型在一定程度上忽略了同一个文档中的单词的 词频。# I, G) {" Q( y. q
% \* U# z- |4 i
其中 带有平滑的 的计算如下: & k8 A+ t* w, T! S, { # e- i! t5 I, Y9 e: r0 t( w. 1 M" Q, n v, R/ ~2 B: X6 ]8 O# f3 w: Q- h" f! U, f
其中 为 每一个 类别为 的样本的所有特征的特征值的总和。) [$ D- @- [ c3 F, q
; ~* p# @$ J, G7 i
其中 为 在类别为 的样本集中,第 i 个特征的值不为0的样本个数。 4 m- v+ f* r: d) W: j6 q2 X& v- w' T) l5 h! @5 O8 C
同样地: n 为训练集样本特征的维度, 为平滑系数 。 , d7 M* Y8 q m8 ~' I9 Y7 y # Z$ T6 n' q- i6 O* h而 = 类别为的样本的个数 / 训练集所有样本的个数。 R s8 u3 l* R5 G/ G& c; d/ ?$ ?3 ~* \ " D& l3 D# m; q2 G V! T同样,以 使用带有Laplace平滑的伯努利朴素贝叶斯进行文本分类 为例: + O9 K3 i/ t1 K* q1 M3 a% D& B: c# |+ }: D+ q) c
如下所示:已知在训练集中有三个文本及其标记,下面进行伯努利朴素贝叶斯模型预测第四个文本的标记。 ! R3 u4 p- f9 i J. z * R: n& L3 U6 l5 K9 d0 H* |4 x2 `index X Y" p& v& w4 O7 G( ^- I9 j
1 Yes,Yes,I like it. 10 a! N1 T: N- Q* s* U8 I
2 No,No,I dislike it. 0 , D: B" I2 Z" `2 m j" W 3 No,No.Dislike 0 8 H5 j# A) M. o( a ( Q+ B( F1 d, u: i% m 4 No.dislike it. ?6 @+ C8 o& S$ C+ I6 ~6 j* v
6 G9 m g. W+ S8 W6 \* Z' M/ g若使用词袋法,且 以 训练集中的文本 为词汇表,即将训练集中的文本中出现的单词都统计出来作为词典,那么记单词的数目为 n,这代表了文本的n个维度。通过统计,可得 n = 6 。 , E4 X$ {: a6 `) X ?# K4 A9 K+ ~- P, ~1 l1 W
以上四个文本在伯努利贝叶斯模型的这 6 个特征维度上的表示为(特征值为1或0):/ J, N, Q, g; Y w
2 g( V4 ~6 y/ ~7 K$ ` Yes No I like dislike it 9 U5 Q" K7 M5 J+ D& |& iX1 1 0 1 1 0 1" k# F( D( _7 X, D1 K& Q t