当前位置: 首页 > news >正文

贝叶斯分类器:原理、算法与应用详解

内容摘要

本文聚焦贝叶斯分类器,介绍其在各类分类器中分类错误概率最小的特性。详细阐述贝叶斯分类器的基本原理、朴素贝叶斯和半朴素贝叶斯分类器的算法,结合西瓜数据集实例说明朴素贝叶斯的应用。此外,还深入探讨极大似然估计和贝叶斯估计的联系与区别,助力读者全面理解贝叶斯分类器。

关键词:贝叶斯分类器;朴素贝叶斯;半朴素贝叶斯;极大似然估计;贝叶斯估计

一、引言

在机器学习的分类算法领域,贝叶斯分类器凭借其独特的理论基础和良好的性能表现占据着重要地位。它以贝叶斯决策论为依据,在各类分类器中具有分类错误概率最小,或者在预先给定代价的情况下平均风险最小的优势。本文将深入探讨贝叶斯分类器的基本原理、相关算法以及在实际中的应用。

二、贝叶斯分类器的基本原理

贝叶斯决策论是贝叶斯分类器的核心理论,其核心思想是在相关概率已知的情况下,利用误判损失来选择最优的类别分类。假设存在 N N N种可能的分类标记,记为 c 1 , c 2 , ⋯ , c N c_1,c_2,\cdots,c_N c1,c2,,cN,对于给定的样本 x x x,我们需要确定它属于哪一类。其计算步骤如下:

  1. 算出样本 x x x属于第 i i i个类的概率,即 P ( c i ∣ x ) P(c_i|x) P(cix)
  2. 通过比较所有的 P ( c i ∣ x ) P(c_i|x) P(cix),找出其中最大的概率值,从而得到样本 x x x所属的最佳类别。
  3. 根据贝叶斯公式, P ( c i ∣ x ) = P ( x ∣ c i ) P ( c i ) P ( x ) P(c_i|x)=\frac{P(x|c_i)P(c_i)}{P(x)} P(cix)=P(x)P(xci)P(ci)。一般来说, P ( c i ) P(c_i) P(ci)为先验概率,可通过训练样本中类别为 c i c_i ci的样本所占的比例进行估计; P ( x ∣ c i ) P(x|c_i) P(xci)为条件概率; P ( x ) P(x) P(x)是用于归一化的证据因子。由于在比较 P ( c i ∣ x ) P(c_i|x) P(cix)大小时, P ( x ) P(x) P(x)对所有类别是相同的,所以通常不需要计算 P ( x ) P(x) P(x)

三、朴素贝叶斯分类器

在实际应用中,计算 P ( x ∣ c i ) P(x|c_i) P(xci)时,若样本 X X X包含 d d d个属性,即 X = { x 1 , x 2 , ⋯ , x d } X = \{x_1,x_2,\cdots,x_d\} X={x1,x2,,xd},那么 P ( x ∣ c i ) = P ( x 1 , x 2 , ⋯ , x d ∣ c i ) P(x|c_i)=P(x_1,x_2,\cdots,x_d|c_i) P(xci)=P(x1,x2,,xdci)。然而,这个联合概率难以从有限的训练样本中直接估计得到。

为了解决这个问题,朴素贝叶斯(Naive Bayesian,简称NB)采用了“属性条件独立性假设”:对已知类别,假设所有属性相互独立。基于这个假设, P ( x 1 , x 2 , ⋯ , x d ∣ c i ) = ∏ j = 1 d P ( x j ∣ c i ) P(x_1,x_2,\cdots,x_d|c_i)=\prod_{j = 1}^{d}P(x_j|c_i) P(x1,x2,,xdci)=j=1dP(xjci)

由此,我们可以推导出朴素贝叶斯分类器的判定准则,以得到样本所属的最佳类别: h n b ( x ) = arg ⁡ max ⁡ c i ∈ Y P ( c i ) ∏ j = 1 d P ( x j ∣ c i ) h_{nb}(x)=\underset{c_i\in Y}{\arg\max}P(c_i)\prod_{j = 1}^{d}P(x_j|c_i) hnb(x)=ciYargmaxP(ci)j=1dP(xjci)

