MapReduce之基于符号数据的朴素贝叶斯分类(一)

MapReduce之基于符号数据的朴素贝叶斯分类

简介

      朴素贝叶斯(NBC)是一个基于独立假设应用的贝叶斯定理的概论分类器,NBC根据输入的一些属性将输入分配到 k k k个类{ C 1 , C 2 , … , C k C_1,C_2,\dots,C_k C1,C2,,Ck}中的某一类。NBC有很多应用,如垃圾邮件过滤和文档分类等。
      以垃圾邮件分类为例。使用NBC的垃圾邮件过滤器将把各个电子邮件分配到两个簇之一:垃圾邮件和非垃圾邮件。由于NBC是一个监督型学习方法,它有两个不同的阶段:

  • 阶段1:训练
        这个阶段使用一个有限的数据样本实例集合中的训练数据建立一个分类器(在下一个阶段使用)。这就是所谓的监督型学习方法,即从一个样本学习,然后使用这个信息来完成新数据分类。
训练数据
朴素贝叶斯分类器生成器
朴素贝叶斯分类器

           

  • 阶段2:分类
        在这个阶段中,使用训练数据和贝叶斯定理将新数据分类到阶段1中明确的某一个类别中

     分类过程
   新数据= ( X ) (X) (X)={ X 1 . X 2 , … , X n X_1.X_2,\dots,X_n X1.X2,,Xn}
   类C是{ C 1 , C 2 , C k C_1,C_2,C_k C1,C2,Ck}的一个成员

新数据X
朴素贝叶斯分类器
类C

           

符号训练数据

以如下数据为例,数据来自《Machine Learning》


示例符号训练数据

天气温度湿度风力是否可以打球(分类)
SunnyHotHighWeakNo
SunnyHotHighStrongNo
OvercastHotHighWeakYes
RainMildHighWeakYes
RainCoolNormalWeakYes
RainCoolNormalStrongNo
OvercastCoolNormalStrongYes
SunnyMildHighWeakNo
SunnyCoolNormalWeakYes
RainMildNormalWeakYes
SunnyMildNormalStrongYes
OvercastMildHighStrongYes
OvercastHotNormalWeakYes
RainMildHighStrongNo
  • ”是否可以打球“列是分类列,这里有两个类别{yes,no}
  • 每个数据集有4个属性,天气(outlook),温度(temperature),湿度(humidity),风力(wind),各个数据实例是一个 m m m维属性值向量: X = ( X 1 , X 2 , … , X m ) X=(X_1,X_2,\dots,X_m) X=(X1,X2,,Xm)
  • 训练数据的大小 为14,
  • 目标是使用这个训练数据建立一个分类系统,分类系统会根据天气条件来确定是否可以打网球
朴素贝叶斯分类器

先用简单的形式化表示来描述贝叶斯理论:令A和B是两个事件,P(A)和P(B)为A和B的概率(均不为0),则
P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A|B)=\frac{P(B|A)P(A)}{P(B)} P(AB)=P(B)P(BA)P(A)
由此得出贝叶斯理论的一般形式:令A是一个互斥事件序列{ A 1 , A 2 , … , A n A_1,A_2,\dots,A_n A1,A2,,An},其并集是整个样本空间,令E是某个事件且 P ( E ) > 0 P(E)>0 P(E)>0,对于所有的 i i i, P ( A i ) > 0 P(A_i )>0 P(Ai)>0,则:
    对于所有的 j ∈ { 1 , 2 , … , n } j\in \{1,2,\dots,n\} j{1,2,,n}
P ( A j ) = P ( A j ) P ( E ∣ A j ) ∑ i = 1 n P ( A i ) P ( E ∣ A i ) P(A_j)=\frac{P(A_j)P(E|A_j)}{\sum_{i=1}^nP(A_i)P(E|A_i)} P(Aj)=i=1nP(Ai)P(EAi)P(Aj)P(EAj)

