精华内容
下载资源
问答
  • 朴素贝叶斯分类器实例
    千次阅读
    2019-11-11 16:18:22

    一、病人分类的例子

    让我从一个例子开始讲起,你会看到贝叶斯分类器很好懂,一点都不难。

    某个医院早上收了六个门诊病人,如下表。

    症状职业疾病
    打喷嚏护士感冒
    打喷嚏农夫过敏
    头痛建筑工人脑震荡
    头痛建筑工人感冒
    打喷嚏教师感冒
    头痛教师脑震荡

    现在又来了第七个病人,是一个打喷嚏的建筑工人。请问他患上感冒的概率有多大?

    根据贝叶斯定理:

     P(A|B) = P(B|A) P(A) / P(B)
    

    可得

       P(感冒|打喷嚏x建筑工人)
        = P(打喷嚏x建筑工人|感冒) x P(感冒)
        / P(打喷嚏x建筑工人)
    

    假定"打喷嚏"和"建筑工人"这两个特征是独立的,因此,上面的等式就变成了

       P(感冒|打喷嚏x建筑工人)
        = P(打喷嚏|感冒) x P(建筑工人|感冒) x P(感冒)
        / P(打喷嚏) x P(建筑工人)
    

    这是可以计算的。

      P(感冒|打喷嚏x建筑工人)
        = 0.66 x 0.33 x 0.5 / 0.5 x 0.33
        = 0.66
    

    因此,这个打喷嚏的建筑工人,有66%的概率是得了感冒。同理,可以计算这个病人患上过敏或脑震荡的概率。比较这几个概率,就可以知道他最可能得什么病。

    这就是贝叶斯分类器的基本方法:在统计资料的基础上,依据某些特征,计算各个类别的概率,从而实现分类。

    二、朴素贝叶斯分类器的公式

    假设某个体有n项特征(Feature),分别为F1、F2、…、Fn。现有m个类别(Category),分别为C1、C2、…、Cm。贝叶斯分类器就是计算出概率最大的那个分类,也就是求下面这个算式的最大值:

     P(C|F1F2...Fn)
      = P(F1F2...Fn|C)P(C) / P(F1F2...Fn)
    

    由于 P(F1F2…Fn) 对于所有的类别都是相同的,可以省略,问题就变成了求

     P(F1F2...Fn|C)P( C)
    

    的最大值。

    朴素贝叶斯分类器则是更进一步,假设所有特征都彼此独立,因此

     P(F1F2...Fn|C)P( C)
      = P(F1|C)P(F2|C) ... P(Fn|C)P( C)
    

    上式等号右边的每一项,都可以从统计资料中得到,由此就可以计算出每个类别对应的概率,从而找出最大概率的那个类。

    虽然"所有特征彼此独立"这个假设,在现实中不太可能成立,但是它可以大大简化计算,而且有研究表明对分类结果的准确性影响不大。

    更多相关内容
  • 主要介绍了Python实现的朴素贝叶斯分类器,结合具体实例形式分析了基于Python实现的朴素贝叶斯分类器相关定义与使用技巧,需要的朋友可以参考下
  • 简单朴素贝叶斯分类器的思想与算法分析 在数据仓库和数据挖掘应用中 分类是一种非常重要的方法. 分类的概念是在已有数据 的基础上学会一个分类函数或构造出一个分类模型 即我们通常所说的分类器 (Classifier) .该 ...
  • 朴素贝叶斯分类器是贝叶斯分类器中最简单,也是最常见的一种分类方法。并且,朴素贝叶斯算法仍然是流行的十大挖掘算法之一,该算法是有监督的学习算法,解决的是分类问题。该算法的优点在于简单易懂、学习效率高、...

    版权声明:本文为CSDN博主「Microstrong0305」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    原文链接:https://blog.csdn.net/program_developer/article/details/81254718
    ————————————————

                                                                       "微信公众号" 

    本文同步更新在我的微信公众号里,地址:https://mp.weixin.qq.com/s/jfQNQ0mMe7a-k3IQNL_YAg

    本文同步更新在我的知乎专栏里,地址:https://zhuanlan.zhihu.com/p/40485461

    1. 摘要

    贝叶斯分类器是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类器。而朴素贝叶斯分类器是贝叶斯分类器中最简单,也是最常见的一种分类方法。并且,朴素贝叶斯算法仍然是流行的十大挖掘算法之一,该算法是有监督的学习算法,解决的是分类问题。该算法的优点在于简单易懂、学习效率高、在某些领域的分类问题中能够与决策树、神经网络相媲美。但由于该算法以自变量之间的独立(条件特征独立)性和连续变量的正态性假设为前提,就会导致算法精度在某种程度上受影响。

    2. 贝叶斯分类器的基础

    要想学习贝叶斯算法的要领,我们需要先了解先验概率、后验概率的概念。

    先验概率:是指根据以往经验和分析得到的概率。

    举个例子:如果我们对西瓜的色泽、根蒂和纹理等特征一无所知,按照常理来说,西瓜是好瓜的概率是60%。那么这个概率P(好瓜)就被称为先验概率。

    后验概率:事情已经发生,要求这件事情发生的原因是由某个因素引起的可能性的大小。

    举个例子:假如我们了解到判断西瓜是否好瓜的一个指标是纹理。一般来说,纹理清晰的西瓜是好瓜的概率大一些,大概是75%。如果把纹理清晰当作一种结果,然后去推测好瓜的概率,那么这个概率P(好瓜|纹理清晰)就被称为后验概率。后验概率类似于条件概率。

    联合概率:设二维离散型随机变量(X,Y)所有可能取得值为,记则称 为随机变量X和Y的联合概率。计算如下:

    举个例子:在买西瓜的案例中,P(好瓜,纹理清晰)称为联合分布,它表示纹理清晰且是好瓜的概率。关于它的联合概率,满足以下乘法等式:

    其中,P(好瓜|纹理清晰)就是后验概率,表示在“纹理清晰”的条件下,是“好瓜”的概率。P(纹理清晰|好瓜)表示在“好瓜”的情况下,是“纹理清晰”的概率。

    全概率:如果事件组满足:

    全概率公式的意义在于:当直接计算P(A)较为困难时,而 

    的计算较为简单时,可以利用全概率公式进行计算P(A)。

    举个例子:上面联合概率概念买西瓜的例子中,我们要计算P(好瓜,纹理清晰)联合概率时,需要知道P(纹理清晰)的概率。那么,如何计算纹理清晰的概率呢?实际上可以分为两种情况:一种是好瓜状态下纹理清晰的概率,另一类是坏瓜状态下纹理清晰的概率。纹理清晰的概率就是这两种情况之和。因此,我们可以推导出全概率公式:

    贝叶斯定理:贝叶斯公式是建立在条件概率的基础上寻找事件发生的原因(即大事件A已经发生的条件下,分割中的小事件的概率),设 是样本空间Ω的一个划分,则对任一事件A(P(A)>0),有贝叶斯定理:

    对于每个特征x,我们想要知道样本在这个特性x下属于哪个类别,即求后验概率P(c|x)最大的类标记。这样基于贝叶斯公式,可以得到:

    好了,学习完上面的先验概率、后验概率、联合概率、全概率、贝叶斯定理后,我们来小试牛刀一下:

    西瓜的状态分为两种:好瓜与坏瓜,概率分别为0.6和0.4,并且好瓜里面纹理清晰的概率是0.8,坏瓜里面纹理清晰的概率是0.4。那么,我现在挑了一个纹理清晰的瓜,该瓜是好瓜的概率是多少?

    很明显,这是一个后验概率问题,我们可以直接给出公式:

    对公式里面出现的概率一个一个分析:

    后验概率:P(纹理清晰|好瓜)=0.8

    先验概率:P(好瓜)=0.6

    后验概率:P(纹理清晰|坏瓜)=0.4

    先验概率:P(坏瓜)=0.4

    由上面分析的数值,我们可以直接求解上式:

    这样,我们就计算得到了纹理清晰的情况下好瓜的概率是0.75。上面计算后验概率P(好瓜|纹理清晰)的公式就是利用了贝叶斯定理。

    3. 朴素贝叶斯分类器

    不难发现,基于贝叶斯公式(公式1)来估计后验概率P(c|x)的主要困难在于:类条件概率P(x|c)是所以属性上的联合概率(即x代表的是多个属性),难以从有限的训练样本直接估计而得。为了避开这个障碍,朴素贝叶斯分类器(naive Bayes classifier)采用了“属性条件独立性假设”:对已知类别,假设所有属性相互独立。换言之,假设每个属性独立地对分类结果发生影响。

    朴素贝叶斯的算法步骤:

    1. 设某样本属性集合其中 n 为属性数目,为x在第i属性上的取值。

    2. 把这个样本划分为类别集合c中的某一类,

    3.  计算后验概率:

    其中,,体现了朴素贝叶斯的精髓:每个特征相互独立。

    那么,如何计算出 呢?首先找到一个已知类别分类集合,在这个集合中统计特征属性在各个类别下的条件概率,即得到我们要计算的

    值得注意的是:上式中的分母部分,对于所有的类别来说都是一样的。因此可以省略,针对不同的 ,仅需要比较的分子部分。

    4. 如果 ,则样本在属性集 x下属于

     温馨提示:如果对上面的算法步骤有点困惑,可以先看下面的例子,然后再回过头来理解朴素贝叶斯的算法步骤,理解效果会更好一点。

    4. 朴素贝叶斯分类实例

    我们已经了解了贝叶斯定理和朴素贝叶斯算法,可能你对上面的朴素贝叶斯算法还很困惑。这一小节,我们用一个实例来熟悉朴素贝叶斯算法。

    我们还以买西瓜为实例。现在,我们有包含10个样本的数据集,这组数据集是以纹理、色泽、敲声为特征判断是好瓜还是坏瓜。数据集如下:

    其中,纹理分为:清晰和模糊,色泽分为:青绿和乌黑,敲声分为:浊响、沉闷和清脆。不同的特征值组合对应着两类:好瓜还是坏瓜。

    现在,我从超市中挑选了一个西瓜,它的纹理清晰、色泽青绿、敲声沉闷。我们可以根据样本数据集和朴素贝叶斯算法来计算该西瓜是好瓜还是坏瓜。

    (1)首先,计算好瓜的情况:

    先验概率:P(好瓜)=6/10=0.6

    条件概率:P(纹理清晰|好瓜)=4/6=2/3

    条件概率:P(色泽青绿|好瓜)=4/6=2/3

    条件概率:P(敲声沉闷|好瓜)=2/6=1/3

    计算后验概率P(好瓜|纹理清晰、色泽青绿、敲声沉闷)分子部分:

    P(好瓜)x P(纹理清晰|好瓜)x P(色泽青绿|好瓜)x P(敲声沉闷|好瓜)= 0.6 × (2 / 3) × (2 / 3) × (1 / 3) = 4 / 45。

    (2)然后,计算坏瓜的情况:

    先验概率:P(坏瓜)=4/10=0.4

    条件概率: P(纹理清晰|坏瓜) =1/4=0.25

    条件概率: P(色泽青绿|坏瓜) =1/4=0.25

    条件概率: P(敲声沉闷|坏瓜) =1/4 =0.25

    计算后验概率P(坏瓜|纹理清晰、色泽青绿、敲声沉闷)分子部分:

    P(坏瓜) × P(纹理清晰|坏瓜) × P(色泽青绿|坏瓜) × P(敲声沉闷|坏瓜) = 0.4 × 0.25 × 0.25 × 0.25 = 1 / 160。

    (3)比较好瓜、坏瓜类别中的后验概率:

    P(好瓜|纹理清晰、色泽青绿、敲声沉闷)> P(坏瓜|纹理清晰、色泽青绿、敲声沉闷),即4/45 > 1/160,所以预测该纹理清晰、色泽青绿、敲声沉闷西瓜为好瓜。

    5. 关于朴素贝叶斯容易忽略的点

    (1)由上文看出,计算各个划分的条件概率 是朴素贝叶斯分类的关键性步骤,当特征属性为离散值时,能很方便的统计训练样本中各个划分在每个类别中出现的频率即可用来估计 ,下面重点讨论特征属性是连续值的情况。

    当特征属性为连续值时,通常假定其值服从高斯分布(也称正态分布)。即:

    则:

    因此只要计算出训练样本中各个类别中此特征项划分的各均值和标准差,代入上述公式即可得到需要的估计值。均值与标准差的计算在此不再赘述。

    (2) 另一个需要讨论的问题就是当怎么办,当某个类别下某个特征项划分没有出现时,就是产生这种现象,这会令分类器质量大大降低。为了解决这个问题,我们引入Laplace校准,它的思想非常简单,就是对每个类别下所有划分的计数加1,这样如果训练样本集数量充分大时,并不会对结果产生影响,并且解决了上述频率为0的尴尬局面。

    6. 朴素贝叶斯分类器的优缺点

    (1)优点:

    1)简单易懂、学习效率高。

    2)分类过程中时空开销小。

    (2)缺点:

    算法以自变量之间的独立(条件特征独立)性和连续变量的正态性假设为前提,会导致算法精度在某种程度上受影响。

    Reference:

    【1】《机器学习》,周志华著。

    【2】通俗易懂!白话朴素贝叶斯

    【3】Machine Learning -- Naive Bayes(朴素贝叶斯)

    【4】教你明白啥是朴素贝叶斯分类器

    【5】带你理解朴素贝叶斯分类算法

    展开全文
  • 朴素贝叶斯分类算法简单实例

    千次阅读 2021-08-18 08:55:16
    而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。这篇文章我尽可能用直白的话语总结一下我们学习会上讲到的朴素贝叶斯分类算法,希望有利于他人理解。 1 分类问题综述 对于分类问题,...

    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。这篇文章我尽可能用直白的话语总结一下我们学习会上讲到的朴素贝叶斯分类算法,希望有利于他人理解。

    1  分类问题综述

     对于分类问题,其实谁都不会陌生,日常生活中我们每天都进行着分类过程。例如,当你看到一个人,你的脑子下意识判断他是学生还是社会上的人;你可能经常会走在路上对身旁的朋友说“这个人一看就很有钱”之类的话,其实这就是一种分类操作。

    既然是贝叶斯分类算法,那么分类的数学描述又是什么呢?

    从数学角度来说,分类问题可做如下定义:已知集合,确定映射规则y = f(x),使得任意有且仅有一个,使得成立。

    其中C叫做类别集合,其中每一个元素是一个类别,而I叫做项集合(特征集合),其中每一个元素是一个待分类项,f叫做分类器。分类算法的任务就是构造分类器f。

    分类算法的内容是要求给定特征,让我们得出类别,这也是所有分类问题的关键。那么如何由指定特征,得到我们最终的类别,也是我们下面要讲的,每一个不同的分类算法,对应着不同的核心思想。

    本篇文章,我会用一个具体实例,对朴素贝叶斯算法几乎所有的重要知识点进行讲解。

    2  朴素贝叶斯分类

    那么既然是朴素贝叶斯分类算法,它的核心算法又是什么呢?

    是下面这个贝叶斯公式:

    换个表达形式就会明朗很多,如下:

    我们最终求的p(类别|特征)即可!就相当于完成了我们的任务。

    3  例题分析

    下面我先给出例子问题。

    给定数据如下:

    现在给我们的问题是,如果一对男女朋友,男生想女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下女生是嫁还是不嫁?

    这是一个典型的分类问题,转为数学问题就是比较p(嫁|(不帅、性格不好、身高矮、不上进))与p(不嫁|(不帅、性格不好、身高矮、不上进))的概率,谁的概率大,我就能给出嫁或者不嫁的答案!

    这里我们联系到朴素贝叶斯公式:

    我们需要求p(嫁|(不帅、性格不好、身高矮、不上进),这是我们不知道的,但是通过朴素贝叶斯公式可以转化为好求的三个量.

    p(不帅、性格不好、身高矮、不上进|嫁)、p(不帅、性格不好、身高矮、不上进)、p(嫁)(至于为什么能求,后面会讲,那么就太好了,将待求的量转化为其它可求的值,这就相当于解决了我们的问题!)

    4  朴素贝叶斯算法的朴素一词解释

    那么这三个量是如何求得?

    是根据已知训练数据统计得来,下面详细给出该例子的求解过程。

    回忆一下我们要求的公式如下:

    那么我只要求得p(不帅、性格不好、身高矮、不上进|嫁)、p(不帅、性格不好、身高矮、不上进)、p(嫁)即可,好的,下面我分别求出这几个概率,最后一比,就得到最终结果。

    p(不帅、性格不好、身高矮、不上进|嫁) = p(不帅|嫁)*p(性格不好|嫁)*p(身高矮|嫁)*p(不上进|嫁),那么我就要分别统计后面几个概率,也就得到了左边的概率!

    等等,为什么这个成立呢?学过概率论的同学可能有感觉了,这个等式成立的条件需要特征之间相互独立吧!

    对的!这也就是为什么朴素贝叶斯分类有朴素一词的来源,朴素贝叶斯算法是假设各个特征之间相互独立,那么这个等式就成立了!

    但是为什么需要假设特征之间相互独立呢?

    1、我们这么想,假如没有这个假设,那么我们对右边这些概率的估计其实是不可做的,这么说,我们这个例子有4个特征,其中帅包括{帅,不帅},性格包括{不好,好,爆好},身高包括{高,矮,中},上进包括{不上进,上进},那么四个特征的联合概率分布总共是4维空间,总个数为2*3*3*2=36个。

    36个,计算机扫描统计还可以,但是现实生活中,往往有非常多的特征,每一个特征的取值也是非常之多,那么通过统计来估计后面概率的值,变得几乎不可做,这也是为什么需要假设特征之间独立的原因。

    2、假如我们没有假设特征之间相互独立,那么我们统计的时候,就需要在整个特征空间中去找,比如统计p(不帅、性格不好、身高矮、不上进|嫁),

    我们就需要在嫁的条件下,去找四种特征全满足分别是不帅,性格不好,身高矮,不上进的人的个数,这样的话,由于数据的稀疏性,很容易统计到0的情况。 这样是不合适的。

    根据上面俩个原因,朴素贝叶斯法对条件概率分布做了条件独立性的假设,由于这是一个较强的假设,朴素贝叶斯也由此得名!这一假设使得朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率。

    好的,上面我解释了为什么可以拆成分开连乘形式。那么下面我们就开始求解!

    我们将上面公式整理一下如下:

    下面我将一个一个的进行统计计算(在数据量很大的时候,根据中心极限定理,频率是等于概率的,这里只是一个例子,所以我就进行统计即可)。

    p(嫁)=?

    首先我们整理训练数据中,嫁的样本数如下:

    则 p(嫁) = 6/12(总样本数) = 1/2

    p(不帅|嫁)=?统计满足样本数如下:

    则p(不帅|嫁) = 3/6 = 1/2 在嫁的条件下,看不帅有多少

    p(性格不好|嫁)= ?统计满足样本数如下:

    则p(性格不好|嫁)= 1/6

    p(矮|嫁) = ?统计满足样本数如下:

    则p(矮|嫁) = 1/6

    p(不上进|嫁) = ?统计满足样本数如下:

    则p(不上进|嫁) = 1/6

    下面开始求分母,p(不帅),p(性格不好),p(矮),p(不上进)

    统计样本如下:

    不帅统计如上红色所示,占4个,那么p(不帅) = 4/12 = 1/3

    性格不好统计如上红色所示,占4个,那么p(性格不好) = 4/12 = 1/3

    身高矮统计如上红色所示,占7个,那么p(身高矮) = 7/12

    不上进统计如上红色所示,占4个,那么p(不上进) = 4/12 = 1/3

    到这里,要求p(不帅、性格不好、身高矮、不上进|嫁)的所需项全部求出来了,下面我带入进去即可,

    = (1/2*1/6*1/6*1/6*1/2)/(1/3*1/3*7/12*1/3)

    下面我们根据同样的方法来求p(不嫁|不帅,性格不好,身高矮,不上进),完全一样的做法,为了方便理解,我这里也走一遍帮助理解。首先公式如下:

    下面我也一个一个来进行统计计算,这里与上面公式中,分母是一样的,于是我们分母不需要重新统计计算!

    p(不嫁)=?根据统计计算如下(红色为满足条件):

    则p(不嫁)=6/12 = 1/2

    p(不帅|不嫁) = ?统计满足条件的样本如下(红色为满足条件):

    则p(不帅|不嫁) = 1/6

    p(性格不好|不嫁) = ?据统计计算如下(红色为满足条件):


    则p(性格不好|不嫁) =3/6 = 1/2

    p(矮|不嫁) = ?据统计计算如下(红色为满足条件):

    则p(矮|不嫁) = 6/6 = 1

    p(不上进|不嫁) = ?据统计计算如下(红色为满足条件):

    则p(不上进|不嫁) = 3/6 = 1/2

    那么根据公式:

    p (不嫁|不帅、性格不好、身高矮、不上进) = ((1/6*1/2*1*1/2)*1/2)/(1/3*1/3*7/12*1/3)

    很显然(1/6*1/2*1*1/2) > (1/2*1/6*1/6*1/6*1/2)

    于是有p (不嫁|不帅、性格不好、身高矮、不上进)>p (嫁|不帅、性格不好、身高矮、不上进)

    所以我们根据朴素贝叶斯算法可以给这个女生答案,是不嫁!!!!

    5  朴素贝叶斯分类的优缺点

    优点:

    (1) 算法逻辑简单,易于实现(算法思路很简单,只要使用贝叶斯公式转化医学即可!)

    (2)分类过程中时空开销小(假设特征相互独立,只会涉及到二维存储)

    缺点:

    理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。

    而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。

    整个例子详细的讲解了朴素贝叶斯算法的分类过程,希望对大家的理解有帮助~

    参考:李航博士《统计学习方法》

    算法杂货铺--分类算法之朴素贝叶斯分类(Naive Bayesian classification)

    致谢:德川,皓宇,继豪,施琦

    原文地址:https://mp.weixin.qq.com/s?__biz=MzI4MDYzNzg4Mw==&mid=2247483819&idx=1&sn=7f1859c0a00248a4c658fa65f846f341&chksm=ebb4397fdcc3b06933816770b928355eb9119c4c80a1148b92a42dc3c08de5098fd6f278e61e#rd

    展开全文
  • 基于朴素贝叶斯分类器的文本分类算法 (C语言.txt 两个人吵架先说对不起的人并不是 认输了并不是原谅了他只是比对方更珍惜这份感情#include <stdio.h> #include <string.h> #include <direct.h> //_getcwd, _chdir) #...
  • 朴素贝叶斯分类器 C++ 具有 TF/IDF 平滑的基于文本的朴素贝叶斯分类器 设计决策: 我的设计如下。 首先,我为每个类别实例化了 4 个 <string> 映射,以跟踪 training.txt 中的单词和单词计数。 我还实例化了 4 个 ...
  • 朴素贝叶斯分类器(MATLAB源代码)

    热门讨论 2014-09-30 18:07:20
    朴素贝叶斯分类器 MATLAB 源代码,里面含有使用实例,用的是 UCI 的 mushroom 数据集。 分类器详细介绍见: http://blog.csdn.net/yunduanmuxue/article/details/39693917
  • 朴素贝叶斯分类器(Matlab代码)

    热门讨论 2014-09-06 17:52:21
    不是matlab 官方版本,自己动手写的并含有测试模块,适合学习贝叶斯编程过程。
  • 为避开这个障碍,朴素贝叶斯分类器(Naive Bayes classfier)采用了“属性条件独立性假设”:对已知类别,假设所有属性相互独立。换句话说,每个属性独立地对分类结果产生影响。 基于属性条件独立性假设,可重写P(c...

    基于贝叶斯公式来估计后验概率P(c|x)的主要困难在于:类条件概率P(x|c)是所有属性上的联合概率,难以从有限的训练样本直接估计而得。

    为避开这个障碍,朴素贝叶斯分类器(Naive Bayes classfier)采用了“属性条件独立性假设”:对已知类别,假设所有属性相互独立。换句话说,每个属性独立地对分类结果产生影响。

    基于属性条件独立性假设,可重写P(c|x)

    P(c|x) = \frac{P(c)P(x|c)}{P(x)} = \frac{P(c)}{P(x)} \prod_{i=1}^{d} P(x_i|c)

    其中,d为属性数目,x_i为x在第i个属性上的取值。由于对所有类别来说P(x)相同,则贝叶斯判定准则为(即朴素贝叶斯分类器的表达式):

    h_{nb}(x) = arg \ \underset{c \in y}{max} P(c) \prod_{i=1}^{d} P(x_i|c)

    显而易见,朴素贝叶斯分类器的训练过程就是基于训练集D来估计类先验概率P(c),并为每个属性估计条件概率P(Xi|c)。

    D_c表示训练集D中第c类样本组成的集合,若有充足的独立同分布样本,则可容易地估计出类先验概率:

    P(c) = \frac{|D_c|}{|D|}

    对离散属性而言,令D_{c,x_i}表示D_c中在第i个属性上取值为x_i的样本组成的集合,则条件概率P(x_i|c)可估计为

    P(x_i|c) = \frac{|D_{c,x_i}|}{|D_c|}

    对连续属性可考虑概率密度函数,假定P(x_i|c) \sim N(\mu_{c,i},\sigma_{c,i}^2),其中\mu_{c,i}\sigma_{c,i}^2分别是第c类样本在第i个属性上取值的均值和方差,则有

    p(x_i|c) = \frac{1}{\sqrt{2 \pi \sigma_{c,i}^2} exp(-\frac{(x_i-\mu_{c,i})^2}{2 \sigma_{c,i}^2})}

    用西瓜数据集来实例讲解朴素贝叶斯分类器。

    给定测试样本1

    对上述进行分类,看是好瓜还是坏瓜?

    首选估计类先验概率P(c),显然有

    P(好瓜=是)=\frac{8}{17}≈0.471

    P(好瓜=否)=\frac{9}{17}≈0.529

    然后为每个属性估计条件概率P(x_i|c) 

     P(色泽=青绿|好瓜=是) = 3/8 =0.375

     P(色泽=青绿|好瓜=否) = 3/9 ≈ 0.333

    P(根蒂=蜷缩|好瓜=是) = 5/8 = 0.375

    P(根蒂=蜷缩|好瓜=否) = 3/9 ≈ 0.333

    P(敲声=浊响|好瓜=是)= 6/8 = 0.75

    P(敲声=浊响|好瓜=否) = 4/9 ≈ 0.444

    P(纹理=清晰|好瓜=是)= 7/8 = 0.875

    P(纹理=清晰|好瓜=否) = 2/9 ≈ 0.222

    P(脐部=凹陷|好瓜=是)= 5/8 = 0.625

    P(脐部=凹陷|好瓜=否) = 2/9 ≈ 0.222

    P(触感=硬滑|好瓜=是)= 6/8 = 0.75

    P(触感=硬滑|好瓜=否) = 6/9 ≈ 0.667

    P(密度=0.697|好瓜=是)【带入正态分布概率公式】≈ 1.959

    P(密度=0.697|好瓜=否)【带入正态分布概率公式】≈ 1.203

     P(含糖率=0.46|好瓜=是)【带入正态分布概率公式】≈ 0.788

    P(含糖率=0.46|好瓜=否)【带入正态分布概率公式】≈ 0.066

    P(好瓜=是)× P(色泽=青绿|好瓜=是)×P(根蒂=蜷缩|好瓜=是)×P(敲声=浊响|好瓜=是)×P(纹理=清晰|好瓜=是)×P(脐部=凹陷|好瓜=是)×P(触感=硬滑|好瓜=是)×P(密度=0.697|好瓜=是)×P(含糖率=0.46|好瓜=是)≈0.031

    P(好瓜=否)× P(色泽=青绿|好瓜=否)×P(根蒂=蜷缩|好瓜=否)×P(敲声=浊响|好瓜=否)×P(纹理=清晰|好瓜=否)×P(脐部=凹陷|好瓜=否)×P(触感=硬滑|好瓜=否)×P(密度=0.697|好瓜=否)×P(含糖率=0.46|好瓜=否) ≈6.8 ×10^{-5}

    由于0.048>6.8 \times 10^{-5},因此将朴素贝叶斯分类器将测试样本1判别为好瓜。

    需要注意一点:若某个属性值在训练集中没有与某个类同时出现过,则直接进行概率估计进行判别分类会出现问题,例如,对一个“敲声=清脆”的测试例,有P(敲声=清脆|好瓜=是)=0/8=0.因此,无论该样本的其他属性是什么,哪怕在其它属性上明显是好瓜,分类的结果都将是“好瓜=否”,这显然不合理。

    为了避免其它属性携带的信息被训练集中未出现的属性值“抹去”,在估计概率值时通常要进行平滑。常用拉普拉斯修正。

    令N表示训练集D中可能的类别数,N_i表示第i个属性可能的取值数。则P(c)和P(xi|c)可修正为:

    \hat{P}(c) = \frac{|D_c|+1}{|D|+N}

    \hat{P}(x_i|c)=\frac{|D_{c,x_i}|+1}{|D_c|+N_i}

    例如,本节的例子中,类先验概率可估计为:

    \hat{P}(好瓜=是)=9/(17+2)≈ 0.474

    \hat{P}(好瓜=否)=10/(17+2) ≈ 0.526

    \hat{P}(色泽=青绿|好瓜=是) = (3+1) / (8+3)≈ 0.364等等

    上文提到的P(敲声=清脆|好瓜=是)= (0+1)/(8+3)≈ 0.091。

     朴素贝叶斯分类器有多种使用方式;

    1. 若任务对预测速度要求高,则对给定训练集,可将贝叶斯分类器涉及的所有概率估值计算出来并存入表中,这样进行预测时,直接查表就能进行判别;

    2. 若任务数据更换频繁,则可采用懒惰学习,先不进行任何训练,待收到预测请求时再根据当前数据集进行概率估值。

    3. 若数据不断增加,则可在现有估值的基础上,仅对新增加的样本属性值所涉及的概率估值进行计数修正即可,实现增量学习

    除了朴素贝叶斯分类器外,还有半朴素贝叶斯分类器,将在下节中进行讲解。

    展开全文
  • 朴素贝叶斯分类器(附代码) 转载 原文还包含一定的理论基础我没复制过来,我只在代码基础上加了注释。注释比较基础也比较详细,我也是初学因此该注释为小白学习自用,有错误敬请指出。 import math import random ...
  • 朴素贝叶斯(二)文本分类朴素贝叶斯的一般流程用python进行文本分类准备数据:从文本中构建词向量训练算法:从词向量计算概率测试算法:朴素贝叶斯分类函数文档词袋模型 朴素贝叶斯的一般流程 (1)收集数据:任何...
  • 朴素贝叶斯分类器

    2021-10-08 20:53:04
    朴素贝叶斯分类器 首先要清楚朴素贝叶斯分类器是基于“属性条件独立性假设”,即所有属性相互独立,换句话说就是,假设每个属性独立的对分类结果产生影响。 显然,朴素贝叶斯分类器的训练过程就是基于训练集D来估计...
  • #一个在线高斯朴素贝叶斯分类器 该分类器融合了传统的高斯朴素贝叶斯和数值稳定的在线计算方差算法。 请参阅以下链接: ##时间和空间性能一次只有一个实例存储在 RAM 中。 每个维度的均值和方差也被存储。 训练的...
  • 主要为大家详细介绍了Python实现朴素贝叶斯算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 本文实例讲述了Python实现朴素贝叶斯分类器的方法。分享给大家供大家参考,具体如下: 贝叶斯定理 贝叶斯定理是通过对观测值概率分布的主观判断(即先验概率)进行修正的定理,在概率论中具有重要地位。 先验概率...
  • 机器学习—— 朴素贝叶斯分类器

    千次阅读 2022-03-30 18:52:20
    朴素贝叶斯分类器简述条件概率贝叶斯公式拉普拉斯平滑文本向量化MultinomialNB 条件概率 在进入朴素贝叶斯分类算法的学习之前,我们需要先了解一些概率论的知识,首先来看看条件概率吧。 条件概率是指某一事件A发生...
  • 主要为大家详细介绍了python实现基于朴素贝叶斯的垃圾分类算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 我根据自己理解,给出朴素贝叶斯分类算法的核心,在里面会有通俗详细的解释,希望对你有帮助~贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯...
  • Spring-Boot集成Neo4j结合Spark的朴素贝叶斯分类器实现基于电影知识图谱的智能问答系统 博客地址: 项目博客地址: 升级Spark依赖,由原来的2.3升级到2.4,GitHub官方提醒> = 1.0.0,<= 2.3.2之间的版本容易受到...
  • 贝叶斯分类算法是统计学的一种分类方法,它是一类利用概率统计知识进行分类的算法。在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美,该算法能运用到大型数据库中,而且方法...
  • 实现朴素贝叶斯分类器算法基本功能,代码有注释,还包括一个垃圾邮件过滤的实例。另外我这次用的是python2.7版,如果用python3的可能需要根据提示修改几个语法(sorted函数的参数)。
  • 基于MATLAB的柑橘果实分类图像朴素贝叶斯分类器 Naive Bayes Classifier To Classification Image Of Citrus Fruits With Matlab Code
  • 该算法用Python实现了朴素贝叶斯分类器,并用于文本分类,实现垃圾邮件的检测。
  • 贝叶斯分类器(贝叶斯决策论,极大似然估计,朴素贝叶斯分类器,半朴素贝叶斯分类器,贝叶斯网)学习笔记 一、条件概率,全概率公式,贝叶斯公式 !]...
  • 朴素贝叶斯分类(python实现)

    千次阅读 2022-03-15 14:20:00
    朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。 对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练。 对缺失数据不太敏感,算法也比较...
  • 朴素贝叶斯分类器算法通俗讲解

    千次阅读 2018-11-13 14:07:20
    首先会用到贝叶斯决策理论,说一下。贝叶斯决策理论的核心思想是:选择具有最高概率的决策。例如一个点(x, y),属于类别1的概率是p1(x, y),属于类别2的概率是p2(x, y),用贝叶斯决策理论来判断它的类别: 如果p1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,090
精华内容 4,036
关键字:

朴素贝叶斯分类器实例