对于离散属性 x j x_j xj,结合贝叶斯公式,可以通过计数的方法估计条件概率,即 P ( x j ∣ c i ) = P ( x j , c i ) P ( c i ) ≈ # ( x j , c i ) # ( c i ) P(x_j|c_i)=\frac{P(x_j,c_i)}{P(c_i)}\approx\frac{\#(x_j,c_i)}{\#(c_i)} P(xjci)=P(ci)P(xj,ci)#(ci)#(xj,ci),其中 # ( x j , c i ) \#(x_j,c_i) #(xj,ci)表示在训练样本中 x j x_j xj c i c_i ci共同出现的次数。

如果 x j x_j xj是数值属性,通常假设类别中 c i c_i ci的所有样本第 j j j个属性的值服从正态分布。首先估计这个分布的均值 μ \mu μ和方差 σ \sigma σ,然后计算 x j x_j xj在这个分布中的概率密度。

四、举例理解朴素贝叶斯分类器

为了更直观地理解朴素贝叶斯分类器的工作原理,我们来看一个经典的西瓜训练集,如下表所示:

序号色泽根蒂敲声纹理脐部触感密度含糖率好瓜
1青绿蜷缩浊响清晰凹陷硬滑0.6970.460
2乌黑蜷缩沉闷清晰凹陷硬滑0.7740.376
3乌黑蜷缩浊响清晰凹陷硬滑0.6340.264
4青绿蜷缩浊响清晰凹陷硬滑0.6080.318
5青绿蜷缩浊响清晰凹陷硬滑0.5560.215
6青绿蜷缩浊响清晰凹陷硬滑0.4030.237
7乌黑蜷缩浊响清晰凹陷硬滑0.4810.149
8乌黑蜷缩浊响清晰凹陷硬滑0.4370.211
9乌黑蜷缩浊响清晰凹陷硬滑0.6660.091
10青绿蜷缩浊响清晰凹陷硬滑0.2430.267
11青绿蜷缩浊响清晰凹陷硬滑0.2450.057
12青绿蜷缩浊响清晰凹陷硬滑0.3430.099
13青绿蜷缩浊响清晰凹陷硬滑0.6390.161
14青绿蜷缩浊响清晰凹陷硬滑0.6570.198
15乌黑蜷缩浊响清晰凹陷硬滑0.3600.370
16青绿蜷缩浊响清晰凹陷硬滑0.5930.042
17青绿蜷缩浊响清晰凹陷硬滑0.7190.103

现在有一个测试用例,如下表所示:

序号色泽根蒂敲声纹理脐部触感密度含糖率好瓜
测1青绿蜷缩浊响清晰凹陷硬滑0.6970.460

首先,我们来估计类先验概率 P ( c j ) P(c_j) P(cj)
P ( 好瓜 = 是 ) = 8 17 ≈ 0.471 P(好瓜 = 是)=\frac{8}{17}\approx0.471 P(好瓜=)=1780.471
P ( 好瓜 = 否 ) = 9 17 ≈ 0.529 P(好瓜 = 否)=\frac{9}{17}\approx0.529 P(好瓜=)=1790.529

