朴素贝叶斯分类(Naive Bayes)--检测APP中的僵尸账号
Posted 桓桓桓桓
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了朴素贝叶斯分类(Naive Bayes)--检测APP中的僵尸账号相关的知识,希望对你有一定的参考价值。
最近,接到上头的一个任务,需要检测一下我们APP中的“僵尸账号”比例,所谓的“僵尸账号”是指长时间没有操作或者相关活动的账号,我们该如何去解决这个问题呢?当我接到这个问题,我的第一个反应就是:哦,就是把我们的注册用户进行分类,一种为僵尸账号,另外一种为非僵尸账号。
有了这个认识,我们就想,需要如何分类呢?或者说用什么方法来分类呢?接下来我介绍一种简单的分类方法,朴素贝叶斯分类,朴素贝叶斯分类是一种十分简单的分类算法,叫它朴素贝叶斯分类是因为这种方法的思想真的很朴素,朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。
说到朴素贝叶斯分类,就有必要提一下贝叶斯定理,这个定理解决了现实生活里经常遇到的问题:已知某条件概率,如何得到两个事件交换后的概率,也就是在已知P(A|B)的情况下如何求得P(B|A)。这里先解释什么是条件概率:P(A|B)表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条件概率。其基本求解公式为:
贝叶斯定理之所以有用,是因为我们在生活中经常遇到这种情况:我们可以很容易直接得出P(A|B),P(B|A)则很难直接得出,但我们更关心P(B|A),贝叶斯定理就为我们打通从P(A|B)获得P(B|A)的道路。贝叶斯定理公式为:
好了,需要用到定理介绍完了,如果还有不明白的地方,可以去复习一下大学的概率论这门课程,其实概率论这门课程在机器学习、数据挖掘这些方面有着十分重要应用。下面正式开始介绍我们检测“僵尸账号”方法:
设C = 0 表示不是僵尸账号,C= 1表示僵尸账号;选取三个特征属性:
a1:发表动态数量/注册天数;
a2:好友数量/注册天数;
a3:是否使用真实头像;
在APP后台中这三项都是可以直接从数据库里得到或计算出来的。
下面给出划分:
a1:a<=0.05, 0.05<a<0.2, a>=0.2;
a2:a<=0.1, 0.1<a<0.8, a>=0.8;
a3:a=0(不是),a=1(是)。
使用公司运维人员曾经检测过的一万个账号得:
P(C=0) = 8900/10000 = 0.89,P(C= 1) = 1100/10000 = 0.11;
下面计算每个类别条件下各个特征划分的频率:
发表动态数量/注册天数
P(a1<=0.05 | C=0) = 0.3, P(0.05<a1<0.2 | C=0) = 0.5,P(a1 > 0.2 | C=0)=0.2;
P(a1<=0.05 | C=1) = 0.8, P(0.05<a1<0.2 | C=1) = 0.1,P(a1 > 0.2 | C=1)=0.1。
好友数量/注册天数
P(a2<=0.1 | C=0)= 0.1,P(0.1<a2<0.8 | C=0)= 0.7,P(a2>=0.8 | C=0)=0.2;
P(a2<=0.1 | C=1)= 0.7,P(0.1<a2<0.8 | C=1)= 0.2,P(a2>=0.8 | C=1)=0.1。
是否使用真实头像
P(a3=0 | C=0)=0.2,P(a3=1 | C=0)=0.8;
P(a3=0 | C=1)=0.9,P(a3=1 | C=1)=0.1。
下面我们使用训练得到的分类器鉴别一个账号是否为“僵尸账号”,这个账号使用非真实头像,发表动态数量与注册天数的比率为0.1,好友数量与注册天数的比率为0.2。
非僵尸账号情况特征频率:
a1:P(0.05<a1<0.2 | C=0) = 0.5;
a2:P(0.1<a2<0.8 | C=0)= 0.7;
a3:P(a3=0 | C=0)=0.2;
僵尸账号情况特征频率:
a1:P(0.05<a1<0.2 | C=1) = 0.1;
a2:P(0.1<a2<0.8 | C=1)= 0.2;
a3:P(a3=0 | C=1)=0.9;
计算得
非僵尸账号:P(C=0)P(x|C=0)
=P(C=0)P(0.05<a1<0.2 | C=0) P(0.1<a2<0.8 | C=0)P(a3=0 | C=0)
=0.89*0.5*0.7*0.2=0.0623;
僵尸账号: P(C=1)P(x|C=1)
=P(C=1)P(0.05<a1<0.2 | C=1) P(0.1<a2<0.8 | C=1)P(a3=0 | C=1)
=0.11*0.1*0.2*0.9=0.00198;
由0.0623>0.00198可推断,该账号更倾向于非僵尸账号,当特征属性更多是,朴素贝叶斯分类的抗干扰性越强。根据这种办法,我把我们APP的注册账号进行分类,从而计算僵尸账号的比例,顺利完成工作任务。
以上是关于朴素贝叶斯分类(Naive Bayes)--检测APP中的僵尸账号的主要内容,如果未能解决你的问题,请参考以下文章