Bayes网络分类

我正在学习使用Matlab进行Bayes网络分类,我卡在了一个简单的(我认为)步骤上:

对于像iris数据集这样的朴素贝叶斯分类器,类别位于顶部节点,像这样:

        class
/ \ feature1 feature2

我理解为什么类别是特征的原因,这没问题,我明白为什么类别本身有一个先验概率。

但在非朴素贝叶斯网络的情况下,像这样:

cause1      cause2     |  \        /     |  consequence     |    /     class

在这种非朴素的情况下,先验概率如何设置?我该如何设置它?我如何从中获得分类?谢谢 (:

附注:我正在查看BNT来构建网络。


回答:

假设你提到的所有变量都是分类变量,并且边的方向是从上到下:

先验概率:

在第一个朴素贝叶斯示例中,’class’的条件概率表(CPT)仅由其先验分布组成,因为它是一个根节点,即没有父节点。如果’class’可以有2个状态(例如黑色和白色),其CPT将包含2个值。

在第二个贝叶斯网络(BN)示例中,’class’的CPT依赖于’cause1’和’consequence’。假设’consequence’有3个状态,’cause1’有4个状态,而’class’如前所述有2个状态。在这种情况下,’class’的CPT将包含3*4*2个值。在学习这个CPT时,你可以将你的先验信念作为一个Dirichlet分布(如果所有变量都是分类变量)纳入其中。要了解如何将你的先验信念纳入最大似然估计过程,可以参考这些优秀的讲义

推断:(或者你所说的’分类’)

关于进行分类,在示例1中,你可以使用贝叶斯规则来计算P(‘class’ = 白色)和P(‘class’ = 黑色)。在第二个(BN)示例中,你需要使用信念传播、变量消除或连接树算法来根据你观察到的节点更新’class’节点的后验概率。

关于如何实现这一点,有一个简单的BNT示例在这里。此外,BNT工具箱还包含使用连接树函数的简短’推断’示例,你可以在.../examples文件夹下找到这些示例。

最后,虽然有些人可能不同意,但就贝叶斯网络而言,我建议不要严格地将A -> B解释为“A导致B”,因为在结构学习领域,贝叶斯网络的因果关系方面仍有许多争议。

希望这对你有帮助。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注