然后,为每个属性估计条件概率(对于连续属性,假定它们服从正态分布):
P 青绿 ∣ 是 = P ( 色泽 = 青绿 ∣ 好瓜 = 是 ) = 3 8 = 0.375 P_{青绿|是}=P(色泽 = 青绿|好瓜 = 是)=\frac{3}{8}=0.375 P青绿=P(色泽=青绿好瓜=)=83=0.375
P 青绿 ∣ 否 = P ( 色泽 = 青绿 ∣ 好瓜 = 否 ) = 3 9 ≈ 0.333 P_{青绿|否}=P(色泽 = 青绿|好瓜 = 否)=\frac{3}{9}\approx0.333 P青绿=P(色泽=青绿好瓜=)=930.333
P 蜷缩 ∣ 是 = P ( 根蒂 = 蜷缩 ∣ 好瓜 = 是 ) = 5 8 = 0.625 P_{蜷缩|是}=P(根蒂 = 蜷缩|好瓜 = 是)=\frac{5}{8}=0.625 P蜷缩=P(根蒂=蜷缩好瓜=)=85=0.625
P 蜷缩 ∣ 否 = P ( 根蒂 = 蜷缩 ∣ 好瓜 = 否 ) = 3 9 ≈ 0.333 P_{蜷缩|否}=P(根蒂 = 蜷缩|好瓜 = 否)=\frac{3}{9}\approx0.333 P蜷缩=P(根蒂=蜷缩好瓜=)=930.333
P 浊响 ∣ 是 = P ( 敲声 = 浊响 ∣ 好瓜 = 是 ) = 6 8 = 0.750 P_{浊响|是}=P(敲声 = 浊响|好瓜 = 是)=\frac{6}{8}=0.750 P浊响=P(敲声=浊响好瓜=)=86=0.750
P 浊响 ∣ 否 = P ( 敲声 = 浊响 ∣ 好瓜 = 否 ) = 4 9 ≈ 0.444 P_{浊响|否}=P(敲声 = 浊响|好瓜 = 否)=\frac{4}{9}\approx0.444 P浊响=P(敲声=浊响好瓜=)=940.444
P 清晰 ∣ 是 = P ( 纹理 = 清晰 ∣ 好瓜 = 是 ) = 7 8 = 0.875 P_{清晰|是}=P(纹理 = 清晰|好瓜 = 是)=\frac{7}{8}=0.875 P清晰=P(纹理=清晰好瓜=)=87=0.875
P 清晰 ∣ 否 = P ( 纹理 = 清晰 ∣ 好瓜 = 否 ) = 2 9 ≈ 0.222 P_{清晰|否}=P(纹理 = 清晰|好瓜 = 否)=\frac{2}{9}\approx0.222 P清晰=P(纹理=清晰好瓜=)=920.222
P 凹陷 ∣ 是 = P ( 脐部 = 凹陷 ∣ 好瓜 = 是 ) = 6 8 = 0.750 P_{凹陷|是}=P(脐部 = 凹陷|好瓜 = 是)=\frac{6}{8}=0.750 P凹陷=P(脐部=凹陷好瓜=)=86=0.750
P 凹陷 ∣ 否 = P ( 脐部 = 凹陷 ∣ 好瓜 = 否 ) = 2 9 ≈ 0.222 P_{凹陷|否}=P(脐部 = 凹陷|好瓜 = 否)=\frac{2}{9}\approx0.222 P凹陷=P(脐部=凹陷好瓜=)=920.222
P 硬滑 ∣ 是 = P ( 触感 = 硬滑 ∣ 好瓜 = 是 ) = 6 8 = 0.750 P_{硬滑|是}=P(触感 = 硬滑|好瓜 = 是)=\frac{6}{8}=0.750 P硬滑=P(触感=硬滑好瓜=)=86=0.750
P 硬滑 ∣ 否 = P ( 触感 = 硬滑 ∣ 好瓜 = 否 ) = 6 9 ≈ 0.667 P_{硬滑|否}=P(触感 = 硬滑|好瓜 = 否)=\frac{6}{9}\approx0.667 P硬滑=P(触感=硬滑好瓜=)=960.667
P 密度 ; 0.697 ∣ 是 = 1 2 π × 0.195 e x p ( − ( 0.697 − 0.574 ) 2 2 × 0.12 9 2 ) ≈ 1.959 P_{密度;0.697|是}=\frac{1}{\sqrt{2\pi}×0.195}exp(-\frac{(0.697 - 0.574)^{2}}{2×0.129^{2}})\approx1.959 P密度;0.697∣=2π ×0.1951exp(2×0.1292(0.6970.574)2)1.959
P 密度 ; 0.697 ∣ 否 = 1 2 π × 0.195 e x p ( − ( 0.697 − 0.496 ) 2 2 × 0.19 5 2 ) ≈ 1.203 P_{密度;0.697|否}=\frac{1}{\sqrt{2\pi}×0.195}exp(-\frac{(0.697 - 0.496)^{2}}{2×0.195^{2}})\approx1.203 P密度;0.697∣=2π ×0.1951exp(2×0.1952(0.6970.496)2)1.203
P 含糖 ; 0.460 ∣ 是 = 1 2 π × 0.101 e x p ( − ( 0.697 − 0.279 ) 2 2 × 0.10 1 2 ) ≈ 0.788 P_{含糖;0.460|是}=\frac{1}{\sqrt{2\pi}×0.101}exp(-\frac{(0.697 - 0.279)^{2}}{2×0.101^{2}})\approx0.788 P含糖;0.460∣=2π ×0.1011exp(2×0.1012(0.6970.279)2)0.788
P 含糖 ; 0.460 ∣ 否 = 1 2 π × 0.108 e x p ( − ( 0.460 − 0.154 ) 2 2 × 0.10 8 2 ) ≈ 0.066 P_{含糖;0.460|否}=\frac{1}{\sqrt{2\pi}×0.108}exp(-\frac{(0.460 - 0.154)^{2}}{2×0.108^{2}})\approx0.066 P含糖;0.460∣=2π ×0.1081exp(2×0.1082(0.4600.154)2)0.066

