【机器学习】微信实例浅析贝叶斯分类算法

来源:互联网 发布:大数据时代变化 编辑:程序博客网 时间:2024/05/16 17:00

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,统称为贝叶斯分类!

所以不要以为我的微信实例能解决你的概率论问题,还是要对概率论有基本的了解。本人在大学期间对概率论是投以多余乱扯运气没事干的态度,谁会预测到毕业后我还是乖乖的拿起它一遍遍的看,因为你会发现现在世界上最牛的仿生算法都离不开概率论(上帝设计的数学)。

进正题,贝叶斯定理的描述是2个事件之间的概率问题,因为他们有前后顺序发生的关系,所以贝叶斯算法是具有预测能力的,这句话很恐怖吧!不恐怖,上次美国人通过筛选网络信息预测了下一次恐怖袭击的地点,有人甚至无聊过通过前几集中国肥皂剧预测剧本走向甚至可以生成圈行的剧本,虽然不知道具体算法,但也不远了!


基本公式:P(A|B)=P(AB)/P(B)  即在事件B发生的前提下,求出的事件A发生的概率的公式!

但在实际生活中,我们往往可以很容易求出P(A|B),P(B|A)却很难求出,但我们更想知道P(B|A),因此贝叶斯可以帮助我们求解!

(懂得略过下面的定理)

转换公式   P(B|A) = P(A|B)P(B)/P(A)

证明:由基本公式得P(AB)=P(A|B)P(B)

        所以 P(B|A)=P(AB)/P(A)=P(A|B)P(B)/P(A)


算法思想:分类原理 和 流程

思想:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就属于哪个类别


正式定义:

1、设x={a1,a2,。。。,am}为一个待分类项,而每个a为x的一个特征属性

2、有类别集合C={y1,y2,。。。,yn}

3、计算P(y1|x),P(y2|x),。。。,P(yn|x)

4、如果P(yi|x)=P(x|yi)P(yi)/P(x)最大,则x∈yk

上面都是定理的基础,不明白就回去看概率了!下面弄个微信实例给你们看看就明白了!


腾讯公司在大数据分析用户账号相关信息的时候是不希望有些用户账号参与的,因为可能会影响分析结果,那如何去掉这些账号或者筛选这些账号呢?总不能人工一个个去分析吧!这个时候就需要一定的算法去筛选这些账号。(下面称微信账号的真实性,数据都是随便取的)


第一步:微信账号的真实性我们设C=0表示不真实账号,C=1表示真实账号;


第二步:待分类项x={a1:说说数量/注册天数;a2:好友数量/注册天数;a3:是否绑定手机号}(这个特征属性的选取是最为关键,我这里只是随便举几个列子)


第三步:各个特征属性的划分

   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=1) = 9000/10000=0.90 (真账号)

                  P(C=0) = 1000/10000=0.10  (假账号)


第六步:各个类别各个特征属性划分的概率(这些数据当然要基于你的训练样本)

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.1

P(0.05<a1<0.2|C=1)  =0.1

P(a1>0.2|C=1)             =0.8


P(a2<=0.1|C=0)       =     0.7

P(0.1<a2<0.8|C=0)  =0.2

P(a2>0.8|C=0)         =0.1

P(a2<=0.1|C=1)        =0.7

P(0.1<a2<0.8|C=1)   =0.1

P(a2>0.8|C=1)         =0.2


P(a3=0IC=0)    =0.5

P(a3=1|C=0)    =0.5

P(a3=0|C=1)    =0.8

P(a3=1|C=1)    =0.2


第七步:使用上面的分类器进行账号的鉴别

比如我们拿到一个账号,这个账号无绑定手机号即a3=0;说说数量/注册天数的比率为0.1即0.05<a1<0.2;好友数量/注册天数的比率为0.2即0.1<a2<0.8;


代入上面公式有     (P(x)分母因为一样就不算了,比较分子大小)


P(C=0|x)=

P(C=0)P(x|C=0)/P(x)=

P(C=0)*P(0.05<a1<0.2|C=0)*P(0.1<a2<0.8|C=0)*P(a3=0|C=0)/P(x)=

0.1*0.5*0.2*0.5/P(x)=

0.005/P(x)


P(C=1|x)=

P(C=1)P(x|C=1)/P(x)=

P(C=1)*P(0.05<a1<0.2|C=1)*P(0.1<a2<0.8|C=1)*P(a3=0|C=1)/P(x)=

0.9*0.1*0.1*0.8/P(x)=

0.072/P(x)


可以看到,虽然该账号没有绑定手机号,但通过分类器的鉴别,更倾向于真实微信账号!也进一步证明了特征属性充分且合理性是对贝叶斯分类具有抗干扰性!