分类算法 之 朴素贝叶斯
1. 概率论知识
1.1 贝叶斯定理
假设有两个事件A和B:
P(A) 为A的先验概率,它不考虑任何B事件的因素;
P(B) 也为B的先验概率,它不考虑任何A事件的影响;
P(A/B) 是B事件发生后,A事件发生的概率,此时A受到B的影响,故称为A的后验概率;
P(B/A) 是A事件发生后,B事件发生的概率,同理,称为B的后验概率。
贝叶斯定理给出:
这个贝叶斯公式的意义在于,在实际的项目中,P(A/B)往往很容易求得,而反之,P(B/A)却很难计算,而实际上,我们往往需要得到的是P(B/A)。因此,贝叶斯定理为此搭起了桥梁。
1.2 全概率公式
假设一个事件A发生的概率由一系列的因素决定:V1,V2,V3……
则事件A的概率可以用下面的全概率公式得到:
P(A) = P(A/V1)P(V1) + P(A/V2)P(V2) + P(A/V3)P(V3)………..
2. 一元特征案例
例1:假设某公司想要将已有的客户定位成忠实客户和非忠实客户,但是数据有限,只知道每个客户的性别,想要通过性别这个特征去预测今后的新客户成为忠实客户的概率。现在企业已有忠实客户400人,非忠实客户200人;在忠实客户中,有100人性别为男,300人性别为女,在非忠实客户中,有150人为男,50人为女。现在有一个新用户注册了,注册信息填写的性别为男,公司想知道这个客户将成为忠实用户的概率。
为了方便展示,将各事件用字母代替:
A1表示是忠实客户
A2表示是非忠实客户
M表示该客户为男性
F表示该客户为女性
2.1 类别与特征的说明
在这个案例中,类别变量应该是忠实客户与非忠实客户,这也是我们之后对新用户需要预测的变量;特征就是用于预测类别的因素,特征是已知的,特征取不同的值将影响分类的结果。
2.2 求解步骤
第一步:求类别的先验概率
文中已知事件A1和A2的个数,就可以求他们各自的先验概率
P(A1) = 400/600 = 2/3 = 0.67
P(A2) = 200/600 = 1/3 = 0.33
第二步:求特征的后验概率
我们也已经知道当某个类别出现的后,出现各个特征值的数量
当A1发生后,M为100
P(M/A1) = 100/400 = 1/4 = 0.25
当A1发生后,F为300
P(F/A1) = 300/400 = 3/4 = 0.75
当A2发生后,M为150
P(M/A2) = 150/200 = 3/4 = 0.75
当A2发生后,F为50
P(F/A2) = 50/200 = 1/4 = 0.25
第三步:求特征的全概率
即为当A1发生时M的概率加上A2发生时M的概率,这样就把所有因素发生时M发生的概率全部遍历了一遍,然后求和
P(M) = P(M/A1)P(A1) + P(M/A2)P(A2) = 0.25*0.67+0.75*0.33 = 0.415
同理,以下为F发生的概率和
P(F) = P(F/A1)P(A1) + P(F/A2)P(A2) = 0.75*0.67+0.25*0.67 = 0.585
第四步:根据贝叶斯定理的公式,求类别的后验概率
已知性别为男性,该人为忠实客户的概率
已知性别为男,该人为非忠实客户的概率
以上公式中的P(M/A1),P(A1),P(M)三者在上面步骤1,2,3中都已经求得,分别为类别的先验概率,特征的后验概率,特征的全概率。将它们带入贝叶斯定理中,就能快速求得我们需要的概率:当已知性别特征为男,他将成为忠实客户的概率为0.4036,成为非忠实客户的概率为0.5964,显然,非忠实客户的类别得到的概率更高,我们选择概率高的类别,贝叶斯算法认为该新客户应归于“非忠实客户”的类别。
这样,一个只有一个特征的贝叶斯算法就完成了
3. 多元特征小案例
例2:光靠性别来分类客户显然并不那么精准,通过对访问ip的分析,该公司收集到了这600个客户的所在城市,并将他们分成三类:一线城市,二线城市,三线城市。而那个新用户除了知道他是男性外,也知道了他来自一线城市上海,现在重新计算这个新用户成为忠实客户的概率。
为了方便展示,将各事件用字母代替:
A1表示是忠实客户
A2表示是非忠实客户
M表示该客户为男性
F表示该客户为女性
C1 表示一线城市
C2 表示二线城市
C3 表示三线城市
3.1 类别,特征与假设的说明
在这个案例中,类别变量仍然是忠实客户与非忠实客户;特征变量有2个:性别,城市。
当涉及两个及以上的特征时,我们假设特征之间是相互独立,不会互相影响的。如果A和B两个事件独立,那么A和B共同发生的概率是各自先验概率相乘
P(AB) = P(A)P(B)
3.2 求解步骤
步骤一:根据上题中的步骤,求解性别为男(特征1)出现时,两个类别各自的概率
P(A1/M)
P(A2/M)
步骤二:同理,根据以上步骤,求解出一线城市(特征2)出现时,两个类别各自的概率
P(A1/C1)
P(A2/C1)
步骤三:概率相乘
因为我们假设特征之间是独立的,故共同发生的概率可以是各自概率的乘积
P(A1) = P(A1/M) *P(A1/C1)
P(A2) = P(A2/M) *P(A2/C1)
至此,我们求得了两个类别在这两个特征下(男性,一线城市)发生的概率了,接下来只需比较哪个类别的概率大,就属于哪个类别。无论特征是3个还是1000个,原理都是如此。