(《机器学习》完整版系列)第7章 贝叶斯分类器——7.5 特殊的半朴素贝叶斯分类器(SPODE、TAN、AODE,研究特殊的“父子”关系)
一般的半朴素贝叶斯分类器需要知道每个
x
i
x_i
xi的父
p
a
i
\mathrm{pa}_i
pai,
假定所有属性
x
i
x_i
xi有同一个父属性(该属性称为“超父”),特殊的半朴素贝叶斯分类器研究一些特殊的“父子”关系。
特殊的半朴素贝叶斯分类器
本篇讨论几个特殊的半朴素贝叶斯分类器。
1、SPODE
前述的一般的半朴素贝叶斯分类器需要知道每个
x
i
x_i
xi的父
p
a
i
\mathrm{pa}_i
pai,假定不知道呢?我们在一种特殊情况下研究这种“不知道”:
假定所有属性
x
i
x_i
xi有同一个父属性(该属性称为“超父”),但不知哪个属性为“超父”。
我们把“超父”视为“超参数”,先任意指定它:
先看看以
x
1
x_1
x1为“超父”的情况,即
p
a
i
=
x
1
,
(
i
=
2
,
3
,
⋯
,
d
)
,
p
a
1
=
T
r
u
e
\mathrm{pa}_i=x_1,(i=2,3,\cdots,d),\mathrm{pa}_1=\mathrm{True}
pai=x1,(i=2,3,⋯,d),pa1=True,则式(7.32)变为:
P
(
c
∣
x
)
∝
P
(
c
)
P
(
x
1
∣
c
)
∏
i
=
2
d
P
(
x
i
∣
c
,
x
1
)
=
P
(
c
,
x
1
)
∏
i
=
2
d
P
(
x
i
∣
c
,
x
1
)
\begin{align} P(c\,|\,\boldsymbol{x}) & \propto P(c)P({x_1}\,|\,c)\mathop{\prod }\limits_{i=2}^dP({x_i}\,|\,c,x_1)\notag \\ & = P(c,x_1)\mathop{\prod }\limits_{i=2}^dP({x_i}\,|\,c,x_1) \tag{7.34} \end{align}
P(c∣x)∝P(c)P(x1∣c)i=2∏dP(xi∣c,x1)=P(c,x1)i=2∏dP(xi∣c,x1)(7.34)
这样,给定训练集就可以利用上节的求解步骤求出一个半朴素贝叶斯分类器,对该分类器可以在测试集上度量其性能。
在数据集 D D D上使用交叉验证法(参见【西瓜书2.2.2节】),得到以 x 1 x_1 x1为“超父”的半朴素贝叶斯分类器的性能为 E 1 E_1 E1。
同样,求得分别以 x 2 , x 3 , ⋯ , x d x_2,x_3,\cdots,x_d x2,x3,⋯,xd为“超父”的半朴素贝叶斯分类器的性能为 E 2 , E 2 , ⋯ , E d E_2,E_2,\cdots,E_d E2,E2,⋯,Ed。
比较这些性能,找到最小者,不妨设为 E i ∗ E_{i^*} Ei∗,则 x i ∗ x_{i^*} xi∗为最优“超父”。
最后,以 x i ∗ x_{i^*} xi∗为“超父”,以数据集 D D D全体数据为训练集,用上节的求解步骤训练出SPODE分类器 h ∗ ( x ) h^*(\boldsymbol{x}) h∗(x)。
2.TAN
我们先通过如下步骤构建一种树形结构:
(1)定义互信息
I
(
A
,
B
)
=
P
(
A
,
B
)
log
P
(
A
,
B
)
P
(
A
)
P
(
B
)
\begin{align} I(A,B)=P(A,B){\log} \frac{P(A,B)}{P(A)P(B)} \tag{7.35} \end{align}
I(A,B)=P(A,B)logP(A)P(B)P(A,B)(7.35)
则任意两个属性间的条件互信息为
I
(
x
i
,
x
j
∣
y
)
=
∑
c
∈
Y
P
(
x
i
,
x
j
∣
c
)
log
P
(
x
i
,
x
j
∣
c
)
P
(
x
i
∣
c
)
P
(
x
j
∣
c
)
\begin{align} I(x_i,x_j\,|\,y)=\sum_{c \in \mathcal{Y} }P(x_i,x_j\,|\,c){\log} \frac{P(x_i,x_j\,|\,c)}{P(x_i\,|\,c)P(x_j\,|\,c)} \tag{7.36} \end{align}
I(xi,xj∣y)=c∈Y∑P(xi,xj∣c)logP(xi∣c)P(xj∣c)P(xi,xj∣c)(7.36)
(2)以属性为结节构建完全图, x i , x j x_i,x_j xi,xj连线上的权重为 I ( x i , x j ∣ y ) I(x_i,x_j\,|\,y) I(xi,xj∣y)。
(3)从权重最小的边开始,去掉一些边,使得
- 所有结点是连通的;
- 使用的边数最少;
- 边上的权重之和最大;
(4)挑选根变量,将边置为有向,形成“父 → \rightarrow →子”关系,即形成一棵树(称为最大带权生成树,有专门的算法)。
完成了上述结构构建后,对每个类 c c c计算 P ( c ∣ x ) P(c\,|\,\boldsymbol{x}) P(c∣x):
(1)由数据集 D D D中各类别的频率【西瓜书式(7.16)】(或其修正【西瓜书式(7.19)】)作为 P ( c ) P(c) P(c)的近似值。
(2)利用式(7.33)计算估值 P ( x i ∣ c , p a i ) P(x_i\,|\,c,\mathrm{pa}_i) P(xi∣c,pai)。
(3)利用式(7.32)即【西瓜书式(7.21)】右边,计算 P ( c ∣ x ) P(c\,|\,\boldsymbol{x}) P(c∣x)。
最后,基于所有的 P ( c ∣ x ) P(c\,|\,\boldsymbol{x}) P(c∣x),用【西瓜书式(7.6)】得到TAN的分类器 h ∗ ( x ) h^*(\boldsymbol{x}) h∗(x)。
3、AODE
前述的SPODE是逐一试“超父”,找一个最优“超父”,现在我们指定“超父资格”,具有资格的“超父”中并不选优,而是对结果做“平均”,这就是AODE。
资格:数据集 D D D中样本的第 i i i个属性若取值比较集中(如,第 i i i个属性 x i x_i xi取值为 x i ′ x_i' xi′的样本数超过指定的阈值 m ′ m' m′,记为 ∣ D x i ∣ ⩾ m ′ |D_{x_i}|\geqslant m' ∣Dxi∣⩾m′),则该属性 x i x_i xi有资格当超父。
属性
x
i
x_i
xi当超父时,则有类似于式(7.34)的式子:
P
(
c
∣
x
)
∝
P
(
c
,
x
i
)
∏
j
≠
i
d
P
(
x
j
∣
c
,
x
i
)
=
P
(
c
,
x
i
)
∏
j
=
1
d
P
(
x
j
∣
c
,
x
i
)
(由于
P
(
x
i
∣
c
,
x
i
)
=
1
)
\begin{align} P(c\,|\,\boldsymbol{x}) & \propto P(c,x_i)\mathop{\prod }\limits_{j\neq i}^dP({x_j}\,|\,c,x_i)\notag \\ & = P(c,x_i)\mathop{\prod }\limits_{j=1}^dP({x_j}\,|\,c,x_i)\quad \text{(由于$P({x_i}\,|\,c,x_i)=1$)} \tag{7.37} \end{align}
P(c∣x)∝P(c,xi)j=i∏dP(xj∣c,xi)=P(c,xi)j=1∏dP(xj∣c,xi)(由于P(xi∣c,xi)=1)(7.37)
其中,
∣
D
x
i
∣
⩾
m
′
|D_{x_i}|\geqslant m'
∣Dxi∣⩾m′。 这就是一个给定超父的SPODE。
对于样本集的属性逐个考察,可能有多个属性满足上述的条件,即有多个式(7.37),求其平均值,则
P
(
c
∣
x
)
∝
∑
∣
D
x
i
∣
⩾
m
′
P
(
c
,
x
i
)
∏
j
=
1
d
P
(
x
j
∣
c
,
x
i
)
\begin{align} P(c\,|\,\boldsymbol{x}) \propto \sum_{|D_{x_i}|\geqslant m'}P(c,x_i)\mathop{\prod }\limits_{j=1}^dP({x_j}\,|\,c,x_i) \tag{7.38} \end{align}
P(c∣x)∝∣Dxi∣⩾m′∑P(c,xi)j=1∏dP(xj∣c,xi)(7.38)
视为多个给定超父的SPODE的集成。
AODE分为如下步骤:
(1)对数据集 D D D中样本的属性取值情况进行统计,求出满足( ∣ D x i ∣ ⩾ m ′ |D_{x_i}|\geqslant m' ∣Dxi∣⩾m′)的超父属性 x i x_i xi。
(2)对每个超父属性 x i x_i xi,基于数据集 D D D中样本进行分门别类地“计数”后,利用【西瓜书式(7.24)(7.25)】代入式(7.38)和号 ∑ \sum ∑右侧。
(3)由式(7.38)算出每个 c c c的 P ( c ∣ x ) P(c\,|\,\boldsymbol{x}) P(c∣x)。
(4)基于所有的 P ( c ∣ x ) P(c\,|\,\boldsymbol{x}) P(c∣x),用【西瓜书式(7.6)】得到AODE的分类器 h ∗ ( x ) h^*(\boldsymbol{x}) h∗(x)。
本文为原创,您可以:
- 点赞(支持博主)
- 收藏(待以后看)
- 转发(他考研或学习,正需要)
- 评论(或讨论)
- 引用(支持原创)
- 不侵权
上一篇:7.4 朴素贝叶斯分类器与半朴素贝叶斯分类器(样本独立?属性独立?类条件属性独立?)
下一篇:7.6 贝叶斯网(也称信念网)结构(网络结构也是“超参数”)、贝叶斯图络学习(两级搜索法)
相关文章
- Coursera台大机器学习课程笔记8 -- Linear Regression
- 机器学习算法总结(二)
- 如何选择机器学习分类器?
- 机器学习入门05 - 泛化 (Generalization)
- 机器学习数学系列(3):概率论选讲
- 机器学习数学系列(2):微分选讲
- 机器学习&深度学习基础(tensorflow版本实现的算法概述0)
- 机器学习数学系列(1):机器学习与数学基础知识
- 机器学习笔记 - tensorflow 2.8版本不同优化器对比
- 机器学习笔记 - 前馈神经网络(FFNN)用作回归问题的波士顿房价预测
- 【玩转数据系列二】机器学习应用没那么难,这次教你玩心脏病预测
- ML:MLOps系列讲解之《设计机器学习驱动的(ML-powered)软件—我们想要解决的业务问题是什么?》解读
- ML:MLOps系列讲解之《CRISP-ML (Q)ML生命周期过程—了解机器学习开发的标准过程模型—业务和数据理解→数据工程(数据准备)→ML模型工程→评估ML模型→模型部署→模型监控和维护》解读
- 机器学习(三十):过采样和欠采样技术
- 机器学习(十八):随机搜索和XGBoost
- 2021入坑机器学习,有这份指南就够了
- 在OpenCV里使用机器学习库sklearn 实现手写数字识别1
- Andrew Ng-ML-第十八章-大规模机器学习
- 机器学习-西瓜书、南瓜书第五章
- 人工智能机器学习深度学习系列篇
- 【数据挖掘】百度机器学习-数据挖掘-自然语言处理工程师 2023届校招笔试详解
- 【C++ 科学计算】机器学习 dlib 生成动态链接库(ubuntu)
- 机器学习:Mahout协同过滤算法