• 机器学习——贝叶斯分类算法详解


    一、 前言

    贝叶斯分类,是机器学习中比较重要并被广泛使用的一个分类算法,它分类思想主要基于贝叶斯定理。用一句话来描述就是,如果一个事件A发生时,总是伴随事件B,那么事件B发生时,事件A发生的概率也会很大。

    贝叶斯分类一个很常见的用途是用在识别垃圾邮件上。我们给定一个学习集,程序通过学习集发现,在垃圾邮件中经常出现“免费赚钱”这个词,同时“免费赚钱”这个词又在垃圾邮件中更容易出现。那么在实际判断中,我们发现邮件中出现“免费赚钱”,就可以判定邮件是垃圾邮件。

    其实我们每个人,我们的大脑每天都会执行分类操作,而且思考的过程和贝叶斯分类很像。我们可以想象一下,我们自己是如何识别垃圾邮件的。我们识别垃圾邮件总会有一定的规则,比如邮件中含有XX关键词,邮件描述信息太离谱了,邮件的发送人不认识,邮件中包含钓鱼网站。而这些规则,我们都是通过以往的经验总结出来的。通过这些规则,我们就可以判定邮件是垃圾邮件的概率更大,还是非垃圾邮件的概率更大。

    二、 贝叶斯定理

    首先我们要知道,P(A),P(B)分别是事件A,B发生的概率,而P(A|B)是在事件A在事件B发生的前提下发生的概率,P(AB)是事件A,B同时发生的概率。那么我们的有公式:

    clip_image002[18]

    那么贝叶斯定理是:

    clip_image004[8]

    注:P(AB)=P(A)P(B)的充分必要条件是事件A和事件B相互独立。用通俗的语言讲就是,事件A是否发生不会影响到事件B发生的概率。

    我们举例说明,比如我们抽取了100封邮件,经过统计如下表:

     

    包含“免费赚钱”

    不包含“免费赚钱”

    总数

    垃圾邮件

    40

    10

    50

    非垃圾邮件

    5

    45

    50

    总数

    45

    55

     

    我们设P(B)是垃圾邮件事件的概率,P(A)是包含“免费赚钱”关键词事件的概率。

    那么clip_image006[8]表示非垃圾邮件的概率,clip_image008[8]表示不包含“免费赚钱”的概率。

    我们可以知道:

    P(B)=50/(50+50)=0.5

    P(A)=45/(45+55)=0.45

    P(A|B)=40/50=0.8(在是垃圾邮件的前提下,包含“免费赚钱”的概率)

    因此可以计算得到,如果邮件中包含“免费赚钱”关键字是垃圾邮件的概率是:

    clip_image010[8]=0.8*0.5/0.45=88.9%

    而是非垃圾邮件的概率是:

    clip_image012[8]=1-P(B|A)=11.1%

    因此,包含“免费赚钱”关键字的邮件是垃圾邮件概率是88.9%,按照贝叶斯分类的理论,我们可以把它判定成垃圾邮件。

    三、 朴素贝叶斯分类

    现实生活中的情况,通常比我们上面所举得例子复杂的多。比如我们分类的结果,可能不止有两个类别(是垃圾邮件,非垃圾邮件),就像我们在做文章分类的时候,可能的类别有社会,军事,体育,娱乐,财经,科技等很多个类别。还有我们作为分类依据的特征,通常不止1个,可能有几十个甚至有上千个。

    这是我们的表达式是这样的:

    clip_image014[8]

    P(Y=Ck)表示Y是第K个分类的概率。P(X=x)表示X的特征组合是x的概率。

    比如如果我们有100个特征,每个特征都只包含2种情况(比如是或否,包含或不包含)。那我们可能特征组合就是2的100次方。

    这时我们要计算所有特征的组合的P(X=x),就要计算2的100次方次,这个计算量就太庞大了,根本无法完成。

    因此朴素贝叶斯为了解决这个计算量庞大的问题,它假设所有的特征都是相互独立的,这样大大的简化了计算的复杂程度,但同时也会降低分类的准确率。在贝叶斯定理一节,我们已经说过,P(AB)=P(A)P(B)的充分必要条件是事件A和事件B相互独立。因此我们可以得到:

    P(X=x)=P(X1=x1)*P(X2=x2)*…*P(X100=x100)

    所以我们只需要计算出每个特征单独发生或不发生(假设每个特征只包含两种情况)的概率,然后想成根据实际情况组合相乘就好了。

    同理:P(X=x|Y=Ck)=P(X1=x1,X2=x2,…,Xn=xn|Y=Ck) (表示Y是第K类的前提下,同时发生X1=x1,..Xn=xn事件的概率)

    =clip_image016[8] (表示P(X1=x1|Y=Ck)连乘到P(Xn=xn|Y=Ck))

    下面我们先介绍一下全概率公式:

    假设A,B事件的关系如下:

    clip_image017[8]

    那么我们可以得到:clip_image018[8] clip_image019[8]

    因此根据上述公式,我们可以得到:

    clip_image021[8]

    clip_image023[8]

    () 及

    clip_image025[8]

    最终分类器可以表示为:

    clip_image027[9]

    即在X已知的情况下,计算所有Y的可能值,选择出概率最大的哪一类,就是我们分类的结果。

  • 相关阅读:
    产生随机不重复ID
    .NET 中使用 SQlite 数据库_1.新数据库的创建
    WCF 服务IIS部署 SvcUtil.exe 工具文件地址 及 生成代理类命令
    查看进程占用各字段含义
    内存溢出
    Python 正则表达式使用问题集锦
    Ninja编译过程分析
    git 命令使用集锦
    使用aapt查看当前apk的属性
    Android PowerManager电源管理(Android N )
  • 原文地址:https://www.cnblogs.com/brantyz/p/4053916.html
Copyright © 2020-2023  润新知