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

朴素贝叶斯分类器 (naive bayes classifier, NBC) 是一种常见且简单有效的贝叶斯分类算法。对已知类别,朴素贝叶斯分类器在估计类条件概率时假设特征之间条件独立。这样的假设,可以使得在有限的训练样本下,原本难以计算的联合概率 \(P(X_1, X_2, \cdots, X_n | Y)\) 转化为每个类别条件概率的乘积。尤其是在特征很多时,就显得更加简便。

条件独立性

给定 X, Y 条件独立,则有:
\[
P(X,Y|Z)=P(X|Z)\times P(Y|Z)
\]

有了条件独立假设,就不必计算 X 的每一个组合的类条件概率,只需对给定的 Y,计算每一个 X 的条件概率。

贝叶斯计算过程

假设某个体有 n 项特征,分别为 \(X_1, X_2, \cdots, X_n\)。现有 m 个类别,分别为 \(C_1, C_2, \cdots, C_m\)。

首先,朴素贝叶斯分类器计算每个类别的后验概率:
\[
P=(C_i\ |\ X_1 \ X_2 \cdots X_n )=\frac{P(X_1 \ X_2 \cdots X_n\ |\ C_i)p(C_i)}{P(X_1 \ X_2 \cdots X_n)}=\\ \frac{P(X_1\ |\ C_i)P(X_2\ |\ C_i)\cdots P(X_n\ |\ C_i)p(C_i)}{P(X_1 \ X_2 \cdots X_n)} \\ i=1,2,\cdots,m
\]
然后,比较独立特征的条件概率,将概率最大的那个类别,作为该样本的类别:\(P(C_k\ |\ X_1\ X_2\cdots X_n)\)。

拉普拉斯修正 Laplacian correction

如果我们使用的实例数据量太小,缺少某类的样本,那么条件概率会为,从而导致该类别的后验概率直接为,则否定了其他特征对样本分类概率的估计,使得分类结果产生偏差。

为了解决零概率问题,我们使用拉普拉斯修正进行处理。当数据量很大时,每个分量的计数加1造成的估计概率变化可以忽略不计,这样就可以方便有效地保证每一类中每个特征发生的概率是非零的。实际使用中,拉普拉斯修正增加的数值可以设置为任何一个值,通常加 $ \lambda(0<\lambda<1)$ 来替代简单加1。同时如果对 N 个计数都加上 \(\lambda\),这时分母也要加上 \(N*\lambda\) 来保证所有类的概率加和为1。

数值型特征的处理

朴素贝叶斯算法需要计算概率,离散型变量采用概率来计算,连续型变量需要进行离散化处理才能进行计算。这样做的一个问题是,如果离散区间的数目太多,会因为每一个区间中记录太少而不能对特征条件概率做出可靠的估计。相反如果区间数目太少,有些区间就会含有来自不同类的记录,因此失去了正确的决策边界。

一种处理方法是根据历史数据求得分布的参数,然后利用密度函数求得样本在该特征的条件概率。高斯分布通常被用来表示连续特征的类条件概率分布。

例如,假设审稿变量服从高斯分布,计算公式如下:
\[
p(x,\eta,\sigma)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{ {(x-\eta)}^2}{2\sigma^2} }
\]
而在第 \(y_i\) 类中的均值和标准差分别为 \(\eta_{y_i}\) 和 \(\sigma_{y_i}\),类条件概率为:
\[
p(a_k\ |\ y_i)=p(a_k, \eta_{y_i}, \sigma_{y_i})
\]
因此,只要计算出训练样本中各个类别中此特征项划分的各均值和标准差,代入上述公式即可得到需要的估计值。

算法的优缺点

优点:

(1)分类效果稳健,特别适合于大规模数据集。

(2)能够很方便地处理多分类任务。

(3)对缺失数据和噪声数据都不敏感。

缺点:

(1)特征之间相互独立的假设在实际应用中往往是不成立的,在特征个数比较多或者特征之间相关性较大时,分类效果一般。

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

(3)对输入数据的表达形式很敏感,应用在含有大量数值特征的数据集时并不理想。

Demo

使用 NBC 对乳腺癌数据集进行分类。

Jupyter Notebook 链接为:NBC-BC

【References】

[1] 裔隽,张怿檬,张目清等.Python机器学习实战[M].北京:科学技术文献出版社,2018

原文地址:https://www.cnblogs.com/IvyWong/p/11814067.html

时间: 2024-12-16 21:09:15

机器学习之朴素贝叶斯分类器的相关文章

机器学习系列-朴素贝叶斯分类器

