朴素贝叶斯分类(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=0P(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=1P(a3=0 | C=1)

   =0.11*0.1*0.2*0.9=0.00198;

由0.0623>0.00198可推断,该账号更倾向于非僵尸账号,当特征属性更多是,朴素贝叶斯分类的抗干扰性越强。根据这种办法,我把我们APP的注册账号进行分类,从而计算僵尸账号的比例,顺利完成工作任务。






以上是关于朴素贝叶斯分类(Naive Bayes)­­­--检测APP中的僵尸账号的主要内容,如果未能解决你的问题,请参考以下文章

干货|非常通俗的朴素贝叶斯算法(Naive Bayes)

朴素贝叶斯分类器Naive Bayes

朴素贝叶斯(Naive Bayes)算法

朴素贝叶斯(naive bayes)

朴素贝叶斯(naive bayes)原理小结

大数据:Spark mlib Naive bayes朴素贝叶斯分类之多元朴素贝叶斯源码分析