接着,计算样本属于“好瓜 = 是”和“好瓜 = 否”的概率:
P ( 好瓜 = 是 ) × P 青绿 ∣ 是 × P 蜷缩 ∣ 是 × P 浊响 ∣ 是 × P 清晰 ∣ 是 × P 凹陷 ∣ 是 × P 硬滑 ∣ 是 × P 密度 ; 0.697 ∣ 是 × P 含糖 ; 0.460 ∣ 是 ≈ 0.063 P(好瓜 = 是)×P_{青绿|是}×P_{蜷缩|是}×P_{浊响|是}×P_{清晰|是}×P_{凹陷|是}×P_{硬滑|是}×P_{密度;0.697|是}×P_{含糖;0.460|是}\approx0.063 P(好瓜=)×P青绿×P蜷缩×P浊响×P清晰×P凹陷×P硬滑×P密度;0.697∣×P含糖;0.460∣0.063
P ( 好瓜 = 否 ) × P 青绿 ∣ 否 × P 蜷缩 ∣ 否 × P 浊响 ∣ 否 × P 清晰 ∣ 否 × P 凹陷 ∣ 否 × P 硬滑 ∣ 否 × P 密度 ; 0.697 ∣ 否 × P 含糖 ; 0.460 ∣ 否 ≈ 6.80 × 1 0 − 5 P(好瓜 = 否)×P_{青绿|否}×P_{蜷缩|否}×P_{浊响|否}×P_{清晰|否}×P_{凹陷|否}×P_{硬滑|否}×P_{密度;0.697|否}×P_{含糖;0.460|否}\approx6.80×10^{-5} P(好瓜=)×P青绿×P蜷缩×P浊响×P清晰×P凹陷×P硬滑×P密度;0.697∣×P含糖;0.460∣6.80×105

由于 0.063 > 6.80 × 1 0 − 5 0.063>6.80×10^{-5} 0.063>6.80×105,因此,朴素贝叶斯分类器将测试样本“测1”判别为“好瓜”。

五、半朴素贝叶斯分类器

朴素贝叶斯采用的“属性条件独立性假设”在一定程度上简化了计算,但在实际情况中,属性之间可能存在相互依赖关系。半朴素贝叶斯分类器的基本想法是适当考虑一部分属性间的相互依赖信息。

独依赖估计(One - Dependence Estimator,ODE)是半朴素贝叶斯分类器最常用的一种策略。独依赖假设每个属性在类别之外最多依赖一个其他属性,即 P ( x ∣ c i ) = ∏ j = 1 d P ( x j ∣ c i , p a j ) P(x|c_i)=\prod_{j = 1}^{d}P(x_j|c_i,pa_j) P(xci)=j=1dP(xjci,paj),其中 p a j pa_j paj为属性 x j x_j xj所依赖的属性,称为 x j x_j xj的父属性。假设父属性 p a j pa_j paj已知,那么可以使用公式 P ( x j ∣ c i , p a j ) = P ( x j , c i , p a j ) P ( c i , p a j ) P(x_j|c_i,pa_j)=\frac{P(x_j,c_i,pa_j)}{P(c_i,pa_j)} P(xjci,paj)=P(ci,paj)P(xj,ci,paj)来估计 。

六、极大似然估计和贝叶斯估计的联系与区别

极大似然估计和贝叶斯估计是设计贝叶斯分类器时常用的两种参数估计方法,它们之间存在以下区别:

  1. 估计的参数性质不同:最大似然估计将要估计的参数当作固定形式的一个未知变量,然后结合真实数据通过最大化似然函数来求解这个固定形式的未知变量。而贝叶斯估计则是将参数视为有某种已知先验分布的随机变量 。
  2. 计算复杂度不同:极大似然估计只需要使用简单的微分运算即可,计算过程相对简单。而在贝叶斯估计中则需要用到非常复杂的多重积分,计算复杂度较高。
  3. 准确性不同:当采用的样本数据很有限时,贝叶斯估计误差更小,因为它有很强的理论和算法基础,能够利用先验信息对参数进行更合理的估计。而极大似然估计在样本数据不足时,可能会出现较大偏差。

七、极大似然估计原理

极大似然估计的目的是利用已知的样本结果,反推最有可能(最大概率)导致这种结果的参数值。它是建立在极大似然原理的基础上的一个统计方法,为给定观察数据评估模型参数提供了一种途径,即“模型已定,参数未知”。

通过若干次试验,观察其结果,利用试验结果得到某个参数值能够使样本出现的概率最大,则称为极大似然估计。

假设样本集中的样本都是独立同分布的,我们可以只考虑一类样本集 D D D来估计参数向量 θ \theta θ。记已知的样本集为 D = { x 1 , x 2 , ⋯ , x n } D = \{x_1,x_2,\cdots,x_n\} D={x1,x2,,xn},联合概率密度函数 p ( D ∣ θ ) p(D|\theta) p(Dθ)称为相对于 x 1 , x 2 , ⋯ , x n x_1,x_2,\cdots,x_n x1,x2,,xn θ \theta θ的似然函数(Likelihood Function),即 l ( θ ) = p ( D ∣ θ ) = p ( x 1 , x 2 , ⋯ , x n ) = ∏ i = 1 n p ( x i ∣ θ ) l(\theta)=p(D|\theta)=p(x_1,x_2,\cdots,x_n)=\prod_{i = 1}^{n}p(x_i|\theta) l(θ)=p(Dθ)=p(x1,x2,,xn)=i=1np(xiθ)

如果 θ ^ \hat{\theta} θ^是参数空间中能使似然函数 l ( θ ) l(\theta) l(θ)最大的值,则 θ ^ \hat{\theta} θ^应该是“最可能”的参数值,那么 θ ^ \hat{\theta} θ^就是 θ \theta θ的极大似然估计量。它是样本集的函数,记作 θ ^ = d ( D ) = arg ⁡ max ⁡ θ l ( θ ) \hat{\theta}=d(D)=\underset{\theta}{\arg\max}l(\theta) θ^=d(D)=θargmaxl(θ)

八、总结

贝叶斯分类器作为一种重要的机器学习分类算法,以其坚实的理论基础和出色的性能在各个领域得到了广泛应用。朴素贝叶斯分类器通过属性条件独立性假设简化了计算,能够在一定程度上有效地处理分类问题,并且通过实际例子我们看到了它的具体应用过程。半朴素贝叶斯分类器则在朴素贝叶斯的基础上,适当考虑属性间的依赖关系,进一步提升了分类的准确性。

同时,极大似然估计和贝叶斯估计作为贝叶斯分类器设计中的重要参数估计方法,各自具有特点。极大似然估计计算简单,而贝叶斯估计在小样本情况下准确性更高。了解它们的区别和适用场景,有助于我们在实际应用中选择合适的方法来优化贝叶斯分类器的性能。

相关文章:

  • 位运算,状态压缩dp(算法竞赛进阶指南学习笔记)
  • 【Java】接口interface学习
  • 残烛与风儿的对话
  • OC底层原理【一】 alloc init new
  • java单元测试不能点击run运行测试方法
  • 【第二天】一月速通Python第二天,函数,数据容器,列表,元组,字典。
  • 论文阅读:2023 arxiv A Survey of Reinforcement Learning from Human Feedback
  • 集成运放的关键技术参数
  • 7.0/Q1,Charls最新文章解读
  • 【Oracle专栏】Oracle中的虚拟列
  • pnpm确认全局下载安装了还是显示cnpm不是内部或外部命令,也不是可运行的程序
  • 算法分析传输加密数据格式密文存储代码混淆逆向保护
  • Mac上Cursor无法安装插件解决方法
  • 【大模型】RAG(Retrieval-Augmented Generation)检索增强生成
  • 使用 NEAT 进化智能体解决 Gymnasium 强化学习环境
  • 分布类相关的可视化图像
  • 从内核到用户态:Linux信号内核结构、保存与处理全链路剖析
  • DMA映射
  • 大模型S2S应用趋势感知分析
  • SSM(SpringMVC+spring+mybatis)整合的步骤以及相关依赖
  • 荆州市委书记汪元程:全市各级干部要做到慎微、慎初、慎独、慎友
  • 新华每日电讯:从上海街区经济看账面、市面、人面、基本面
  • 美国“杜鲁门”号航母一战机坠海
  • 自称“最美”通缉犯出狱当主播?央广网:三观怎能跟着“五官”跑
  • 第五届全国医院人文管理路演在昆山举办:患者体验才是温度计
  • 银川市市长信箱被指已读乱回,官方回应