朴素贝叶斯分类—关于SNS社区账号检测—关于判断概率计算公式

由于研究需要研究一下贝叶斯网络的问题,在搜素相关资料的时候,发现研究贝叶斯网络都会先认识了解一下朴素贝叶斯,网络上很经典的例子是依托:朴素贝叶斯分类实例:检测SNS社区中不真实账号 展开的,原始帖子链接:https://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html
很多帖子也对其进行了介绍,在本人学习过程中,对其产生了一些疑问,通过跟其他人的探讨后释疑,在这里记录一下。

1、先介绍一下朴素贝叶斯分类器
朴素贝叶斯分类是一种常用的分类算法,他根据研究对象的某些特征,来推断出该研究对象属于该研究领域的哪个类别。

举个例子:
我们在大街上看到一个人,猜测他属于哪个职业。这就是一种分类,你是根据什么来判断的。可能是根据这个人的穿着打扮,言行举止。

穿着打扮:胡子拉碴、头发乱七八糟,背着大的电脑包
言行举止:双眼无神(估计在想哪个bug的解决办法),黑眼圈重,头发没洗。

所以,我大概能看出这个人职业是程序员(又一段程序员自黑)。
其实穿着打扮、言行举止就是人的特征属性。我们要对某个对象分类,必须根据他的特征属性来判断。
2、贝叶斯 数学基础
要了解贝叶斯分类,必须了解贝叶斯定理,贝叶斯定理离不开条件概率
条件概率定义:事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B),读作“在B条件下A的概率”。也即:
P(A|B)=P(A∩B)/P(B)。
等价公式:
P(A∩B)=P(A|B)P(B);
P(A|B)P(B)=P(B|A)P(A)
第二个公式就是数学里著名的贝叶斯定理:P(A|B)P(B)=P(B|A)P(A)

在现实生活中,我们往往只知道P(A|B),但是不知道P(B|A),通过贝叶斯定理,我们就可以把这两者挂上钩,求出我们想知道的P(B|A)

3、SNS社区账号检测
知道了基础知识之后,我们直接用一个例子来介绍朴素贝叶斯分类,该例子来自网上张阳的算法杂货铺博文

问题描述:
已知的信息是抽样样本的统计中,真实账户记为C1 概率0.89,虚假账户记为C0,概率为0.11

判断账户真假依赖三个特征(假设彼此独立): F1 日志数量/注册天数;F2 好友数量/注册天数;F3 是否使用真实头像(真实为0,非真实为1)。F1,F2的值是连续的,我们首先将F1,F2连续值离散化,根据抽样样本统计,有
P(F1<=0.05|C0) = 0.3
P(0.05<F1<0.2|C0) = 0.5
P(F1<=0.2|C0) = 0.2
P(F1<=0.05|C1) = 0.8
P(0.05<F1<0.2|C1) = 0.1
P(F1<=0.2|C1) = 0.1

P(F2<=0.1|C0) = 0.1
P(0.1<F2<0.8|C0) = 0.7
P(F2<=0.8|C0) = 0.2
P(F2<=0.1|C1) = 0.7
P(0.1<F2<0.8|C1) = 0.2
P(F2<=0.8|C1) = 0.1

P(F3=0|C0) = 0.2
P(F3=1|C0) = 0.8
P(F3=0|C1) = 0.9
P(F3=1|C1) = 0.1

现给出一个账户特征 F1=0.1 F2=0.2 F3=0 判断该账户是真是账户还是虚假账户?

博文中:
方法是使用朴素贝叶斯分类器,计算下面这个计算式的值。
P(F1|C)P(F2|C)P(F3|C)P(C)

疑问:本人在看这个部分的时候一直是蒙的状态,因为根据本人的理解,求给定特征的条件下,账户是真实还是虚假的概率,公式应该是:P(C0 | F1,F2,F3) 和 P(C1 | F1,F2,F3) 并比较两者大小,那个大就归为那一类,但博文中的公式确是P(F1|C)P(F2|C)P(F3|C)P(C) ,F1,F2,F3是相互独立的,所以等价公式是P(F1,F2,F3,C) ,也即F1,F2,F3,C四个变量的联合概率,进一步等价公式为P(C | F1,F2,F3)/P(F1,F2,F3) ,也就是说跟本人理解的计算公式还差一个概率P(F1,F2,F3)

后来将自己的疑问跟其他人讨论了,然后进一步加深了对贝叶斯定理的理解,其实本人的疑问正是贝叶斯定理的价值所在,事实是我们可能根本无法计算P(C | F1,F2,F3)和P(F1,F2,F3) ,但我们可以计算P(F1|C)P(F2|C)P(F3|C)P(C),又因为P(F1,F2,F3) 不为零,所以其实计算P(F1|C)P(F2|C)P(F3|C)P(C)=P(F1,F2,F3,C),也就是四个变量的联合概率,意义也就等同于计算P(C | F1,F2,F3)。

