数据分析实战45讲(20)朴素贝叶斯分类(一)

贝叶斯原理跟我们的生活联系非常紧密。举个例子,如果你看到一个人总是花钱,那么会推断这个人多半是个有钱人。当然这也不是绝对,也就是说,当你不能准确预知一个事物本质的时候,你可以依靠和事物本质相关的事件来进行判断,如果事情发生的频次多,则证明这个属性更有可能存在。

1.贝叶斯原理

贝叶斯解决一个叫“逆向概率”问题,即尝试解答在没有太多可靠证据的情况下,怎样做出更符合数学逻辑的推测。

所谓“逆向概率”是相对“正向概率”而言。正向概率的问题很容易理解,比如我们已经知道袋子里面有N 个球,不是黑球就是白球,其中M个是黑球,那么把手伸进去摸一个球,就能知道摸出黑球的概率是多少。贝叶斯则从实际场景出发,提了一个问题:如果我们事先不知道袋子里面黑球和白球的比例,而是通过我们摸出来的球的颜色,能判断出袋子里面黑白球的比例么?

贝叶斯原理与其他统计学推断方法截然不同,它是建立在主观判断的基础上:在我们不了解所有客观事实的情况下,同样可以先估计一个值,然后根据实际结果不断进行修正。

例子:

假设有一种病,它的发病率是万分之一,即10000 人中会有1个人得病。现有一种测试可以检验一个人是否得病的准确率是99.9%,它的误报率是0.1%,那么现在的问题是,如果一个人被查出来患有该病,实际上患有的可能性有多大?想想,在10000个人中,还存在0.1%的误查的情况,也就是10个人没有患病但是被诊断成阳性。当然10000个人中,也确实存在一个患有该病的人,他有99.9%的概率被检查出来。所以你可以粗算下,患病的这个人实际上是这11个人里面的一员,即实际患病比例是1/11≈9%。

上面例子体现贝叶斯原理的几个概念:

1>先验概率:通过经验来判断事情发生的概率,比如说患有该病的发病率是万分之一,就是先验概率。再比如南方的梅雨季是6-7月,就是通过往年的气候总结出来的经验,这个时候下雨的概率就比其他时间高出很多。

2>后验概率:就是发生结果之后,推测原因的概率。比如说某人查出来了患有上面说的该疾病,那么患病的原因可能是A、B或C。患有“贝叶死”是因为原因A的概率就是后验概率。它是属于条件概率的一种。

3>条件概率:事件A 在另外一个事件B已经发生条件下的发生概率,表示为P(A|B),读作“在B 发生的条件下A 发生的概率”。比如原因A的条件下,患有上述该病的概率,就是条件概率。

4>似然函数(likelihood function):

把概率模型的训练过程理解为求参数估计的过程。

举个例子,如果一个硬币在10次抛落中正面均朝上。那么你肯定在想,这个硬币是均匀的可能性是多少?这里硬币均匀就是个参数,似然函数就是用来衡量这个模型的参数。似然在这里就是可能性的意思,它是关于统计参数的函数。

举例说明贝叶斯原理:

实际上贝叶斯原理就是求解后验概率,我们假设:A 表示事件 “测出为阳性”, 用B1 表示“患有上述疾病”, B2 表示“没有患疾病”。根据上面那道题,我们可以得到下面的信息。患有该疾病的情况下,测出为阳性的概率为P(A|B1)=99.9%,没有患病,但测出为阳性的概率为P(A|B2)=0.1%。另外患病的概率为 P(B1)=0.01%,没有患病的概率P(B2)=99.99%。

那么我们检测出来为阳性,而且是贝叶死的概率P(B1,A)=P(B1)*P(A|B1)=0.01%*99.9%=0.00999%。

这里P(B1,A)代表的是联合概率,同样我们可以求得P(B2,A)=P(B2)*P(A|B2)=99.99%*0.1%=0.09999%。

然后我们想求得是检查为阳性的情况下,患有疾病的概率,也即是P(B1|A)。

检查出是阳性,但没有患病的概率:

0.01%+0.1%均出现在了P(B1|A)和P(B2|A)的计算中作为分母。我们把它称之为论据因子,也相当于一个权值因子。

其中P(B1)、P(B2)就是先验概率,我们现在知道了观测值,就是被检测出来是阳性,来求病的概率,也就是求后验概率。

求后验概率就是贝叶斯原理要求的,基于刚才求得的P(B1|A),P(B2|A),我们可以总结出贝叶斯公式为:

通用:

2.朴素贝叶斯

它是一种简单但极为强大的预测建模算法。之所以称为朴素贝叶斯,是因为它假设每个输入变量是独立的。这是一个强硬的假设,实际情况并不一定,但是这项技术对于绝大部分的复杂问题仍然非常有效。

朴素贝叶斯模型由两种类型的概率组成:每个类别的概率P(Cj);每个属性的条件概率P(Ai|Cj)。

举例:假设我有7个棋子,其中3个是白色的,4个是黑色的。那么棋子是白色的概率就是3/7,黑色的概率就是4/7,这个就是类别概率。假设我把这7个棋子放到了两个盒子里,其中盒子A里面有2个白棋,2个黑棋;盒子B里面有1个白棋,2个黑棋。那么在盒子A中抓到白棋的概率就是1/2,抓到黑棋的概率也是1/2,这个就是条件概率,也就是在某个条件(比如在盒子A中)下的概率。