贝叶斯分类器 什么是贝叶斯分类器 贝叶斯分类器是一类分类器的总称,这些分类器均以贝叶斯定理为基础,故统称为贝叶斯分类器.这些分类器中最简单的是朴素贝叶斯分类器,它几乎完全按照贝叶斯定理进行分类,因此我们从朴素贝叶斯分类器说起. 贝叶斯定理: 贝叶斯定理是概率论中一个比较重要的定理,在讲解贝叶斯定理之前,首先回顾一下贝叶斯定理的基础:条件概率和全概率公式. 条件概率:设\(A,B\)是两个事件,且\(P(A)>0\),称 \[P(B|A)=\frac{P(AB)}{P(A)}\] 为在事件\(A\

吴裕雄--天生自然python机器学习:朴素贝叶斯算法

分类器有时会产生错误结果,这时可以要求分类器给出一个最优的类别猜测结果,同 时给出这个猜测的概率估计值. 概率论是许多机器学习算法的基础 在计算 特征值取某个值的概率时涉及了一些概率知识,在那里我们先统计特征在数据集中取某个特定值 的次数,然后除以数据集的实例总数,就得到了特征取该值的概率. 首先从一个最简单的概率分类器开始,然后给 出一些假设来学习朴素贝叶斯分类器.我们称之为“朴素”,是因为整个形式化过程只做最原始.最简单的假设. 基于贝叶斯决策理论的分类方法 朴素贝叶斯是贝叶斯决策理论的一部

机器学习之朴素贝叶斯

一 .朴素贝叶斯算法概述  前面我们讲过KNN分类算法和决策树分类算法,两者最终都是预测出实例的确定的分类结果,但是,有时候分类器会产生错误结果:本章要学的朴素贝叶斯分类算法则是给出一个最优的猜测结果,同时给出猜测的概率估计值. 朴素贝叶斯对一个测试样本分类时,通过比较p(y=0|x)和p(y=1|x)来进行决策.这里注意涉及两个重点,一个是贝叶斯公式:p(y=1|x)=p(x|y=1)p(y=1)p(x)p(y=1|x)=p(x|y=1)p(y=1)p(x),其中x是一个多维向量,x=(x1,

[机器学习&amp;数据挖掘]朴素贝叶斯数学原理

1.准备: (1)先验概率:根据以往经验和分析得到的概率,也就是通常的概率,在全概率公式中表现是“由因求果”的果 (2)后验概率:指在得到“结果”的信息后重新修正的概率,通常为条件概率(但条件概率不全是后验概率),在贝叶斯公式中表现为“执果求因”的因 例如:加工一批零件,甲加工60%,乙加工40%,甲有0.1的概率加工出次品,乙有0.15的概率加工出次品,求一个零件是不是次品的概率即为先验概率,已经得知一个零件是次品,求此零件是甲或乙加工的概率是后验概率 (3)全概率公式:设E为随机试验,B1,

机器学习算法-朴素贝叶斯Python实现

引文:前面提到的K最近邻算法和决策树算法,数据实例最终被明确的划分到某个分类中,下面介绍一种不能完全确定数据实例应该划分到哪个类别,或者说只能给数据实例属于给定分类的概率. 基于贝叶斯决策理论的分类方法之朴素贝叶斯 优点:在数据较少的情况下仍然有效,可以处理多类别问题 缺点:对于输入数据的准备方式较为敏感 适用数据类型:标称型数据. 朴素贝叶斯的一般过程 收集数据:可以使用任何方式 准备数据:需要数据型或是布尔型数据 分类数据:有大量特征时,绘制特征作用不大,此时使用直方图效果更好 训练算法:计

机器学习之朴素贝叶斯算法

1 贝叶斯定理的引入 概率论中的经典条件概率公式: 公式的理解为,P(X ,Y)= P(Y,X)<=> P(X | Y)P(Y)= P(Y | X)P (X),即 X 和 Y 同时发生的概率与 Y 和 X 同时发生的概率一样. 2 朴素贝叶斯定理 朴素贝叶斯的经典应用是对垃圾邮件的过滤,是对文本格式的数据进行处理,因此这里以此为背景讲解朴素贝叶斯定理.设D 是训练样本和相关联的类标号的集合,其中训练样本的属性集为          X { X1,X2, ... , Xn }, 共有n 个属性:

【机器学习】--机器学习之朴素贝叶斯从初始到应用

一.前述 机器学习算法中,有种依据概率原则进行分类的朴素贝叶斯算法,正如气象学家预测天气一样,朴素贝叶斯算法就是应用先前事件的有关数据来估计未来事件发生的概率. 二.具体 1.背景--贝叶斯定理引入对于两个关联事件(非独立事件)A和B,同时发生的概率为:P(AB)=P(A|B)P(B)=P(B|A)P(A),所以把公式变形后可得: 贝叶斯定理,他是朴素贝叶斯算法的基础,就是下面的这个公式: 现在我们来把这个式子扩充一下:假设B由很多个独立事件组成,或者说,B由很多个属性组成B1,B2...Bn他

朴素贝叶斯分类器

预备知识: 贝叶斯公式:A.B事件.在A发生条件下B发生的概率=在B发生条件下A发生的概率*B发生的概率/A发生的概率 P(B|A)=P(A|B)P(B) / P(A) 全概率公式: 特别的,设实验E的样本空间为S,A为E的事件,B1,B2,...,Bn为S的一个划分,且P(Bi)>0(i=1,2,...,n),则有P(A)=P(A|B1)*P(B1) + P(A|B2)*P(B2) + ... + P(A|Bn)*P(Bn) 故有贝叶斯的另一种形式: P(B[j]|A[i])=P(A[i]|B

复习机器学习算法:贝叶斯分类器

朴素贝叶斯算法是寻找一个极大后验假设(MAP),即候选假设的最大后验概率. 如下: 在朴素贝叶斯分类器中,假设样本特征之间是独立的,则有: 计算每个假设的后验概率,选出最大的概率,对应的类别就是样本的分类结果. 优缺点: 对小规模的数据表现很好,适合多分类任务,适合增量式训练.当时,需要样本的特征之间独立性较高,不能有太多的相关性.对输入数据的表达形式很敏感. 还有,当样本中某个特征在该类别中出现次数为0,即P(ai |vj)=0, 导致上式的分子全部为0. 这个时候需要使用m-估计和贝叶斯结合