贝叶斯理论用于分类的形式化描述如下:令 X = ( X 1 = u 1 , … , X m = u m ) X=(X_1=u_1,\dots,X_m=u_m) X=(X1=u1,,Xm=um)是一个需要分类的数据实例,令 C = { C 1 , C 2 , … , C k } C=\{C_1,C_2,\dots,C_k\} C={C1,C2,,Ck}是不同类别的一个有限集合,使用贝叶斯理论,可以预测一个给定 X X X的类别 C p r e d i c t ∈ { C 1 , C 2 , … , C k } C^{predict}\in\{C_1,C_2,\dots,C_k\} Cpredict{C1,C2,,Ck};
      C p r e d i c t = a r g m a x P ( C = c ∣ X 1 = u 1 , … , X m = u m ) C^{predict}= arg max P(C=c|X_1=u_1,\dots,X_m=u_m) Cpredict=argmaxP(C=cX1=u1,,Xm=um)
                      = a r g m a x P ( C = c , X 1 = u 1 , … , X m = u m ) P ( X 1 = u 1 , … , X m = u m ) =arg max \frac{P(C=c,X_1=u_1,\dots,X_m=u_m)}{P(X_1=u_1,\dots,X_m=u_m)} =argmaxP(X1=u1,,Xm=um)P(C=c,X1=u1,,Xm=um)
                      = a r g m a x P ( X 1 = u 1 , … , X m = u m ∣ C = c ) P ( C = c ) P ( X 1 = u 1 , … , X m = u m ) =arg max \frac{P(X_1=u_1,\dots,X_m=u_m|C=c)P(C=c)}{P(X_1=u_1,\dots,X_m=u_m)} =argmaxP(X1=u1,,Xm=um)P(X1=u1,,Xm=umC=c)P(C=c)
                      = a r g m a x P ( X 1 = u 1 , … , X m = u m ∣ C = c ) P ( C = c ) =arg max P(X_1=u_1,\dots,X_m=u_m|C=c)P(C=c) =argmaxP(X1=u1,,Xm=umC=c)P(C=c)
                      = a r g m a x P ( C = c ) ∏ j = 1 m P ( X j = u j ∣ C = c ) =arg max P(C=c)\prod_{j=1}^mP(X_j=u_j|C=c) =argmaxP(C=c)j=1mP(Xj=ujC=c)
在第三步和第四步的转换过程中,由于分母不会改变,在整个计算过程中作为一个常量,所以去掉了分母。

朴素贝叶斯示例

在这个NBC示例中,如何对以下输入数据分类
X = ( o u t l o o k = O v e r c a s t , t e m p e r a t u r e = H o t , h u m i d i t y = H i g h , w i n d = S t r o n g ) X=(outlook=Overcast,temperature=Hot,humidity=High,wind=Strong) X=(outlook=Overcast,temperature=Hot,humidity=High,wind=Strong)
X = ( X 1 = O v e r c a s t , X 2 = H o t , X 3 = H i g h , X 4 = S t r o n g ) X=(X_1=Overcast,X_2=Hot,X_3=High,X_4=Strong) X=(X1=Overcast,X2=Hot,X3=High,X4=Strong)
答案是Yes还是No,对于这个例子,有两个类:

  • C = ( C 1 , C 2 ) = ( Y e s , N o ) C=(C_1,C_2)=(Yes,No) C=(C1,C2)=(Yes,No)
  • P ( C 1 ) = P ( Y e s ) = 9 / 14 P(C_1)=P(Yes)=9/14 P(C1)=P(Yes)=9/14
  • P ( C 2 ) = P ( N o ) = 5 / 14 P(C_2)=P(No)=5/14 P(C2)=P(No)=5/14

根据贝叶斯分类,可以有:
C p r e d i c t = a r g m a x P ( C = c ) ∏ j = 1 m P ( X j = u j ∣ C = c ) = m a x { V 1 , V 2 } C^{predict}=arg maxP(C=c)\prod_{j=1}^{m}P(X_j=u_j|C=c)=max\{V_1,V_2\} Cpredict=argmaxP(C=c)j=1mP(Xj=ujC=c)=max{V1,V2}
在这里:
V 1 = { P ( C = C 1 ) P ( X 1 ∣ C = C 1 ) P ( X 2 ∣ C = C 1 ) P ( X 3 ∣ C = C 1 ) P ( X 4 ∣ C = C 1 ) } V_1=\{P(C=C1)P(X_1|C=C_1)P(X_2|C=C_1)P(X_3|C=C_1)P(X_4|C=C_1)\} V1={P(C=C1)P(X1C=C1)P(X2C=C1)P(X3C=C1)P(X4C=C1)}
V 2 = { P ( C = C 2 ) P ( X 1 ∣ C = C 2 ) P ( X 2 ∣ C = C 2 ) P ( X 3 ∣ C = C 2 ) P ( X 4 ∣ C = C 2 ) } V_2=\{P(C=C_2)P(X_1|C=C_2)P(X_2|C=C_2)P(X_3|C=C_2)P(X_4|C=C_2)\} V2={P(C=C2)P(X1C=C2)P(X2C=C2)P(X3C=C2)P(X4C=C2)}
如果 V 1 > V 2 V_1>V_2 V1>V2,则 X X X的分类为 C 1 C_1 C1=Yes,否则,分类为 C 2 C_2 C2=No

下面是 C 1 = Y e s C_1=Yes C1=Yes的条件概率计算:
P ( X 1 ∣ C = C 1 ) = P ( " o v e r c a s t " ∣ C = Y e s ) = ? P(X_1|C=C_1)=P("overcast"|C=Yes)=? P(X1C=C1)=P("overcast"C=Yes)=?

       在 p l a y T e n n i s = Y e s playTennis=Yes playTennis=Yes(打球)的9中情况中,有4中情况 o u t l o o k = “ o v e r c a s t ” outlook=“overcast” outlook=overcast,因此, P ( o u t l o o k = " o v e r c a s t " ∣ p l a y T e n n i s = Y e s ) = 4 / 9 P(outlook="overcast"|playTennis=Yes)=4/9 P(outlook="overcast"playTennis=Yes)=4/9,还可以表示为 P ( X 1 = o v e r c a s t ∣ C 1 ) = 4 / 9 P(X_1=overcast|C_1)=4/9 P(X1=overcastC1)=4/9

