| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 机器学习强基计划4-4:详解半朴素贝叶斯分类AODE原理(附Python实现) -> 正文阅读 |
|
[人工智能]机器学习强基计划4-4:详解半朴素贝叶斯分类AODE原理(附Python实现) |
0 写在前面机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理;“广”在分析多个机器学习模型:决策树、支持向量机、贝叶斯与马尔科夫决策、强化学习等。 1 独依赖假设在机器学习强基计划4-3:详解朴素贝叶斯分类原理 | 例题分析 | Python实现中我们介绍了朴素贝叶斯之所以“朴素”,是因为其给定了很强的属性独立性假设。然而,属性独立性假设在实际上很难成立,因此引入半朴素贝叶斯分类器(Semi-Na?ve Bayes Classifier),其核心思想是:适当考虑部分属性的相互依赖,从而既简化了联合概率计算,又不至于彻底忽略属性间的强依赖关系。 半朴素贝叶斯分类器最常见的建模策略是独依赖估计(One-Dependent Estimator, ODE),即假设每个属性在类别外最多依赖于一个属性 f ? ( x ) = a r g max ? C ∈ Y P ( C ) ∏ i = 1 d P ( x i ∣ C , p a i ) {f^*\left( \boldsymbol{x} \right) =\underset{C\in \mathcal{Y}}{\mathrm{arg}\max}P\left( C \right) \prod_{i=1}^d{P\left( x_i|C, pa_i \right)}} f?(x)=C∈Yargmax?P(C)i=1∏d?P(xi?∣C,pai?) 其中 p a i pa_i pai?为属性 x i x_i xi?所依赖的父属性。若对 ? x i \forall x_i ?xi?确定了其 p a i pa_i pai?,则可按朴素贝叶斯的方式进行贝叶斯分类,因此问题的核心转换为如何确定 p a i pa_i pai?。 另一个问题是,可以假设属性依赖多个父属性吗?答案是:高阶依赖估计的准确性要求训练样本随指数级增加,在有限样本条件下,一般不适合采用。 2 AODE原理先介绍一个比较直接的想法——假设所有属性都依赖于同一个父属性,称该属性为超父(super-parent),这种半朴素贝叶斯分类器称为SPODE(Super-Parent ODE)算法。 f ? ( x ) = a r g max ? C ∈ Y P ( C ) ∏ i = 1 d P ( x i ∣ C , p a ) f^*\left( \boldsymbol{x} \right) =\underset{C\in \mathcal{Y}}{\mathrm{arg}\max}P\left( C \right) \prod_{i=1}^d{P\left( x_i|C, pa \right)} f?(x)=C∈Yargmax?P(C)i=1∏d?P(xi?∣C,pa) 建立在SPODE的基础上,AODE(Averaged ODE)算法是一种基于集成学习机制、更为强大的ODE分类器,其将每个属性作为超父构造SPODE,再加权计算各属性间的平均依赖,即 f ? ( x ) = a r g max ? C ∈ Y ∑ i = 1 , ∣ D x i ∣ ? m d P ( C , x i ) ∏ j = 1 d P ( x j ∣ C , x i ) f^*\left( \boldsymbol{x} \right) =\underset{C\in \mathcal{Y}}{\mathrm{arg}\max}\sum_{i=1,|\boldsymbol{D}_{x_i}|\geqslant m}^d{P\left( C,x_i \right) \prod_{j=1}^d{P\left( x_j|C, x_i \right)}} f?(x)=C∈Yargmax?i=1,∣Dxi??∣?m∑d?P(C,xi?)j=1∏d?P(xj?∣C,xi?) 其中 D x i \boldsymbol{D}_{x_i} Dxi??为第 i i i属性上取值为 x i x_i xi?的样本子集, m m m默认设为30。类似地,AODE的拉普拉斯平滑修正为 { P ( C , x i ) = ∣ D C , x i ∣ + 1 ∣ D ∣ + N × N i P ( x j ∣ C , x i ) = ∣ D C , x i , x j ∣ + 1 ∣ D C , x i ∣ + N j \begin{cases} P\left( C,x_i \right) =\frac{|\boldsymbol{D}_{C,x_i}|+1}{|\boldsymbol{D}|+N\times N_i}\\ P\left( x_j|C,x_i \right) =\frac{|\boldsymbol{D}_{C,x_i,x_j}|+1}{|\boldsymbol{D}_{C,x_i}|+N_j}\\\end{cases} ? ? ??P(C,xi?)=∣D∣+N×Ni?∣DC,xi??∣+1?P(xj?∣C,xi?)=∣DC,xi??∣+Nj?∣DC,xi?,xj??∣+1?? 简单说,AODE就是SPODE的加权平均版本 接下来基于上述原理开始编程,并和朴素贝叶斯分类做个比较,看性能有没提升 3 Python实现3.1 计算类先验概率
3.2 计算属性后验概率
3.3 预测采用机器学习强基计划2-3:图文详解决策树预剪枝、后剪枝原理+Python实现的数据集训练,获得准确率如下
而在机器学习强基计划4-3:详解朴素贝叶斯分类原理 | 例题分析 | Python实现中准确率只有83.2%,可见适当的依赖性假设有助于提高分类准确率 完整代码联系下方博主名片获取 🔥 更多精彩专栏: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:40:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |