[白话解析] 深入浅出朴素贝叶斯模型原理及应用

[白话解析] 深入浅出朴素贝叶斯模型原理及应用 0x00 摘要

朴素贝叶斯模型是机器学习中经常提到的概念。但是相信很多朋友都是知其然而不知其所以然。本文将尽量使用易懂的方式介绍朴素贝叶斯模型原理,并且通过具体应用场景和源码来帮助大家深入理解这个概念。

0x01 IT相关概念 1. 分类问题

已知m个样本 (x1,y1), ...... (xm,ym),x是特征变量,y是对应的类别。要求得一个模型函数或者映射规则h,对于新的样本 xt,能够尽量准确的预测出 yt = h(xt)。

我们也可以从概率的角度来考虑一下上述问题。假设y有m个类别,即 y1,......yn ∈ {C1,......Cm},对于样本 xt,如果能计算出每个类别的条件概率 P(C1|xt),......P(Cm|xt),那么可以认为概率最大的那个类别就是 xt 所属的类别。

h叫做分类器。分类算法的任务就是构造分类器h。

分类器一个直观理解就是在通过计算出的后验概率得到每个类别的概率,并输出最高类别的概率为分类结果。

分类算法的内容是要求给定特征,让我们得出类别,这也是所有分类问题的关键。每一个不同的分类算法,对应着不同的核心思想。

2. 朴素贝叶斯

朴素贝叶斯(Naive Bayes)算法理论基础是基于贝叶斯定理和条件独立性假设的一种分类方法。朴素的意思是假设各个特征之间相互条件独立的。

贝叶斯分类器的基本方法:在统计资料的基础上,依据找到的一些特征属性,来计算各个类别的概率,找到概率最大的类,从而实现分类。即贝叶斯分类器通过预测一个对象属于某个类别的概率,再预测其类别。

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

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

找出最大概率的那个类。

3. 公式解说 3.1 贝叶斯定理

前文呼延灼的方法是:
求解问题(A): 呼延灼想知道自己是否是公明哥哥的心腹,用A来代表"你是大哥的心腹"。
已知结果(B): 大哥对你下拜。记作事件B。
推理结果 P(A|B): 想通过大哥对你下拜这个事件,来判断大哥视你为心腹的概率。

于是有:

P(A|B) = P(B|A)P(A)/P(B) P(A|B) 也就是在B事件"大哥下拜"发生之后,对A事件"大哥视你为心腹"概率的重新评估。

其实上述公式也隐含着:通过贝叶斯公式能够把人分成两类:大哥的心腹 / 普通下属。

3.2 用类别的思路重新解读

所以贝叶斯公式可以用类别的思路重新解读。

我们把 B 理解成“具有某特征”,把A理解成“类别标签”。在最简单的二分类问题(是与否判定)下,我们将A 理解成“属于某类”的标签。

P(类别|特征)=P(特征|类别)P(类别)/P(特征)

P(A)是先验概率,表示每种类别分布的概率;

P(B|A)是条件概率,表示在某种类别前提下,某事发生的概率;该条件概率可通过统计而得出,这里需要引入极大似然估计概念。

P(A|B)是后验概率,表示某事发生了,并且它属于某一类别的概率,有了这个后验概率,便可对样本进行分类。后验概率越大,说明某事物属于这个类别的可能性越大,便越有理由把它归到这个类别下。

3.3 扩展到多个条件(特征)

之前只假设A只有B一个条件, 但在实际应用中,很少有一件事只受一个特征影响的情况,往往影响一件事的因素有多个。假设,影响 B 的因素有 n 个,分别是 b1,b2,…,bn。

则 P(A|B) 可以写为:

P(A|b1,b2,...,bn) = P(A) P(b1,b2,...,bn|A) / P(b1,b2,...,bn)

因为假设从 b1 到 bn 这些特征之间,在概率分布上是条件独立的,也就是说每个特征 bi与其他特征都不相关。所以可以做如下转换

P(b1,b2,...,bn|A) = P(b1|A)P(b2|A)...P(bn|A)

这个转换其实就是 独立变量的联合分布 = 各变量先验分布的乘积。只不过这里是条件概率,但是因为变换前后都有同样的条件 A,从样本空间 A 的角度看,其实就是联合分布转换成先验分布的乘积。

所以贝叶斯定理可以做如下推导

P(A|b1,b2,...,bn) = P(A) [P(b1|A)P(b2|A)...P(bn|A)] / P(b1,b2,...,bn) 0x02 呼延灼如何应用朴素贝叶斯模型来分类:

话说在前文[白话解析] 深入浅出贝叶斯定理中,呼延灼通过贝叶斯定理,推出了自己不是公明哥哥心腹的结论。虽然有些气闷,但是也好奇于贝叶斯定理的威力,于是他就决定用朴素贝叶斯模型对马军头领和步军头领进行分类。

1. 极简版朴素贝叶斯分类模型

目前有一个极简版朴素贝叶斯分类模型,能区分出两个类(A1, A2),用来分类的特征也有两个(B1, B2)。
所以公式为:

P(A|B1,B2) = P(A) [P(B1|A)P(B2|A)] / P(B1,B2)

这个就是分类器:

P(A|B1,B2) = P(A) [P(B1|A)P(B2|A)] / P(B1,B2) = P(A) [P(B1|A)P(B2|A)] / [P(B1) P(B2)] b1,b2表示特征变量,Ai表示分类,p(Ai|b1,b2)表示在特征为b1,b2的情况下分入类别Ai的概率

再重温下朴素贝叶斯分类器,通过预测一个对象属于某个类别的概率,再预测其类别。

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

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

找出最大概率的那个类。

2. 已知条件

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxddw.html