贝叶斯分类器:原理、算法与应用详解
内容摘要
本文聚焦贝叶斯分类器,介绍其在各类分类器中分类错误概率最小的特性。详细阐述贝叶斯分类器的基本原理、朴素贝叶斯和半朴素贝叶斯分类器的算法,结合西瓜数据集实例说明朴素贝叶斯的应用。此外,还深入探讨极大似然估计和贝叶斯估计的联系与区别,助力读者全面理解贝叶斯分类器。
关键词:贝叶斯分类器;朴素贝叶斯;半朴素贝叶斯;极大似然估计;贝叶斯估计
一、引言
在机器学习的分类算法领域,贝叶斯分类器凭借其独特的理论基础和良好的性能表现占据着重要地位。它以贝叶斯决策论为依据,在各类分类器中具有分类错误概率最小,或者在预先给定代价的情况下平均风险最小的优势。本文将深入探讨贝叶斯分类器的基本原理、相关算法以及在实际中的应用。
二、贝叶斯分类器的基本原理
贝叶斯决策论是贝叶斯分类器的核心理论,其核心思想是在相关概率已知的情况下,利用误判损失来选择最优的类别分类。假设存在 N N N种可能的分类标记,记为 c 1 , c 2 , ⋯ , c N c_1,c_2,\cdots,c_N c1,c2,⋯,cN,对于给定的样本 x x x,我们需要确定它属于哪一类。其计算步骤如下:
- 算出样本 x x x属于第 i i i个类的概率,即 P ( c i ∣ x ) P(c_i|x) P(ci∣x)。
- 通过比较所有的 P ( c i ∣ x ) P(c_i|x) P(ci∣x),找出其中最大的概率值,从而得到样本 x x x所属的最佳类别。
- 根据贝叶斯公式, 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(ci∣x)=P(x)P(x∣ci)P(ci)。一般来说, P ( c i ) P(c_i) P(ci)为先验概率,可通过训练样本中类别为 c i c_i ci的样本所占的比例进行估计; P ( x ∣ c i ) P(x|c_i) P(x∣ci)为条件概率; P ( x ) P(x) P(x)是用于归一化的证据因子。由于在比较 P ( c i ∣ x ) P(c_i|x) P(ci∣x)大小时, P ( x ) P(x) P(x)对所有类别是相同的,所以通常不需要计算 P ( x ) P(x) P(x) 。
三、朴素贝叶斯分类器
在实际应用中,计算 P ( x ∣ c i ) P(x|c_i) P(x∣ci)时,若样本 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(x∣ci)=P(x1,x2,⋯,xd∣ci)。然而,这个联合概率难以从有限的训练样本中直接估计得到。
为了解决这个问题,朴素贝叶斯(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,⋯,xd∣ci)=j=1∏dP(xj∣ci) 。
由此,我们可以推导出朴素贝叶斯分类器的判定准则,以得到样本所属的最佳类别: 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)=ci∈YargmaxP(ci)j=1∏dP(xj∣ci)。
对于离散属性 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(xj∣ci)=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.697 | 0.460 | 是 |
2 | 乌黑 | 蜷缩 | 沉闷 | 清晰 | 凹陷 | 硬滑 | 0.774 | 0.376 | 是 |
3 | 乌黑 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.634 | 0.264 | 是 |
4 | 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.608 | 0.318 | 是 |
5 | 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.556 | 0.215 | 是 |
6 | 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.403 | 0.237 | 是 |
7 | 乌黑 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.481 | 0.149 | 是 |
8 | 乌黑 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.437 | 0.211 | 是 |
9 | 乌黑 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.666 | 0.091 | 否 |
10 | 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.243 | 0.267 | 否 |
11 | 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.245 | 0.057 | 否 |
12 | 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.343 | 0.099 | 否 |
13 | 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.639 | 0.161 | 否 |
14 | 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.657 | 0.198 | 否 |
15 | 乌黑 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.360 | 0.370 | 否 |
16 | 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.593 | 0.042 | 否 |
17 | 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.719 | 0.103 | 否 |
现在有一个测试用例,如下表所示:
序号 | 色泽 | 根蒂 | 敲声 | 纹理 | 脐部 | 触感 | 密度 | 含糖率 | 好瓜 |
---|---|---|---|---|---|---|---|---|---|
测1 | 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 0.697 | 0.460 | ? |
首先,我们来估计类先验概率 P ( c j ) P(c_j) P(cj):
P ( 好瓜 = 是 ) = 8 17 ≈ 0.471 P(好瓜 = 是)=\frac{8}{17}\approx0.471 P(好瓜=是)=178≈0.471
P ( 好瓜 = 否 ) = 9 17 ≈ 0.529 P(好瓜 = 否)=\frac{9}{17}\approx0.529 P(好瓜=否)=179≈0.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(色泽=青绿∣好瓜=否)=93≈0.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(根蒂=蜷缩∣好瓜=否)=93≈0.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(敲声=浊响∣好瓜=否)=94≈0.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(纹理=清晰∣好瓜=否)=92≈0.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(脐部=凹陷∣好瓜=否)=92≈0.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(触感=硬滑∣好瓜=否)=96≈0.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.697−0.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.697−0.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.697−0.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.460−0.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×10−5
由于 0.063 > 6.80 × 1 0 − 5 0.063>6.80×10^{-5} 0.063>6.80×10−5,因此,朴素贝叶斯分类器将测试样本“测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(x∣ci)=j=1∏dP(xj∣ci,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(xj∣ci,paj)=P(ci,paj)P(xj,ci,paj)来估计 。
六、极大似然估计和贝叶斯估计的联系与区别
极大似然估计和贝叶斯估计是设计贝叶斯分类器时常用的两种参数估计方法,它们之间存在以下区别:
- 估计的参数性质不同:最大似然估计将要估计的参数当作固定形式的一个未知变量,然后结合真实数据通过最大化似然函数来求解这个固定形式的未知变量。而贝叶斯估计则是将参数视为有某种已知先验分布的随机变量 。
- 计算复杂度不同:极大似然估计只需要使用简单的微分运算即可,计算过程相对简单。而在贝叶斯估计中则需要用到非常复杂的多重积分,计算复杂度较高。
- 准确性不同:当采用的样本数据很有限时,贝叶斯估计误差更小,因为它有很强的理论和算法基础,能够利用先验信息对参数进行更合理的估计。而极大似然估计在样本数据不足时,可能会出现较大偏差。
七、极大似然估计原理
极大似然估计的目的是利用已知的样本结果,反推最有可能(最大概率)导致这种结果的参数值。它是建立在极大似然原理的基础上的一个统计方法,为给定观察数据评估模型参数提供了一种途径,即“模型已定,参数未知”。
通过若干次试验,观察其结果,利用试验结果得到某个参数值能够使样本出现的概率最大,则称为极大似然估计。
假设样本集中的样本都是独立同分布的,我们可以只考虑一类样本集 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=1∏np(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(θ) 。
八、总结
贝叶斯分类器作为一种重要的机器学习分类算法,以其坚实的理论基础和出色的性能在各个领域得到了广泛应用。朴素贝叶斯分类器通过属性条件独立性假设简化了计算,能够在一定程度上有效地处理分类问题,并且通过实际例子我们看到了它的具体应用过程。半朴素贝叶斯分类器则在朴素贝叶斯的基础上,适当考虑属性间的依赖关系,进一步提升了分类的准确性。
同时,极大似然估计和贝叶斯估计作为贝叶斯分类器设计中的重要参数估计方法,各自具有特点。极大似然估计计算简单,而贝叶斯估计在小样本情况下准确性更高。了解它们的区别和适用场景,有助于我们在实际应用中选择合适的方法来优化贝叶斯分类器的性能。