在这个例子中:  
P(F1|C0) P(F2|C0) P(F3|C0) P(C0) = 0.5 x 0.7 x 0.2 x 0.89 = 0.0623
P(F1|C1) P(F2|C1) P(F3|C1) P(C1) = 0.1 x 0.2 x 0.9 x 0.11 =0.00198
虽然这个用户没有使用真实头像,但是他是真实账号的概率,比虚假账号高出30多倍,因此判断这个账号为真。

4、贝叶斯分类的进一步思考
贝叶斯定理不把某件事情发生的概率θ看做一个固定的值(比如在一个袋子里取白球的概率一直都是1/2),而看做一个随机变量,他会随着观察结果变化

贝叶斯及贝叶斯派提出了一个思考问题的新模式:

先验分布 π(θ) + 样本信息χ⟹后验分布π(θ│x)

上述思考模式意味着,新观察到的样本信息将修正人们以前对事物的认知。换言之,在得到新的样本信息之前,人们对θ的认知是先验分布π(θ),在得到新的样本信息χ后,人们对θ的认知为π(θ│x) 。

条件概率公式进行变形,可以得到如下形式:
P(A|B)=P(A) * P(B|A)/P(B)
我们把P(A)称为"先验概率",即在事件B发生之前,事件A发生的概率,在事件B发生之前,它是一个无条件分布,因为A还没有与事件B关联上,他是先验分布。
P(A|B)称为"后验概率"(Posterior probability),即在B事件发生之后,我们对A事件概率的重新评估。P(B|A)/P(B)称为"可能性函数"(Likelyhood),这是一个调整因子,使得预估概率更接近真实概率。它的分布就是后验分布
所以,条件概率可以理解成下面的式子:

  • 后验概率 = 先验概率 x 调整因子

这就是贝叶斯推断的含义。我们先预估一个"先验概率",然后加入实验结果,看这个实验到底是增强还是削弱了"先验概率",由此得到更接近事实的"后验概率"。

在这里,如果"可能性函数"P(B|A)/P(B)>1,意味着"先验概率"被增强,事件A发生的可能性变大;如果"可能性函数"=1,意味着B事件无助于判断事件A的可能性;如果"可能性函数"<1,意味着"先验概率"被削弱,事件A的可能性变小。

5、贝叶斯推断的例子
两个一模一样的碗,一号碗有30颗水果糖和10颗巧克力糖,二号碗有水果糖和巧克力糖各20颗。现在随机选择一个碗,从中摸出一颗糖,发现是水果糖。请问这颗水果糖来自一号碗的概率有多大?

我们假定,H1表示一号碗,H2表示二号碗。由于这两个碗是一样的,所以P(H1)=P(H2),也就是说,在取出水果糖之前,这两个碗被选中的概率相同。因此,P(H1)=0.5,我们把这个概率就叫做"先验概率",即没有做实验之前,来自一号碗的概率是0.5。

再假定,E表示水果糖,所以问题就变成了在已知E的情况下,来自一号碗的概率有多大,即求P(H1|E)。我们把这个概率叫做"后验概率",即在E事件发生之后,对P(H1)的修正。

根据贝叶斯定理,得到
P(H1|E)=P(H1) * P(E|H1)/P(E)

已知,P(H1)等于0.5,P(E|H1)为一号碗中取出水果糖的概率,等于0.75,那么求出P(E)就可以得到答案。根据全概率公式(不懂全概率公式的可以查找相关资料理解),
P(E)=P(E|H1) * P(H1) + P(E|H2)*P(H2)

所以,将数字代入原方程,得到
P(H1|E)=0.5* 0.75/0.625=0.6
这表明,来自一号碗的概率是0.6。也就是说,取出水果糖之后,H1事件的可能性得到了增强。

备注:1、当特征属性为连续值时,通常假定其值服从高斯分布(也称正态分布)。
2、 当P(a|y)=0,也即当某个类别下某个特征项划分没有出现时,就是产生这种现象,这会令分类器质量大大降低。为了解决这个问题,引入了拉普拉斯校准,它的思想非常简单,就是对没类别下所有划分(概率为零的)的计数加1,这样如果训练样本集数量充分大时,并不会对结果产生影响,并且解决了上述频率为零的尴尬局面。(举个例子:验证买电脑,是否和收入有关。抽样样本buys_computer=yes有1000个分组,其中0个元组income=low ,990个元组 income=medium,10个元组income=high,这些事件的概率分别是0, 0.990, 0.010. 这也就是某个P(a|y)=0,也即某个类别下某个特征项划分没有出现。需要使用拉普拉斯校准,对每个收入值对应加1个元组,分别得到如下概率:1/1003=0.001;991/1003=0.998;11/1003=0.011,这样一来既不影响概率的大小,也避免了零概率值。)

参考:
https://blog.csdn.net/tanggao1314/article/details/66478782
https://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值