在朴素贝叶斯中,我们要统计的是属性的条件概率,也就是假设取出来的是白色的棋子,那么它属于盒子A的概率是2/3。

为了训练朴素贝叶斯模型,我们需要先给出训练数据,以及这些数据对应的分类。那么上面这两个概率,也就是类别概率和条件概率。他们都可以从给出的训练数据中计算出来。一旦计算出来,概率模型就可以使用贝叶斯原理对新数据进行预测。

3.贝叶斯原理,贝叶斯分类,朴素贝叶斯关系

贝叶斯原理是最大的概念,它解决了概率论中“逆向概率”的问题,在这个理论基础上,人们设计出了贝叶斯分类器,朴素贝叶斯分类是贝叶斯分类器中的一种,也是最简单,最常用的分类器。朴素贝叶斯之所以朴素是因为它假设属性是相互独立的,因此对实际情况有所约束,如果属性之间存在关联,分类准确率会降低。

4.朴素贝叶斯分类工作原理

我们日常生活中看到一个陌生人,要做的第一件事情就是判断TA的性别,判断性别的过程就是一个分类的过程。根据以往的经验,我们通常会从身高、体重、鞋码、头发长短、服饰、声音等角度进行判断。这里的“经验”就是一个训练好的关于性别判断的模型,其训练数据是日常中遇到的各式各样的人,以及这些人实际的性别数据。

1>离散数据案例

数据可以分为两种,一种是离散数据,另一种是连续数据。那什么是离散数据呢?离散就是不连续的意思,有明确的边界,比如整数1,2,3就是离散数据,而1到3之间的任何数,就是连续数据,它可以取在这个区间里的任何数值。

身高“高”、体重“中”,鞋码“中”,请问这个人是男还是女?

解答:先确定属性,A代表属性,A1为身高为高,A2为体重为中,A3为鞋码为中。一共有两个类别C1为男,C2为女。求在A1、A2、A3属性下,Cj的概率,用条件概率表示就是P(Cj|A1A2A3)。

因为一共有2个类别,所以我们只需要求得P(C1|A1A2A3)和P(C2|A1A2A3)的概率即可,然后比较下哪个分类的可能性大,就是哪个分类结果。在这个公式里,因为P(A1A2A3)都是固定的,我们想要寻找使得P(Cj|A1A2A3)的最大值,就等价于求P(A1A2A3|Cj)P(Cj)最大值。

我们假定Ai之间是相互独立的,那么:P(A1A2A3|Cj)=P(A1|Cj)P(A2|Cj)P(A3|Cj)。然后我们需要从Ai和Cj中计算出P(Ai|Cj)的概率,带入到上面的公式得出P(A1A2A3|Cj),最后找到使得P(A1A2A3|Cj)最大的类别Cj。

P(A1|C1)=1/2, P(A2|C1)=1/2, P(A3|C1)=1/4,P(A1|C2)=0, P(A2|C2)=1/2, P(A3|C2)=1/2,所以P(A1A2A3|C1)=1/16, P(A1A2A3|C2)=0。因为P(A1A2A3|C1)P(C1)>P(A1A2A3|C2)P(C2),所以应该是C1类别,即男性。

2>连续数据案例:

身高180、体重120,鞋码41,请问该人是男是女呢?

由于身高、体重、鞋码都是连续变量,不能采用离散变量的方法计算概率。而且由于样本太少,所以也无法分成区间计算。怎么办呢?可以假设男性和女性的身高、体重、鞋码都是正态分布,通过样本计算出均值和方差,也就是得到正态分布的密度函数。有了密度函数,就可以把值代入,算出某一点的密度函数的值。

比如:男性的身高是均值179.5、标准差为3.697的正态分布。所以男性的身高为180的概率为0.1069。计算方式可以使用excel的NORMDIST(x,mean,standard_dev,cumulative)函数(x表示正态分布中需要计算的数值,mean表示正态分布的均值,第三个是标准差,第四个是逻辑值,为true时函数结果为累积分布,为false时概率密度)。所以NORMDIST(180,179.5,3.697,0)=0.1069。同理我们可以计算得出男性体重为120的概率为0.000382324,男性鞋码为41号的概率为0.120304111。

所以:P(A1A2A3|C1)=P(A1|C1)P(A2|C1)P(A3|C1)=0.10690.0003823240.120304111=4.9169e-6

P(A1A2A3|C2)=P(A1|C2)P(A2|C2)P(A3|C2)=0.000001474890.0153541440.120306074=2.7244e-9

男大于女。

当然python中也有函数可以实现上述功能。

离散形数据可以直接得到类别的的先验概率,而连续性数据可能需要设定一定的阀值来转换成类别,或者需要知道该连续变量符合何种概率分布,再利用已知数据求得该概率分布的相关参数,再来得到类概率分布。

5.朴素贝叶斯分类工作流程

朴素贝叶斯分类常用于文本分类,尤其是对于英文等语言来说,分类效果很好。它常用于垃圾文本过滤、情感预测、推荐系统等。

第一阶段:

我们需要确定特征属性,比如上面案例中的“身高”、“体重”、“鞋码”等,并对每个特征属性进行适当划分,然后由人工对一部分数据进行分类,形成训练样本。

这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段,其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。

第二阶段:

这个阶段就是生成分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率。

输入是特征属性和训练样本,输出是分类器。

第三阶段:

这个阶段是使用分类器对新数据进行分类。输入是分类器和新数据,输出是新数据的分类结果。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值