没有最好的分类器,只有最合适的分类器。


最广泛的分类模型,除了“机器学习算法之决策树”里分享的决策树模型(Decision Tree Model)之外,还有一种十分常见的分类模型,即朴素贝叶斯模型(Naïve Bayesian Model,NBM)。


和决策树模型相比,朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。理论上,NBC模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为NBC模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,这给NBC模型的正确分类带来了一定影响。(来自百度百科)


决策树分类模型和朴素贝叶斯模型各有自己适用的场景,在属性个数比较多或者属性之间相关性较大时,NBC模型的分类效率比不上决策树模型。而在一个比较容易解释,而且不同维度之间相关性较小的模型,即属性相关性较小时,NBC模型的性能最为良好。有待考究,不过已被业界人士默认。


决策树之所以流行,一个重要的原因是不需要了解机器学习的知识,就能搞明白决策树是如何工作的。对于明确类别的问题,决策树能给出明确答案。

机器学习之朴素贝叶斯分类器

决策树的特点是它总是在沿着特征做切分。随着层层递进,这个划分会越来越细。


但是,自从高考结束后,我们会发现生活中哪怕是大学里考试都不再是简简单单的非对即错,不再只有对立的是非,万物都存在灰色地带,灰色地带的权衡一般都是用概率表示的。对于分类也一样,分类器有时候会给出错误结果,这时可以要求分类器给出一个最优的类别猜测结果,同时给出这个猜测的概率估计值。而,贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。


目前研究较多的贝叶斯分类器主要有四种,分别是:NaiveBayes、TAN、BAN和GBN。NaiveBayes(朴素贝叶斯)是ML中的一个非常基础和简单的算法。为什么称之为“朴素”贝叶斯呢?顾名思义,整个形式化过程只做最原始、最简单的假设,因此而得名。NBC是个很好的入门的算法,来帮助自己更加深刻的理解ML的本质。本文首先从一个最简单的概率分类器开始,然后给出一些假设来学习朴素贝叶斯分类器。


学过概率的同学一定都知道贝叶斯定理:

这个在250多年前发明的算法,在信息领域内有着无与伦比的地位。贝叶斯分类是一系列分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。朴素贝叶斯算法(Naive Bayesian) 是其中应用最为广泛的分类算法之一。


提到贝叶斯定理,不得不提到条件概率:

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

机器学习之朴素贝叶斯分类器机器学习之朴素贝叶斯分类器

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

下面不加证明地直接给出贝叶斯定理

机器学习之朴素贝叶斯分类器

朴素贝叶斯核心思路是根据条件概率计算待判断点的类型。

朴素贝叶斯分类器基于一个简单的假定:给定目标值时属性之间相互条件独立。


通过以上定理和“朴素”的假定,我们知道:

P( Category | Document) = P ( Document |Category ) * P( Category) / P(Document)


机器学习之朴素贝叶斯分类器


朴素贝叶斯分类法或者简单贝叶斯分类法的工作过程如下:

(1)设D是训练元组和他们相关联的类标号的集合。通常,每个元组用一个n维属性向量X={X1,X2,....Xn}表示,描述由n个属性A1,A2,...An对元组的n个测量。

(2)假定有m个类C1,C2,...Cm。给定元组X,分类法将预测X属于具有最高后验概率的类(在条件X下)。也就是说,朴素贝叶斯分类法预测X属于类Ci,当且仅当P(Ci|X)>P(Cj|X) j∈[1,m] j≠i。这样,最大化P(Ci|X)。P(Ci|X)最大的类Ci称为最大后验概率。根据贝叶斯定理,

机器学习之朴素贝叶斯分类器

(3)由于P(X)对所有类为常数,所以只需要P(X|Ci)P(Ci)最大即可。如果类的先验概率未知,则通常假设这些类是等概率的,即P(C1)=P(C2)=...=P(Cn),并且据此对P(X|Ci)最大化,否则,最大化P(X|Ci)P(Ci)。注意,类先验概率可以用P(Ci)=|Ci,D|/|D|估计,其中|Ci,D|是D中Ci类的训练元组数目。

(4)给定具有许多属性的数据集,计算P(X|Ci)的开销可能非常大。为了降低计算P(X|Ci)的开销,可以做类条件独立的朴素假定。给定元组的类标号,假定属性值有条件地相互独立(即属性之间不存在依赖关系)。因此有:

机器学习之朴素贝叶斯分类器

可以很容易地由训练元组估计概率:

机器学习之朴素贝叶斯分类器

注意,Xk表示元组X在属性Ak的值。对于每个属性,考察该属性是分类的还是连续值的。


考虑以下的情况:

(1)如果Ak是分类属性,则P(Xk|Ci)是D中属性Ak值为Xk的Ci类的元组数目除以D中Ci类的元组数

机器学习之朴素贝叶斯分类器

(2)如果Ak是连续值属性,则需要多做一点工作,但是计算很简单。通常,假定连续值属性服从均值为μ,标准差为σ的高斯分布,由下式定义:

机器学习之朴素贝叶斯分类器

因此:

机器学习之朴素贝叶斯分类器

uc(i)和σc(i)分别是Ci类训练元组属性Ak的均值和标准差。将这两个量与Xk一起带入公式3,计算P(Xk|Ci)。


例如,设X=(35,40000美元),其中A1和A2分别是属性age和income。设类标号属性为buys_computer。X相关联的类标号是“yes”。假设age尚未离散化,因此是连续值属性。假设从训练集之中发现D中购买计算机的顾客年龄为38 ±12岁。换言之,对于属性age和这个类,有μ=28,σ=12。可以把这些量与元组X的x1=35一起带入公式,估计

机器学习之朴素贝叶斯分类器


朴素贝叶斯优点:

1.生成式模型,通过计算概率来进行分类,可以用来处理多分类问题,

2.对小规模的数据表现很好,适合多分类任务,适合增量式训练,算法也比较简单。

缺点:

1.对输入数据的表达形式很敏感,

2.由于朴素贝叶斯的“朴素”特点,所以会带来一些准确率上的损失。

3.需要计算先验概率,分类决策存在错误率。


参考资料

李航.统计学习方法.北京:清华大学出版社,2012

Peter Harrington.机器学习实战[M].北京:人民邮电出版社,2013.

知乎上的大神理解

朴素贝叶斯原理(https://www.cnblogs.com/zhoudayang/p/5058264.html)


机器学习之朴素贝叶斯分类器

站在巨人的肩膀上

Standing on Shoulders of Giants

机器学习之朴素贝叶斯分类器

愿分享    共成长


相关文章:

  • 2021-07-31
  • 2021-10-05
  • 2022-01-12
  • 2022-12-23
  • 2021-06-19
  • 2021-04-11
  • 2022-12-23
  • 2021-08-07
猜你喜欢
  • 2021-05-13
  • 2021-09-02
  • 2021-09-19
相关资源
相似解决方案