精华内容
下载资源
问答
  • 一、摘要 贝叶斯分类是一类分类算法...最后,通过实例讨论贝叶斯分类中最简单的一种:朴素贝叶斯分类。  二、分类问题综述  对于分类问题,其实谁都不会陌生,说我们每个人每天都在执行分类操作一点都不夸张,只是

      一、摘要

    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。本文作为分类算法的第一篇,将首先介绍分类问题,对分类问题进行一个正式的定义。然后,介绍贝叶斯分类算法的基础——贝叶斯定理。最后,通过实例讨论贝叶斯分类中最简单的一种:朴素贝叶斯分类。

      二、分类问题综述 

    对于分类问题,其实谁都不会陌生,说我们每个人每天都在执行分类操作一点都不夸张,只是我们没有意识到罢了。例如,当你看到一个陌生人,你的脑子下意识判断TA是男是女;你可能经常会走在路上对身旁的朋友说“这个人一看就很有钱、那边有个非主流”之类的话,其实这就是一种分类操作。

          从数学角度来说,分类问题可做如下定义:

          已知集合:,确定映射规则,使得任意有且仅有一个使得成立。(不考虑模糊数学里的模糊集情况)

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

          这里要着重强调,分类问题往往采用经验性方法构造映射规则,即一般情况下的分类问题缺少足够的信息来构造100%正确的映射规则,而是通过对经验数据的学习从而实现一定概率意义上正确的分类,因此所训练出的分类器并不是一定能将每个待分类项准确映射到其分类,分类器的质量与分类器构造方法、待分类数据的特性以及训练样本数量等诸多因素有关。

          例如,医生对病人进行诊断就是一个典型的分类过程,任何一个医生都无法直接看到病人的病情,只能观察病人表现出的症状和各种化验检测数据来推断病情,这时医生就好比一个分类器,而这个医生诊断的准确率,与他当初受到的教育方式(构造方法)、病人的症状是否突出(待分类数据的特性)以及医生的经验多少(训练样本数量)都有密切关系。

    三、贝叶斯定理

    这个定理解决了现实生活里经常遇到的问题:已知某条件概率,如何得到两个事件交换后的概率,也就是在已知P(A|B)的情况下如何求得P(B|A)。这里先解释什么是条件概率:

          表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条件概率。其基本求解公式为:

          贝叶斯定理之所以有用,是因为我们在生活中经常遇到这种情况:我们可以很容易直接得出P(A|B),P(B|A)则很难直接得出,但我们更关心P(B|A),贝叶斯定理就为我们打通从P(A|B)获得P(B|A)的道路。

          下面直接给出贝叶斯定理:    证明如下:因为  同理P(B|A)=P(AB)/P(A)

    即有P(B|A)P(A)=P(A|B)P(B)

    四、贝叶斯分类

    朴素贝叶斯分类的原理与流程

          朴素贝叶斯分类是一种十分简单的分类算法,朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。通俗来说,就好比这么个道理,你在街上看到一个黑人,我问你你猜这哥们哪里来的,你十有八九猜非洲。为什么呢?因为黑人中非洲人的比率最高,当然人家也可能是美洲人或亚洲人,但在没有其它可用信息下,我们会选择条件概率最大的类别,这就是朴素贝叶斯的思想基础。

          朴素贝叶斯分类的正式定义如下:

          1、设为一个待分类项,而每个a为x的一个特征属性。

          2、有类别集合

          3、计算

          4、如果,则

          那么现在的关键就是如何计算第3步中的各个条件概率。我们可以这么做:

          1、找到一个已知分类的待分类项集合,这个集合叫做训练样本集。

          2、统计得到在各类别下各个特征属性的条件概率估计。即

          3、如果各个特征属性是条件独立的,则根据贝叶斯定理有如下推导:

          

          因为分母对于所有类别为常数,因为我们只要将分子最大化皆可。又因为各特征属性是条件独立的,所以有:

          (可以理解为yi发生的条件下测试样本集合中的所有特征属性同时发生的概率)

    求得P(x|yi)P(yi)的最大值得yi作为x所属的类别。

    根据上述分析,朴素贝叶斯分类的流程可以由下图表示(暂时不考虑验证):

    1_2.png (623×480)

      可以看到,整个朴素贝叶斯分类分为三个阶段:

          第一阶段——准备工作阶段,这个阶段的任务是为朴素贝叶斯分类做必要的准备,主要工作是根据具体情况确定特征属性,并对每个特征属性进行适当划分,然后由人工对一部分待分类项进行分类,形成训练样本集合。这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段,其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。

          第二阶段——分类器训练阶段,这个阶段的任务就是生成分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计,并将结果记录。其输入是特征属性和训练样本,输出是分类器。这一阶段是机械性阶段,根据前面讨论的公式可以由程序自动计算完成。

          第三阶段——应用阶段。这个阶段的任务是使用分类器对待分类项进行分类,其输入是分类器和待分类项,输出是待分类项与类别的映射关系。这一阶段也是机械性阶段,由程序完成。

    五、估计类别下特征属性划分的条件概率及Laplace校准

          这一节讨论P(a|y)的估计。

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

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

          

          而

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

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

    以上内容参考算法杂货铺http://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html感谢!!


    六、朴素贝叶斯算法实例

    我们统计了14天的气象数据(指标包括outlook,temperature,humidity,windy),并已知这些天气是否打球(play)。如果给出新一天的气象指标数据:sunny,cool,high,TRUE,判断一下会不会去打球。

    table如下:

    outlook temperature humidity windy play
    sunny hot high FALSE no
    sunny hot high TRUE no
    overcast hot high FALSE yes
    rainy mild high FALSE yes
    rainy cool normal FALSE yes
    rainy cool normal TRUE no
    overcast cool normal TRUE yes
    sunny mild high FALSE no
    sunny cool normal FALSE yes
    rainy mild normal FALSE yes
    sunny mild normal TRUE yes
    overcast mild high TRUE yes
    overcast hot normal FALSE yes
    rainy mild high TRUE no


    这个问题可以用决策树的方法来求解,当然我们今天讲的是朴素贝叶斯法。这个一”打球“还是“不打球”是个两类分类问题,实际上朴素贝叶斯可以没有任何改变地解决多类分类问题。决策树也一样,它们都是有导师的分类方法。

    朴素贝叶斯模型有两个假设:所有变量对分类均是有用的,即输出依赖于所有的属性;这些变量是相互独立的,即不相关的。之所以称为“朴素”,就是因为这些假设从未被证实过。

    注意上面每项属性(或称指标)的取值都是离散的,称为“标称变量”。

    step1. 对每项指标分别统计:在不同的取值下打球和不打球的次数。

    table2如下:

    outlook temperature humidity windy play

    yes no
    yes no
    yes no
    yes no yes no
    sunny 2 3 hot 2 2 high 3 4 FALSE 6 2 9 5

    2/9 3/5
    2/9 2/5
    3/9 4/5
    6/9 2/5 9/14 5/14
    overcast 4 0 mild 4 2 normal 6 1 TRUR 3 3


    4/9 0/5
    4/9 2/5
    6/9 1/5
    3/9 3/5

    rainy 3 2 cool 3 1








    3/9 2/5
    3/9 1/5








    step2.分别计算在给定“证据”下打球和不打球的概率。

    这里我们的“证据”就是sunny,cool,high,TRUE,记为E,E1=sunny,E2=cool,E3=high,E4=TRUE。即E(sunny,cool,high,TRUE)进行分类。

    A、B相互独立时,由:

    得贝叶斯定理:

    得:

    又因为4个指标是相互独立的,所以

    我们只需要比较P(yes|E)和P(no|E)的大小,就可以决定打不打球了。所以分母P(E)实际上是不需要计算的。在计算中算出P(E)更好。

    P(yes|E)*P(E)=2/9×3/9×3/9×3/9×9/14=0.0053

    P(no|E)*P(E)=3/5×1/5×4/5×3/5×5/14=0.0206

    所以不打球的概率更大。


    七、零频问题

    注意table 2中有一个数据为0,这意味着在outlook为overcast的情况下,不打球和概率为0,即只要为overcast就一定打球,这违背了朴素贝叶斯的基本假设:输出依赖于所有的属性。

    数据平滑的方法很多,最简单最古老的是拉普拉斯估计(Laplace estimator)--即为table2中的每个计数都加1。它的一种演变是每个计数都u(0<u<1)。

    Good-Turing是平滑算法中的佼佼者,有兴趣的可以了解下。我在作基于隐马尔可夫的词性标注时发现Good-Turing的效果非常不错。
    对于任何发生r次的事件,都假设它发生了r*次:

    nr是历史数据中发生了r次的事件的个数。

    数值属性

    当属性的取值为连续的变量时,称这种属性为“数值属性“。通常我们假设数值属性的取值服从正态分布。

    outlook temperature humidity windy play

    yes no
    yes no
    yes no
    yes no yes no
    sunny 2 3
    83 85
    86 85 FALSE 6 2 9 5
    overcast 4 0
    70 80
    96 90 TRUR 3 3

    rainy 3 2
    68 65
    80 70








    64 72
    65 95








    69 71
    70 91








    75

    80









    75

    70









    72

    90









    81

    75





    sunny 2/9 3/5 mean value 73 74.6 mean value 79.1 86.2 FALSE 6/9 2/5 9/15 5/14
    overcast 4/9 0/5 deviation 6.2 7.9 deviation 10.2 9.7 TRUR 3/9 3/5

    正态分布的概率密度函数为:

    现在已知天气为:outlook=overcast,temperature=66,humidity=90,windy=TRUE。问是否打球?

    f(温度=66|yes)=0.0340

    f(湿度=90|yes)=0.0221

    yes的似然=2/9×0.0340×0.0221×3/9×9/14=0.000036

    no的似然=3/5×0.0291×0.0380×3/5×9/14=0.000136

    不打球的概率更大一些。

    用于文本分类

    一、基本公式

    贝叶斯文本分类就是基于这个公式,利用先验概率来得到文本的分类。

    naive-bayes-2
    其中P(Ci) 为第i个文本类别出现的概率, P(w1,w2…wn|Ci)为文本类别为Ci时出现特征向量(w1,w2…wn)的概率,P(w1,w2…wn)为特征向量出现的概率。一般的假设特征——词,在文本中出现的概率是独立的,也就是说词和词之间是不相关的(虽然这个不一定成立,但是为了简化计算往往又不得不这么做),那么这时候的联合概率就可以表示为乘积的形式,如下:
    naive-bayes-3
    对于特定的训练集合来说,上式中P(w1)P(w2)…P(wn)是一个固定的常数,那么在进行分类计算的时候可以省略掉这个分母的计算,如是得到: naive-bayes-4

    二.朴素贝叶斯的两种模型

    朴素贝叶斯分类器是一种有监督学习,常见有两种模型。
    1.多项式模型(multinomial model)即为词频型。
    2.伯努利模型(Bernoulli model)即文档型。

    二者的计算粒度不一样,多项式模型以单词为粒度伯努利模型以文件为粒度,因此二者的先验概率和类条件概率的计算方法都不同。计算后验概率时,对于一个文档d,多项式模型中,只有在d中出现过的单词,才会参与后验概率计算,伯努利模型中,没有在d中出现,但是在全局单词表中出现的单词,也会参与计算,不过是作为“反方”参与的。

    多项式模型和贝努利模型的关键区别:

    1.贝努利模型是以“文档”为统计单位,即统计某个特征词出现在多少个文档当中 (最大似然方法估计条件概率p(x(i)|c)的时候),当某个特征词在某一个文档中出现多次的时候,贝努利模型忽略了出现的次数,只算作一次。而多项式模型是以“词”为统计单位,当某个特征词在某个文档中多次出现的时候,与贝努利模型相反,它算作多次——这个更符合做NLP人的想法。

    2.对特征向量中0值维度的处理。对于某个新的输入样本,当某个维度的取值是0的时候(也就是该特征词不出现在输入样本中),贝努利模型是要计算 p( x(i,0) | c(0)) 的值。而多项式模型直接忽略这样的特征,即只用 p( x(i,1) | c(0) ) 的值来进行计算,从而区分各个类别。

    注意:朴素贝叶斯假设事物属性之间相互条件独立为前提。

    三.多项式模型

    1.基本原理

    在多项式模型中, 设某文档d=(t1,t2,…,tk),tk是该文档中出现过的单词,允许重复,则

    先验概率P(c)= 类c下单词总数/整个训练样本的单词总数

    类条件概率P(tk|c)=(类c下单词tk在各个文档中出现过的次数之和+1)/(类c下单词总数+|V|)

    V是训练样本的单词表(即抽取单词,单词出现多次,只算一个),|V|则表示训练样本包含多少种单词。 P(tk|c)可以看作是单词tk在证明d属于类c上提供了多大的证据,而P(c)则可以认为是类别c在整体上占多大比例(有多大可能性)。

    2.举例

    给定一组分好类的文本训练数据,如下:
    naive-bayes-5
    给定一个新样本Chinese Chinese Chinese Tokyo Japan,对其进行分类。该文本用属性向量表示为d=(Chinese, Chinese, Chinese, Tokyo, Japan),类别集合为Y={yes, no}。

    类yes下总共有8个单词(5个Chinese+1个Beijing+1个Shanghai+1个Macao),类no下总共有3个单词(1个Tokyo+1个Japan+1个Chinese),训练样本单词总数为11,因此P(yes)=8/11, P(no)=3/11。类条件概率计算如下:

    //|V|表示训练样本包含多少种单词,即为:Chinese Beijing Shanghai Macao Tokyo Japan 共6个
    P(Chinese | yes)=(5+1)/(8+6)=6/14=3/7
     
    P(Japan | yes)=P(Tokyo | yes)= (0+1)/(8+6)=1/14
     
    P(Chinese|no)=(1+1)/(3+6)=2/9
     
    P(Japan|no)=P(Tokyo| no) =(1+1)/(3+6)=2/9

    分母中的8,是指yes类别下所有词出现的总数,也即训练样本的单词总数,6是指训练样本有Chinese,Beijing,Shanghai, Macao, Tokyo, Japan 共6种单词,3是指no类下共有3个单词。

    有了以上类条件概率,开始计算后验概率:

    P(yes | d)=P(Chinese|yes)×P(Japan|yes)×P(Tokyo|yes)*P(c)=(3/7)3次×1/14×1/14×8/11=108/184877≈0.00058417

     P(no | d)= P(Chinese|no)×P(Japan|no)×P(Tokyo|no)*P(c)=(2/9)3次×2/9×2/9×3/11=32/216513≈0.00014780

    比较大小,即可知道这个文档属于类别china。

    四.伯努利模型

    1.基本原理
    以文件为粒度,或者说是采用二项分布模型,伯努利实验即N次独立重复随机实验,只考虑事件发生/不发生,所以每个单词的表示变量是布尔型的类条件概率。

    P(c)= 类c下文件总数/整个训练样本的文件总数

    P(tk|c)=(类c下包含单词tk的文件数+1)/(类c下文件总数+2)

    备注:P(tk|c) 中的(类c下文件总数+2) 不是网上流传的(类c下单词总数+2)。

    2.举例

    继续以前面的例子为例,使用伯努利模型计算文本分类。d=(Chinese, Chinese, Chinese, Tokyo, Japan)

    类yes下总共有3个文件,类no下有1个文件,训练样本文件总数为4,因此P(yes)=3/4, P(Chinese | yes)=(3+1)/(3+2)=4/5,条件概率如下:

    //分子:Japan 在yes分类中出现的文件数为0 即0+1,分母:yes分类下文件总数为3 ,即3+2.
    //Tokyo 同理 
    P(Japan | yes)=P(Tokyo | yes)=(0+1)/(3+2)=1/5
    P(Chinese | yes)=(3+1)/(3+2)=4/5
    //分子:Beijing 在yes分类中出现的文件数为1 即1+1,分母:yes分类下文件总数为3 ,即3+2.
    //Macao,Shanghai 同理
    P(Beijing | yes)= P(Macao|yes)= P(Shanghai |yes)=(1+1)/(3+2)=2/5
     
    P(Chinese|no)=(1+1)/(1+2)=2/3
     
    P(Japan|no)=P(Tokyo| no) =(1+1)/(1+2)=2/3
     
    P(Beijing| no)= P(Macao| no)= P(Shanghai | no)=(0+1)/(1+2)=1/3

    有了以上类条件概率,开始计算后验概率,

    P(yes | d)=P(yes)×P(Chinese|yes) ×P(Japan|yes) ×P(Tokyo|yes)×(1-P(Beijing|yes)) ×(1-P(Shanghai|yes))×(1-P(Macao|yes))
    <P(yes | d)=3/4×4/5×1/5×1/5×(1-2/5) ×(1-2/5)×(1-2/5)=81/15625≈0.005
    P(no | d)= 1/4×2/3×2/3×2/3×(1-1/3)×(1-1/3)×(1-1/3)=16/729≈0.022

    因此,这个文档不属于类别china。



    结束语

        虽然后续还会提到其它分类算法,不过这里我想先提一下如何评价分类器的质量

    首先要定义,分类器的正确率指分类器正确分类的项目占所有被分类项目的比率。

    通常使用回归测试来评估分类器的准确率,最简单的方法是用构造完成的分类器对训练数据进行分类,然后根据结果给出正确率评估。但这不是一个好方法,因为使用训练数据作为检测数据有可能因为过分拟合而导致结果过于乐观,所以一种更好的方法是在构造初期将训练数据一分为二,用一部分构造分类器,然后用另一部分检测分类器的准确率。

    实践已多次证明,朴素贝叶斯在许多数据集上不逊于甚至优于一些更复杂的分类方法。这里的原则是:优先尝试简单的方法。

    机器学习的研究者尝试用更复杂的学习模型来得到良好的结果,许多年后发现简单的方法仍可取得同样甚至更好的结果。

    此部分类容感谢http://www.cnblogs.com/zhangchaoyang/articles/2586402.html感谢!!

    原文来自:博客园(华夏35度)http://www.cnblogs.com/zhangchaoyang 作者:Orisun

    展开全文
  • 其实我第一次听到朴素贝叶斯分类器时,又看到一大堆的公式,下意识地以为很难。随着后来阅读了一些文献,便觉得不那么难了。可是随着了解的深入,又发现我以为的并不总是我以为的,一些细节处还是没想明白。在这里对...

    其实我第一次听到朴素贝叶斯分类器时,又看到一大堆的公式,下意识地以为很难。随着后来阅读了一些文献,便觉得不那么难了。可是随着了解的深入,又发现我以为的并不总是我以为的,一些细节处还是没想明白。在这里对朴素贝叶斯作一个总结。

    首先,亮一下贝叶斯定理:
    P(c|x) = P(x|c)P(c)/P(x)

    代入一个具体的分类问题中,c代表类别,x代表特征。那么现在的情况是,给你一堆训练数据,训练一个朴素贝叶斯分类器,之后给你一个新的无标记数据,推测一下该划分到哪个类别。

    其实这个问题想想很简单,我们鞍部就班地解出在不同的类别下P(x|c),P(c),P(x)就好啦。
    首先P(x)对于每个类别来说都一样,所以不用考虑。
    P(c)是先验概率,我们在训练数据中看看每个类占的比例有多少,很容易得出来。
    关键是怎么才能求P(x|c)即类条件概率呢?
    如果我们现在有N个二值特征,那么x便存在N^2种组合情况,如果我们的样本数据比较小,很可能没有覆盖到某些情况,这就出现了两个问题:维数灾难和数据稀疏。那应该咋办喵?
    注意我们的分类器名字中有朴素二字,其中的涵义就是假设特征之间是相互独立的。比如我们有ABC三个特征,那么就有P(ABC|c) = P(A|c)P(B|c)P(C|c), 如此一来,我们可以根据训练集求单个特征的类条件概率就可以啦。

    在这里我们顺便提一提极大似然估计。以上的类条件概率估计就用到了这个思想。这种策略是先假定某种确定的概率分布形式,再基于训练样本对概率分布的参数进行估计。例如,在连续属性的情形下,假设此属性服从一个高斯分布,那我们就可以根据训练样本求得均值和方差的极大似然估计。这样我们便可以估计某个新的属性值的类条件概率。

    最后,为了避免某个乘子为零而抹去其它乘子的贡献值,可以使用拉普拉斯平滑法避免分子为零。

    展开全文
  • 朴素贝叶斯及经典实例讲解

    千次阅读 2019-11-12 08:34:00
    https://www.cnblogs.com/huangyc/p/10327209.html朴素贝叶斯法(Naive Bayes)是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后...

    640?wx_fmt=jpeg

    原文连接: 

    https://www.cnblogs.com/lliuye/p/9178090.html https://www.cnblogs.com/huangyc/p/10327209.html

    朴素贝叶斯法(Naive Bayes)是基于贝叶斯定理特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入 x ,利用贝叶斯定理求出后验概率最大的输出 y ,即为对应的类别。

    在夏季,某公园男性穿凉鞋的概率为 1/2 ,女性穿凉鞋的概率为 2/3 ,并且该公园中男女比例通常为 2:1 ,问题:若你在公园中随机遇到一个穿凉鞋的人,请问他的性别为男性或女性的概率分别为多少?

    先验概率

    我们使用以上例子来解释一下什么是先验概率。根据以上例子我们设定:假设某公园中一个人是男性为事件 Y=ymen ,是女性则是 Y=ywomen ;一个人穿凉鞋为事件 X=x1 ,未穿凉鞋为事件 X=x0 。而一个人的性别与是否穿凉鞋这两个事件之间是相互独立的。于是我们可以看到该例子中存在四个先验概率:

    640?wx_fmt=png

    由于男女生的比例是2:1,那么P(Y=ymen)自然等于2/3,P(Y=ywomen)同理。而先验概率 P(Y=ymen)与P(Y=ywomen) 并不能直接得出,需要根据全概率公式来求解。在学习全概率公式之前,我们先了解一下条件概率。

    条件概率

    条件概率是指在事件 Y=y 已经发生的条件下,事件 X=x 发生的概率。条件概率可表示为:P(X=x|Y=y) 。而条件概率计算公式为:

    640?wx_fmt=png

    其中 P(X=x,Y=y) 是联合概率,也就是两个事件共同发生的概率。而 P(Y=y)以及P(X=x) 是先验概率。我们用例子来说明一下就是:“某公园男性穿凉鞋的概率为 1/2 ”,也就是说“是男性的前提下,穿凉鞋的概率是 1/2 ”,此概率为条件概率,即 P(X=x1|Y=ymen)=1/2 。同理“女性穿凉鞋的概率为 2/3 ” 为条件概率 P(X=x1|Y=ywomen)=1/2 。

    全概率公式是指:如果事件 Y=y1,Y=y2,...,Y=yn 可构成一个完备事件组,即它们两两互不相容,其和为全集。则对于事件 X=x 有:

    640?wx_fmt=png

    因此对于上面的例子,我们可以根据全概率公式求得:

    640?wx_fmt=png

    也就是说不考虑性别的情况下,公园中穿脱鞋的概率为 5/9 ,不穿拖鞋的概率为 4/9 。

    后验概率

    后验概率是指,某事件 X=x 已经发生,那么该事件是因为事件 Y=y 的而发生的概率。也就是上例中所需要求解的“在知道一个人穿拖鞋的前提下,这个人是男性的概率或者是女性的概率是多少”。后验概率形式化便是:

    640?wx_fmt=png

    后验概率的计算要以先验概率为基础。后验概率可以根据通过贝叶斯公式,用先验概率和似然函数计算出来。

    贝叶斯公式如下:

    640?wx_fmt=png

    说明:分母的变形是使用全概率公式,Y事件取值范围为:{men, women},即男生和女生;分子的变现是根据独立条件概率(贝叶斯定理):

    640?wx_fmt=png

    两边同时除以P(B)得到,上节有证明

    根据前面的约定,X=x1表示穿穿拖鞋,Y=ymen 表示男生,该公式即为,穿拖鞋情况下,是男生的概率,正式题目需要我们求的。

    而朴素贝叶斯算法正是利用以上信息求解后验概率,并依据后验概率的值来进行分类。使用上面的例子来进行理解,将先验概率和条件概率带入得,后验概率为:

    640?wx_fmt=png

    640?wx_fmt=png

    即,在x1(一个人穿拖鞋的情况下),是男生概率是3/5,是女生的概率为2/5,那么,对于分类情况,作为单选题的话,我们有理由将这个人归类为男性,因为是男性的概率大些。

    朴素贝叶斯

    对于样本集:

    640?wx_fmt=png

    其中 m 表示有 m 个样本, n 表示有 n 个特征。yi,i=1,2,..,m 表示样本类别,取值为 {C1,C2,...,CK} 。

    (怎么理解呢,yi 我们可以理解为前例的男生,女生,特征可以看成,穿拖鞋)

    朴素贝叶斯分类的基本公式

    640?wx_fmt=png

    化简一下,朴素贝叶斯分类器可表示为:

    640?wx_fmt=png

    朴素贝叶斯算法过程

    1)计算先验概率:求出样本类别的个数 K 。对于每一个样本 Y=Ck ,计算出 P(Y=Ck) 。其为类别 Ck 在总样本集中的频率(对于前例男生女生,k=2,男生概率,女生概率)。

    2)计算条件概率:将样本集划分成 K 个子样本集,分别对属于 Ck 的子样本集进行计算,计算出其中特征 Xj=ajl 的概率:P(Xj=ajl|Y=Ck)。其为该子集中特征取值为 ajl 的样本数与该子集样本数的比值。(前例中,穿拖鞋与否就是一个特征,对于男生,需要计算穿拖鞋的条件概率,女生也一样)

    3)针对待预测样本 xtest ,计算其对于每个类别 Ck 的后验概率:

    640?wx_fmt=png

    计算结果,概率值最大的类别即为待预测样本的预测类别。(前例中,由于计算出来,男生概率大,对于分类问题,我们认为是男生)

    朴素贝叶斯算法分析

    优点:

    (1)朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。

    (2)对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练。

    (3)对缺失数据不太敏感,算法也比较简单,常用于文本分类。

    缺点:

    (1)理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型给定输出类别的情况下,假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。

    (2)需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。

    (3)由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。

    (4)对输入数据的表达形式很敏感。

    垃圾邮件分类实现

    朴素贝叶斯 (naive Bayes) 法是基于贝叶斯定理与特征条件独立假设的分类的方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对于给定的输入xx,利用贝叶斯定理求出后验概率最大的输出yy,完整代码GitHub。

    输入:

    #垃圾邮件的内容
    posting_list = [
        ['my', 'dog', 'has', 'flea', 'problem', 'help', 'please'],
        ['maybe', 'not', 'take', 'him', 'to', 'dog', 'park', 'stupid'],
        ['my', 'dalmation', 'is', 'so', 'cute', 'I', 'love', 'him'],
        ['stop', 'posting', 'stupid', 'worthless', 'garbage'],
        ['mr', 'licks', 'ate', 'ny', 'steak', 'how', 'to', 'stop', 'him'],
        ['quit', 'buying', 'worthless', 'dog', 'food', 'stupid']
        ]
    #是否是垃圾邮件的标签
    labels = [0, 1, 0, 1, 0, 1]

    首先得根据上述文本建立一个词汇表,即把重复的词汇剔除。代码如下:

    def createVocabList(dataSet):
        '''
        创建所有文档中出现的不重复词汇列表
        Args:
            dataSet: 所有文档
        Return:
            包含所有文档的不重复词列表,即词汇表
        '''
        vocabSet = set([])
        # 创建两个集合的并集
        for document in dataSet:
            vocabSet = vocabSet | set(document)
        return list(vocabSet)

    然后需要把每句话转化为词袋模型(bag-of-words model)

    # 词袋模型(bag-of-words model):词在文档中出现的次数
    def bagOfWords2Vec(vocabList, inputSet):
        '''
        依据词汇表,将输入文本转化成词袋模型词向量
        Args:
            vocabList: 词汇表
            inputSet: 当前输入文档
        Return:
            returnVec: 转换成词向量的文档
        例子:
            vocabList = ['I', 'love', 'python', 'and', 'machine', 'learning']
            inputset = ['python', 'machine', 'learning', 'python', 'machine']
            returnVec = [0, 0, 2, 0, 2, 1]
            长度与词汇表一样长,出现了的位置为1,未出现为0,如果词汇表中无该单词则print
        '''
        returnVec = [0] * len(vocabList)
        for word in inputSet:
            if word in vocabList:
                returnVec[vocabList.index(word)] += 1
            else:
                print("the word: %s is not in my vocabulary!" % word)
            return returnVec

    目前为止,我们把每份邮件转化成了一系列的向量形式,向量的长度是词表里面的词的个数,是稀疏矩阵。

    接下去就是朴素贝叶斯的步骤了,也就是训练的过程:

    def fit(self, trainMatrix, trainCategory):
        '''
        朴素贝叶斯分类器训练函数,求:p(Ci),基于词汇表的p(w|Ci)
        Args:
            trainMatrix : 训练矩阵,即向量化表示后的文档(词条集合)
            trainCategory : 文档中每个词条的列表标注
        Return:
            p0Vect : 属于0类别的概率向量(p(w1|C0),p(w2|C0),...,p(wn|C0))
            p1Vect : 属于1类别的概率向量(p(w1|C1),p(w2|C1),...,p(wn|C1))
            pAbusive : 属于1类别文档的概率
        '''
        numTrainDocs = len(trainMatrix)
        # 长度为词汇表长度
        numWords = len(trainMatrix[0])
        # p(ci)
        self.pAbusive = sum(trainCategory) / float(numTrainDocs)
        # 由于后期要计算p(w|Ci)=p(w1|Ci)*p(w2|Ci)*...*p(wn|Ci),若wj未出现,则p(wj|Ci)=0,因此p(w|Ci)=0,这样显然是不对的
        # 故在初始化时,将所有词的出现数初始化为1,分母即出现词条总数初始化为2
        p0Num = np.ones(numWords)
        p1Num = np.ones(numWords)
        p0Denom = 2.0
        p1Denom = 2.0
        for i in range(numTrainDocs):
            if trainCategory[i] == 1:
                p1Num += trainMatrix[i]
                p1Denom += sum(trainMatrix[i])
            else:
                p0Num += trainMatrix[i]
                p0Denom += sum(trainMatrix[i])
        # p(wi | c1)
        # 为了避免下溢出(当所有的p都很小时,再相乘会得到0.0,使用log则会避免得到0.0)
        self.p1Vect = np.log(p1Num / p1Denom)
        # p(wi | c2)
        self.p0Vect = np.log(p0Num / p0Denom)
        return self

    训练完了,剩下的是对新数据的预测过程:

    def predict(self, testX):
        '''
        朴素贝叶斯分类器
        Args:
            testX : 待分类的文档向量(已转换成array)
            p0Vect : p(w|C0)
            p1Vect : p(w|C1)
            pAbusive : p(C1)
        Return:
            1 : 为侮辱性文档 (基于当前文档的p(w|C1)*p(C1)=log(基于当前文档的p(w|C1))+log(p(C1)))
            0 : 非侮辱性文档 (基于当前文档的p(w|C0)*p(C0)=log(基于当前文档的p(w|C0))+log(p(C0)))
        '''
    
        p1 = np.sum(testX * self.p1Vect) + np.log(self.pAbusive)
        p0 = np.sum(testX * self.p0Vect) + np.log(1 - self.pAbusive)
        if p1 > p0:
            return 1
        else:
            return 0

    猜你喜欢

    640?wx_fmt=jpeg

    展开全文
  • 朴素贝叶斯朴素贝叶斯 In this article, we will walk through Microsoft Naive Bayes algorithm in SQL Server. 在本文中,我们将逐步介绍SQL Server中的Microsoft Naive Bayes算法。 In my previous ...

    朴素贝叶斯 半朴素贝叶斯

    In this article, we will walk through Microsoft Naive Bayes algorithm in SQL Server.

    在本文中,我们将逐步介绍SQL Server中的Microsoft Naive Bayes算法。

    In my previous article, SQL data mining, we discussed what data mining is and how to set up the data mining environment in SQL Server. We briefly said that there are several algorithms which you can select during the setting up of the data mining environment. As mentioned before, we are going to discuss the first algorithm which is Microsoft Naive Bayes in this article.

    在我的前一篇文章SQL数据挖掘中 ,我们讨论了什么是数据挖掘以及如何在SQL Server中设置数据挖掘环境。 简短地说,在设置数据挖掘环境期间,可以选择几种算法。 如前所述,我们将在本文中讨论第一个算法,即Microsoft Naive Bayes。

    什么是朴素贝叶斯 (What is Naive Bayes)

    Bayes theory was discovered by Rev. Thomas Bayes in 1763 with the example of a newborn child who is witnessing a sunrise for the first time. Let us look at a more modern example. Let us look at an example from the medical arena. The hospital that sees patients for dengue has started to collect data. So they have found that there are several symptoms of dengue patients. High fever, body ache, vomiting, and headaches are few those symptoms and we will limit the symptoms for only those for the purpose of discussion. Now, if you are statistician, you would say, out of the dengue patients, 75% had a high fever and 80% had vomiting. Though these numbers give you some idea, what we need to know as a policy decision-maker, what is the percentage that the patient will have dengue given that he has a fever? Naive Bayes theory can convert to unknown from what you know.

    贝叶斯理论是由托马斯·贝叶斯牧师在1763年发现的,以一个初次目睹日出的新生婴儿为例。 让我们看一个更现代的例子。 让我们从医疗领域来看一个例子。 看到有登革热病人的医院已经开始收集数据。 因此,他们发现登革热患者有几种症状。 高烧,身体疼痛,呕吐和头痛是这些症状的极少数,出于讨论目的,我们仅将这些症状限制为仅这些症状。 现在,如果您是统计学家,您会说登革热患者中有75%的人发高烧,而80%的人有呕吐。 尽管这些数字使您有所了解,但作为政策决策者我们需要知道的是,患者发烧后登革热的百分比是多少? 朴素贝叶斯理论可以从您所知道的转变为未知。

    Following is the equation for the famous Bayes theory.

    以下是著名的贝叶斯理论的方程式。

    P ( A / B) = P ( B / A) * P (A) / P(B)

    P(A / B)= P(B / A)* P(A)/ P(B)

    P ( A / B) = The likelihood of event A occurring, given that B is true.

    P(A / B)=如果B为真,则发生事件A的可能性。

    P ( B / A ) = The likelihood of event B occurring given that A is true.

    P(B / A)=假设A为真,则事件B发生的可能性。

    P ( A) and P(B) are the probabilities of events A and B independently of each other.

    P(A)和P(B)是事件A和B彼此独立的概率。

    Let us look at this from the dengue and fever example.

    让我们从登革热和热病的例子来看一下。

    The likelihood of having dengue given that the patient is having fever = the likelihood of the patient is having fever given that the patient is suffering from dengue * Probability of patient having dengue / Probability of patient having a fever.

    假设患者发烧而患有登革热的可能性=鉴于患者患有登革热而患有发烧的可能性*患有登革热的患者的可能性/患有发烧的患者的可能性。

    In the above example, to decide whether the patient is suffering from dengue, there are more than one parameter such as vomiting, body ache, headache etc. So you need all these parameters to be analyzed in order to predict whether the patient has dengue.

    在上面的示例中,要确定患者是否患有登革热,有多个参数,例如呕吐,身体疼痛,头痛等。因此,需要对所有这些参数进行分析,以预测患者是否患有登革热。

    微软朴素贝叶斯 (Microsoft Naive Bayes)

    Microsoft Naive Bayes is a classification supervised learning. This data set can be bi-class which means it has only two classes. Whether the patient is suffering from dengue or not or whether your customers are bike buyers or not, are an example of the bi-class data set. There can be multi-class data set as well.

    Microsoft Naive Bayes是分类监督学习。 该数据集可以是双类别的,这意味着它只有两个类别。 患者是否患有登革热,或者您的顾客是否是自行车购买者,都是双类数据集的一个例子。 也可以有多类数据集。

    Let us take the example which we discussed in the previous article, AdventureWorks bike buyer example. In this example, we will use vTargetMail database view in the AdventureWorksDW database.

    让我们以在上一篇文章中讨论过的AdventureWorks自行车购买者示例为例。 在此示例中,我们将在AdventureWorksDW数据库中使用vTargetMail数据库视图。

    During the data mining algorithm wizard, the Microsoft Naive Bayes algorithm should be selected as shown in the below image.

    在数据挖掘算法向导中,应选择Microsoft Naive Bayes算法,如下图所示。

    Selection of Naive Bayes Algorithm during the creation of dat mining structure.

    Next is to select relevant attributes which we will think will be impacted on bike buying. As we said last time, there are three types of attributes, Key, Predictable and Input.

    接下来是选择相关属性,我们认为这些属性会影响自行车的购买。 正如我们上次说的,属性共有三种类型,键,可预测和输入。

    So, we are going to predict, whether the customer will buy a bike or not. Therefore the predictable column is Bike Buyer. Each row should be uniquely identified using a Key and Customer Key is the key in this example.

    因此,我们将预测客户是否会购买自行车。 因此,可预测的列是“ 自行车购买者”。 在此示例中,应使用键唯一地标识每一行,而客户键是键。

    Next is to select inputs which will impact customer buying.

    接下来是选择将影响客户购买的输入。

    After choosing the Key and Predictable attributes and before the selection of input ttributes.

    In most cases, you can choose the necessary columns with your experience and sense. However, if you are unable to choose, there is a Suggest button which will give you suggestions as shown in the below image.

    在大多数情况下,您可以根据自己的经验和感觉选择必要的列。 但是,如果您无法选择,则有一个“ 建议”按钮,它将为您提供建议,如下图所示。

    Suggest Related Columns

    By analyzing data, a suggestion will provide you attributes which the system thinks will have a higher impact. You can choose the impact columns directly from this screen itself.

    通过分析数据,建议将为您提供系统认为会产生更大影响的属性。 您可以直接从此屏幕本身选择影响列。

    After completing the selection of input columns, the following screen will be displayed as shown in the below image.

    完成输入列的选择后,将显示以下屏幕,如下图所示。

    Selection of Key, Input and Predictable attributes.

    After the selection of attribute is completed, the next screen is to choose Content-Type and Data Type. You would notice that Age, Bike Buyer, Number Cars Owned, Number Children At Home and Total Children will have Discretized Content-Type and Data Type is Long. Discretized Content-Type is not compatible with Microsoft Naive Bayes. Therefore, those attributes have to be changed to Discrete, and Data type should be selected as text. The screen will appear like the following after you correctly configure the content type.

    属性选择完成后,下一个屏幕是选择Content-TypeData Type 。 您会注意到,年龄,自行车购买者,拥有的汽车数量,在家中的子代数和子代总数将具有离散化的Content-Type和Data Type为Long 。 离散内容类型与Microsoft Naive Bayes不兼容。 因此,必须将那些属性更改为“离散”,并且应选择“数据类型”作为文本。 正确配置内容类型后,屏幕将显示如下。

    Specify Column Content and Data Type

    After this, next is to provide the test and train data set parameters and default values are used here. Next is to process the mining model so that it can be consumed by the end-users.

    此后,下一步是提供测试和训练数据集参数,此处使用默认值。 接下来是处理挖掘模型,以便最终用户可以使用它。

    挖掘模型查看器 (Mining Model Viewer)

    After the mining model is built, next step is to analyze the model. The mining model Viewer is next to the model viewer. In the model viewer, there are four options namely, Dependency Network, Attribute Profiles, Attribute Characteristic and Attribute Discrimination as shown in the below image.

    构建挖掘模型后,下一步是分析模型。 挖掘模型查看器位于模型查看器旁边。 在模型查看器中,有四个选项,即依赖网络,属性配置文件,属性特征和属性区分,如下图所示。

    Options in Mining Model Viewer.

    依赖网络 (Dependency Network)

    The dependency network is a clear indicator of which attributes make a high or low impact towards the predictable attribute. In the following image, it elaborates what are the attributes which have a higher impact to decide Bike Buyer.

    依存关系网络可以清楚地指示哪些属性对可预测属性产生高低影响。 在下图中,它详细说明了对决定“ 自行车购买者”具有更高影响的属性。

    Dependency Network of Bike Buyer prediction.

    The above image indicates that Total Children, Commute Distance, Region, Marital Status, Number Children at Home, Number Cars Owned and English Education out of the other selected attributes. Out of these attributes, different attributes have different weightages of impacts. This can be identified by moving down the All Links to Strongest Links Slide bar which is at the left-hand side of the screen.

    上图显示了其他所选属性中的“总孩子数”,“通勤距离”,“地区”,“婚姻状况”,“在家中的孩子数”,“拥有的汽车数量”和“英语教育”。 在这些属性中,不同的属性具有不同的影响权重。 可以通过将所有链接向下移动到最强链接滑动条(位于屏幕左侧)来识别此问题。

    If the slide is at the very lowest place in the slide bar, you will see the strongest link as shown in the below image.

    如果幻灯片位于幻灯片栏中的最低位置,您将看到最牢固的链接,如下图所示。

    Strongest linked attribute for Bike Buyer.

    属性配置文件 (Attribute Profile)

    In this classification problem, we will have two classes. Buying Bike (1) or Not Buying Bikes (0). Attribute Profile shows how each category has different combinations.

    在这个分类问题中,我们将有两个类。 购买自行车(1)或不购买自行车(0)。 属性配置文件显示每个类别如何具有不同的组合。

    Attribute Profiles for Bike Buyers and Not Buke Buyers.

    This view can provide you a better view of understanding your data.

    此视图可以为您提供更好的理解数据的视图。

    属性特征 (Attribute Characteristics)

    As a user, it would be nice to know what feature will make people buy a car so that they can target the customers who have those attributes.

    作为用户,很高兴知道什么功能将使人们购买汽车,以便他们可以针对具有这些属性的客户。

    Attribute Characteristic for customers whi are buying bikes.

    The above image indicates that customers who do not have children at home tend to buy bikes. Also, North America Region and Customers who commute 0-1 Miles will tend to buy bikes. This information is handy for the marketing department so that they can specifically target customers with these parameters.

    上图表明,在家中没有孩子的顾客倾向于购买自行车。 同样,北美地区和通勤0-1英里的客户也倾向于购买自行车。 此信息对于市场部门很方便,因此他们可以使用这些参数专门针对客户。

    属性区分 (Attribute Discrimination)

    This tab gives you an answer to the question,” What is the difference between a bike buyer and not bike buyer”.

    此标签为您提供了以下问题的答案:“自行车购买者与非自行车购买者有什么区别”。

    Attribtue discrimination between customers who are buying and not buying bikes.

    We will leave the prediction and accuracy calculation in a separate article as it is a discussion for all the algorithms.

    我们将把预测和准确性计算放在单独的文章中,因为它是所有算法的讨论。

    型号参数 (Model Parameters)

    Depending on the environment, there are model parameters for each algorithm. By using these parameters, you can fine-tune the model. In the case of Microsoft Naive Bayes, there are four parameters which can be modified from the Mining Models and by selecting Set Algorithm Parameters from the Mining Model option in the main menu.

    根据环境的不同,每种算法都有模型参数。 通过使用这些参数,您可以微调模型。 对于Microsoft Naive Bayes,有四个参数可以从挖掘模型中修改,也可以通过从主菜单的“ 挖掘模型”选项中选择“ 设置算法参数”来修改。

    Naive Bayes Algorithm Parameters

    Maximum_Input_Attributes (Maximum_Input_Attributes)

    Specifies the maximum number of input attributes that the algorithm can handle before invoking feature selection. Setting this value to 0 disables feature selection for input attributes. This is an Enterprise edition feature. The default value is 255.

    指定在调用功能部件选择之前算法可以处理的最大输入属性数。 将此值设置为0将禁用输入属性的特征选择。 这是企业版功能。 默认值为255。

    Maximum_Output_Attributes (Maximum_Output_Attributes)

    Specifies the maximum number of output attributes that the algorithm can handle before invoking feature selection. Setting this value to 0 disables feature selection for output attributes. This is an Enterprise edition feature. The default value is 255.

    指定在调用功能选择之前算法可以处理的最大输出属性数。 将此值设置为0将禁用输出属性的功能选择。 这是企业版功能。 默认值为255。

    Maximum_States (Maximum_States)

    Specifies the maximum number of attribute states that the algorithm supports. If the number of states that an attribute has is greater than the maximum number of states, the algorithm uses the attribute’s most popular states and treats the remaining states as missing. This is an Enterprise edition feature. The default value is 100.

    指定算法支持的最大属性状态数。 如果某个属性具有的状态数大于最大状态数,则该算法将使用该属性的最受欢迎状态,并将其余状态视为丢失。 这是企业版功能。 默认值为100。

    Minimum_Dependency_Probability (Minimum_Dependency_Probability)

    Specifies the minimum dependency probability between input and output attributes. This value is used to limit the size of the content generated by the algorithm. This property can be set from 0 to 1. Increasing this value reduces the number of attributes in the model. If this has a higher values, you might not see some attributes in the Dependency Network. The default value is 0.5.

    指定输入和输出属性之间的最小依赖关系概率。 该值用于限制算法生成的内容的大小。 可以在0到1之间设置此属性。增加该值将减少模型中的属性数量。 如果此值较高,则在依赖网络中可能看不到某些属性。 默认值为0.5。

    Microsoft朴素贝叶斯算法的局限性 (Limitations of the Microsoft Naive Bayes Algorithm)

    The major issue is Microsoft Naive Bayes cannot handle continuous data. In the above example, we had to drop the yearly income though it is a very important attribute, simply because that attribute is a continuous variable.

    主要问题是Microsoft Naive Bayes无法处理连续数据。 在上面的示例中,我们必须删除年收入,尽管它是一个非常重要的属性,只是因为该属性是一个连续变量。

    Naive Bayes Algorithm has a basic assumption that input attributes are independent of each other. If you look at the example, we know that Occupation and Qualification have a link between them. However, this algorithm will not be able to understand the relation between inputs.

    朴素贝叶斯算法有一个基本假设,即输入属性彼此独立。 如果您看一下示例,我们知道职业和资格之间存在联系。 但是,该算法将无法理解输入之间的关系。

    摘要 (Summary)

    Microsoft Naive Bayes algorithm is a basic algorithm when you start into a data mining project. It will provide you a basic understanding about your data.

    当您开始数据挖掘项目时,Microsoft Naive Bayes算法是一种基本算法。 它将为您提供有关数据的基本知识。

    In the next article, we will discuss Microsoft Decision Trees algorithms.

    在下一篇文章中,我们将讨论Microsoft决策树算法。

    目录 (Table of contents)

    Introduction to SQL Server Data Mining
    Naive Bayes Prediction in SQL Server
    Microsoft Decision Trees in SQL Server
    Microsoft Time Series in SQL Server
    Association Rule Mining in SQL Server
    Microsoft Clustering in SQL Server
    Microsoft Linear Regression in SQL Server
    Implement Artificial Neural Networks (ANNs) in SQL Server
    Implementing Sequence Clustering in SQL Server
    Measuring the Accuracy in Data Mining in SQL Server
    Data Mining Query in SSIS
    Text Mining in SQL Server
    SQL Server数据挖掘简介
    SQL Server中的朴素贝叶斯预测
    SQL Server中的Microsoft决策树
    SQL Server中的Microsoft时间序列
    SQL Server中的关联规则挖掘
    SQL Server中的Microsoft群集
    SQL Server中的Microsoft线性回归
    在SQL Server中实现人工神经网络(ANN)
    在SQL Server中实现序列聚类
    在SQL Server中测量数据挖掘的准确性
    SSIS中的数据挖掘查询
    SQL Server中的文本挖掘

    翻译自: https://www.sqlshack.com/naive-bayes-prediction-in-sql-server/

    朴素贝叶斯 半朴素贝叶斯

    展开全文
  • 朴素贝叶斯概率模型概率模型分类器是一个条件概率模型:(独立的类别特征C有若干类别,条件依赖于若干特征变量F1,F2,...,Fn)   贝叶斯定理:  我们可以看到分母并不依赖于C,而且特征Fn的概率是给定的,分母...
  • 大数据分析笔记 - 朴素贝叶斯定义贝叶斯定理 (Bayes' Theorem)朴素贝叶斯分类器 定义 朴素贝叶斯是一种基于贝叶斯定理(Bayes’ theorem)的概率分类方法(probabilistic classification method)。朴素贝叶斯分类器假设...
  • 朴素贝叶斯分类器

    千次阅读 2019-10-31 12:52:11
    朴素贝叶斯分类器 讲朴素贝叶斯模型之前,必须讲贝叶斯定理: 贝叶斯公式怎么推呢? 条件概率: 在B条件下A发生的概率=AB同时发生的概率/B发生的概率 此公式非常容易理解通过下图: 从而推导出了乘法公式: 补充...
  • 朴素贝叶斯分类器是数据挖掘领域中的一种经典方法,而所谓朴素贝叶斯协同过滤(Naive Bayes Collaborative Filtering),无非是将推荐系统中的评分预测问题转化成一个分类问题。不过,在推荐系统中,借助贝叶斯分类...
  • 分类算法是机器学习中的一个重点,也是人们常说的...朴素贝叶斯 贝叶斯决策理论是主观贝叶斯派归纳理论的重要组成部分。 贝叶斯决策理论方法是统计模型决策中的一个基本方法,基本思想如下: 已知类条件概率参...
  • Python朴素贝叶斯预测Python朴素贝叶斯 1大纲 朴素贝叶斯预测原理及其算法应用场景 Python贝叶斯实现 Python机器学习应用Python朴素贝叶斯 2机...
  • 有监督学习3–朴素贝叶斯和SVM 接着上次的笔记来学习有监督学习,首先来看朴素贝叶斯是什么? 什么是贝叶斯? 提到贝叶斯这个名称,学过概率论的一定知道,在概率论与数理统计中有一个定理,就是叫做贝叶斯定理。...
  • 【Python】使用朴素贝叶斯分类对B站评论...朴素贝叶斯分类是一种常用的有监督机器学习算法,我使用的是scikit-learn提供的朴素贝叶斯分类模型,sklearn提供两种朴素贝叶斯分类,一种是高斯朴素贝叶斯,一种是多项式朴
  • 朴素贝叶斯分类法假定一个属性值在给定类的影响独立于其他属性的一类条件独立性。 二、示例 1、数据 PS:以下是一部分,文件名为SMSSpamCollection.txt,下载地址:机器学习文件数据包。 下载后,我对其中的数据...
  • 机器学习第三篇:详解朴素贝叶斯算法

    千次阅读 多人点赞 2020-12-03 09:27:07
    P(X=x|Y=ck)=P(X=x1,X=2,...,X=xi|Y=ck)=P(X=x1,X=2,...,X=xi)/P(Y=ck) 因为朴素贝叶斯对条件概率做了独立性假设,所以P(X=x1,X=x2,...,X=xi)/P(Y=ck)=P(X=x1)P(X=x2)...P(X=xi)/P(Y=ck)= ∏P(X=xi|Y=ck) 将上式代...
  • 决策树和朴素贝叶斯算法简介

    千次阅读 2019-07-03 21:00:00
    本节主要介绍数据挖掘中常见的分类方法决策树和朴素贝叶斯算法。 决策树算法 决策树(Decision Tree,DT)分类法是一个简单且广泛使用的分类技术。 决策树是一个树状预测模型,它是由结点和有向边组成的层次结构...
  • 其中朴素贝叶斯(Naive Bayes classiffer,NBC)是最简单但却是最有效的算法之一。 本章节实现一个基于监督学习方法和概率分析器。朴素贝叶斯是一个线性分类器。要理解这个概念,需要了解条件概率的概念。 处理...
  • 朴素贝叶斯连分母都可以不要了 。于是就有(分子已做改变): 上图两个式子就是精简后的贝叶斯公式,常称 朴素贝叶斯 。那么在机器学习领域中为什么称之为 朴素贝叶斯分类器 ? 根据例子,通过...
  • 这篇博客主要讲解基于Weka平台二次开发一个分类器的方法,基于朴素贝叶斯分类器的二次开发的视频,大家也可以去mooc查看中国地质大学(武汉)蒋良校老师课程的第十四章。 安装和使用 下载去Weka网页下载Weka安装包,...
  • java实现朴素贝叶斯分类算法

    万次阅读 2015-11-24 21:07:43
    这篇博客介绍下朴素贝叶斯分类算法在数据分类中的一个应用,举一个例子并使用java对其进行实现 ,借此也巩固下我所学的知识。 一,什么是朴素贝叶斯分类算法 回答这个问题首先要谈下什么是分类。其实这个很好理解,...
  • 1.接下来我们将使用朴素贝叶斯算法来进行一个小的项目实战——判断一个患者的肿瘤是良性还是恶性。这里我们将使用一个来自真实世界的数据集——威斯康星乳腺肿瘤数据集。 2.对数据集进行分析: 威斯康星乳腺肿瘤数据...
  • 本文主要讲述朴素贝叶斯分类算法并实现中文数据集的舆情分析案例,希望这篇文章对大家有所帮助,提供些思路。内容包括: 1.朴素贝叶斯数学原理知识 2.naive_bayes用法及简单案例 3.中文文本数据集预处理 4.朴素...
  • 这个demo本来是在一个月以前做的,用来完成大数据课程的小作业,结果老师发了一个更详细的要求做结课考试,导致这个demo和课程的要求产生了一些偏差。刚好我最近在自学GO语言所以昨天就把本来用Java写的代码用Go重写...
  • 贝叶斯原理是英国数学家托马斯·贝叶斯于18 世纪提出的,当我们不能直接计算一件事情(A)发生的可能性大小的时候,可以间接的计算与这件事情有关的事情(X,Y,Z)发生的可能性大小,从而间接判断事情(A)发生的可能...
  • 朴素贝叶斯 1.概述 (1)假设: ①特征独立性:每个特征出现的概率与其他特征独立 ②特征均衡性:每个特征都同等重要 2.实例: 假设已经有1000封被标记好了(c1c_1c1​表示垃圾邮件,c2c_2c2​表示非垃圾邮件)的邮件,要求...
  • 机器学习基础算法之K近邻,朴素贝叶斯,决策树与随机森林1.scikit-learn数据集API2.获取数据集的返回类型3.数据集分隔4.sklearn机器学习算法的实现-估计器5.K近邻6.朴素贝叶斯7.评估标准8.交叉验证和网格搜索9.决策...
  • 决策树是一种用于对实例进行分类的树形结构。 Hunt算法是一种采用局部最优策略的决策树构建算法,它同时也是许多决策树算法的基础,包括ID3、C4.5和CART等。 Hunt算法的递归定义如下:  (1) 如果 中所有记录都...
  • 导读:如果有一天,我们知道的统计规律和现实生活发生了冲突,又或者前人的经验不符合亲身经历,那么该怎么办?面对经验与现实的矛盾,我们需要一种应对方案。作者:徐晟来源:大数据DT(ID:hzd...
  • 可以看到——最外层是数学基础 最内层是我们要学习的朴素贝叶斯——具体方法论 样本空间的划分 全概率公式 贝叶斯公式 贝叶斯定理 朴素贝叶斯分类 朴素贝叶斯分类器 朴素贝叶斯算法原理 朴素贝叶斯算法例子 朴素...
  • 朴素贝叶斯公式详解 11.朴素贝叶斯文档分类原理 12.特征抽取-CountVectorizer 13.朴素贝叶斯文章分类实战 14.多项式、高斯、伯努利模型 认识机器学习 机器学习介绍 什么是机器学习: 机器学习是一门多领域交叉学科,...
  • 基于贝叶斯理论的有监督... 朴素贝叶斯分类器效率极高 朴素贝叶斯基本概念 1.贝叶斯定理 详细:https://www.jianshu.com/p/7e8504e9b929 2.简单应用 用1表示下雨,0表示不下雨:过去的7天可以表示为: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,035
精华内容 2,414
关键字:

朴素贝叶斯可以用于大数据