P ( X 2 ∣ C = C 1 ) = P ( " H o t " ∣ C = Y e s ) = ? P(X_2|C=C_1)=P("Hot"|C=Yes)=? P(X2C=C1)=P("Hot"C=Yes)=?

       在 p l a y T e n n i s = Y e s playTennis=Yes playTennis=Yes的9中情况中,有2中情况 T e m p e r a t u r e = " H o t " Temperature="Hot" Temperature="Hot",因此, P ( T e m p e r a t u r e = " H o t " ∣ p l a y T e n n i s = Y e s ) = 2 / 9 P(Temperature="Hot"|playTennis=Yes)=2/9 P(Temperature="Hot"playTennis=Yes)=2/9,还可以表示为 P ( X 2 = H o t ∣ C 1 ) = 2 / 9 P(X_2=Hot|C_1)=2/9 P(X2=HotC1)=2/9
同理可以表示为 P ( X 3 ∣ C = C 1 ) = P ( " H i g h " ∣ C = Y e s ) = 3 / 9 P(X_3|C=C_1)=P("High"|C=Yes)=3/9 P(X3C=C1)=P("High"C=Yes)=3/9 P ( X 4 ∣ C = C 1 ) = P ( " S t r o n g " ∣ C = Y e s ) = 3 / 9 P(X_4|C=C_1)=P("Strong"|C=Yes)=3/9 P(X4C=C1)=P("Strong"C=Yes)=3/9

接下来是计算 C 2 = N O C_2=NO C2=NO的条件概率:
P ( X 1 ∣ C = C 2 ) = P ( " o v e r c a s t " ∣ C = N o ) = ? P(X_1|C=C_2)=P("overcast"|C=No)=? P(X1C=C2)=P("overcast"C=No)=?

       在 p l a y T e n n i s = N o playTennis=No playTennis=No的5种情况中,有0中情况 o u t l o o k = " o v e r c a s t " outlook="overcast" outlook="overcast",因此, P ( o u t l o o k = " o v e r c a s t " ∣ p l a y T e n n i s = N o ) = 0 / 5 P(outlook="overcast"|playTennis=No)=0/5 P(outlook="overcast"playTennis=No)=0/5,同理表示为 P ( X 1 = o v e r c a s t ∣ C 2 ) = 0 / 5 P(X_1=overcast|C_2)=0/5 P(X1=overcastC2)=0/5

P ( X 2 ∣ C = C 2 ) = P ( " H o t " ∣ C = N o ) = ? P(X_2|C=C_2)=P("Hot"|C=No)=? P(X2C=C2)=P("Hot"C=No)=?

       在 p l a y T e n n i s = N o playTennis=No playTennis=No的5中情况中,有2种情况 t e m p e r a t u r e = " H o t " temperature="Hot" temperature="Hot",因此, P ( t e m p e r a t u r e = " H o t " ∣ p l a y T e n n i s = N o ) = 2 / 5 P(temperature="Hot"|playTennis=No)=2/5 P(temperature="Hot"playTennis=No)=2/5,同理可以表示为 P ( X 2 = H o t ∣ C 2 ) = 2 / 5 P(X_2=Hot|C_2)=2/5 P(X2=HotC2)=2/5

同理 P ( X 3 ∣ C = C 2 ) = P ( " H i g h " ∣ C = N o ) = 4 / 5 , P ( X 4 ∣ C = C 2 ) = P ( " S t r o n g " ∣ C = N o ) = 3 / 5 P(X_3|C=C_2)=P("High"|C=No)=4/5,P(X_4|C=C_2)=P("Strong"|C=No)=3/5 P(X3C=C2)=P("High"C=No)=4/5,P(X4C=C2)=P("Strong"C=No)=3/5

插入这些值,可以得到:
V 1 = 9 14 × 4 9 × 2 9 × 3 9 3 9 = 648 91854 V_1=\frac{9}{14}\times\frac{4}{9}\times\frac{2}{9}\times\frac{3}{9}\frac{3}{9}=\frac{648}{91854} V1=149×94×92×9393=91854648
V 2 = 5 14 0 5 2 5 4 5 3 5 = 0 V_2=\frac{5}{14}\frac{0}{5}\frac{2}{5}\frac{4}{5}\frac{3}{5}=0 V2=14550525453=0
由于 V 1 > V 2 V_1>V_2 V1>V2,则将X分类为 C 1 = Y e s C_1=Yes C1=Yes
在下一篇博客中,将讲解如何利用MapReduce去实现这个过程

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值