当前位置:首页 » 安全设置 » 贝叶斯网络先验信息怎么设置
扩展阅读
腾讯动漫怎么设置网络 2025-05-12 15:22:15

贝叶斯网络先验信息怎么设置

发布时间: 2022-09-25 11:58:57

如何用matlab的BNT软建立一个贝叶斯网络及条件概率表

对上述信息建立贝叶斯网络,代码如下

[plain]view plainprint?

N=8;

dag=zeros(N,N);

A=1;S=2;T=3;L=4;B=5;E=6;X=7;D=8;

dag(A,T)=1;

dag(S,[LB])=1;

dag([TL],E)=1;

dag(B,D)=1;

dag(E,[XD])=1;

discrete_nodes=1:N;

node_sizes=2*ones(1,N);

bnet=mk_bnet(dag,node_sizes,'names',{'A','S','T','L','B','E','X','D'},'discrete',discrete_nodes);

bnet.CPD{A}=tabular_CPD(bnet,A,[0.99,0.01]);

bnet.CPD{S}=tabular_CPD(bnet,S,[0.5,0.5]);

bnet.CPD{T}=tabular_CPD(bnet,T,[0.99,0.95,0.01,0.05]);

bnet.CPD{L}=tabular_CPD(bnet,L,[0.99,0.9,0.01,0.1]);

bnet.CPD{B}=tabular_CPD(bnet,B,[0.7,0.4,0.3,0.6]);

bnet.CPD{E}=tabular_CPD(bnet,E,[1,0,0,0,0,1,1,1]);

bnet.CPD{X}=tabular_CPD(bnet,X,[0.95,0.02,0.05,0.98]);

bnet.CPD{D}=tabular_CPD(bnet,D,[0.9,0.2,0.3,0.1,0.1,0.8,0.7,0.9]);

draw_graph(dag)

说明:有N=8个节点,建立有向无环图dag,并且这些点的值是离散的,这里1=False 2=True,node_sizes给出了所有状态


mk_bnet中names后的{}里面给出了各个节点的别名

利用tabular_CPD设置各个变量的边缘概率,对于A和S,定义顺序是False True;对于T、L和B这类,顺序是FF FT TF TT;对于D这类,顺序是FFF FFT FTF FTT TFF TFT TTF TTT

简单检查下A的概率


[plain]view plainprint?

engine=jtree_inf_engine(bnet);

evidence=cell(1,N);

[engine,loglik]=enter_evidence(engine,evidence);

m=marginal_nodes(engine,A);

m.T()

现在可以给定任意条件,然后计算概率了。

[plain]view plainprint?

例如要计算任意组合条件下,个体分别得Tub、lungcancer和bronchitis的概率。下面代码计算了P(T=True|A=False,S=True,X=True,D=False)的概率

[plain]view plainprint?

engine=jtree_inf_engine(bnet);

evidence=cell(1,N);

evidence{A}=1;

evidence{S}=2;

evidence{X}=2;

evidence{D}=1;

[engine,loglik]=enter_evidence(engine,evidence);

m=marginal_nodes(engine,T);

m.T(2)

❷ 贝叶斯定理先验概率计算要怎么

贝叶斯公式是机器学习中的基础公式,也是概率统计里的常用公式,贝叶斯公式常用于监督学习算法中的生成(式)模型(Generative
Model),想要对机器学习算法建立体系化的知识结构,对生成模型的理解至关重要,本篇只简述贝叶斯公式。并对先验概率和后验概率的知识点进行整理,以便随时查阅。首先给出两个例子

第一个例子。一所学校里面有 60% 的男生,40%
的女生。男生总是穿长裤,女生则一半穿长裤一半穿裙子。假设你走在校园中,迎面走来一个穿长裤的学生(很不幸的是你高度近似,你只看得见他(她)穿的是否长裤,而无法确定他(她)的性别),你能够推断出他(她)是男生的概率是多大吗?

第二个例子。两个一模一样的碗,一号碗有30颗水果糖和10颗巧克力糖,二号碗有水果糖和巧克力糖各20颗。现在随机选择一个碗,从中摸出一颗糖,发现是水果糖。请问这颗水果糖来自一号碗的概率有多大?
公式
P(A|B)=P(B|A)∗P(A)/P(B)P(A|B)=P(B|A)∗P(A)/P(B)
P(A|B)P(A|B)
想要理解贝叶斯公式首先要对
A,B所代表的意义有所了解。如果我们作为一个出题人,要如何考查这个公式呢?给出一系列条件,求P(A|B)显然是一种方法。简单举几个例子(只涉及最后的问题)。

❸ 贝叶斯网络,看完这篇我终于理解了(附代码)!

概率图模型是用图来表示变量概率依赖关系的理论,结合概率论与图论的知识,利用图来表示与模型有关的变量的联合概率分布。由图灵奖获得者Pearl开发出来。

如果用一个词来形容概率图模型(Probabilistic Graphical Model)的话,那就是“优雅”。对于一个实际问题,我们希望能够挖掘隐含在数据中的知识。概率图模型构建了这样一幅图,用观测结点表示观测到的数据,用隐含结点表示潜在的知识,用边来描述知识与数据的相互关系, 最后基于这样的关系图获得一个概率分布 ,非常“优雅”地解决了问题。

概率图中的节点分为隐含节点和观测节点,边分为有向边和无向边。从概率论的角度,节点对应于随机变量,边对应于随机变量的依赖或相关关系,其中 有向边表示单向的依赖,无向边表示相互依赖关系

概率图模型分为 贝叶斯网络(Bayesian Network)和马尔可夫网络(Markov Network) 两大类。贝叶斯网络可以用一个有向图结构表示,马尔可夫网络可以表 示成一个无向图的网络结构。更详细地说,概率图模型包括了朴素贝叶斯模型、最大熵模型、隐马尔可夫模型、条件随机场、主题模型等,在机器学习的诸多场景中都有着广泛的应用。

长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生,要么不发生,从来不会去考虑某件事情发生的概率有多大,不发生的概率又是多大。而且概率虽然未知,但最起码是一个确定的值。比如如果问那时的人们一个问题:“有一个袋子,里面装着若干个白球和黑球,请问从袋子中取得白球的概率是多少?”他们会想都不用想,会立马告诉你,取出白球的概率就是1/2,要么取到白球,要么取不到白球,即θ只能有一个值,而且不论你取了多少次,取得白球的 概率θ始终都是1/2 ,即不随观察结果X 的变化而变化。

这种 频率派 的观点长期统治着人们的观念,直到后来一个名叫Thomas Bayes的人物出现。

托马斯·贝叶斯Thomas Bayes(1702-1763)在世时,并不为当时的人们所熟知,很少发表论文或出版着作,与当时学术界的人沟通交流也很少,用现在的话来说,贝叶斯就是活生生一民间学术“屌丝”,可这个“屌丝”最终发表了一篇名为“An essay towards solving a problem in the doctrine of chances”,翻译过来则是:机遇理论中一个问题的解。你可能觉得我要说:这篇论文的发表随机产生轰动效应,从而奠定贝叶斯在学术史上的地位。

这篇论文可以用上面的例子来说明,“有一个袋子,里面装着若干个白球和黑球,请问从袋子中取得白球的概率θ是多少?”贝叶斯认为取得白球的概率是个不确定的值,因为其中含有机遇的成分。比如,一个朋友创业,你明明知道创业的结果就两种,即要么成功要么失败,但你依然会忍不住去估计他创业成功的几率有多大?你如果对他为人比较了解,而且有方法、思路清晰、有毅力、且能团结周围的人,你会不由自主的估计他创业成功的几率可能在80%以上。这种不同于最开始的“非黑即白、非0即1”的思考方式,便是 贝叶斯式的思考方式。

先简单总结下频率派与贝叶斯派各自不同的思考方式:

贝叶斯派既然把看做是一个随机变量,所以要计算的分布,便得事先知道的无条件分布,即在有样本之前(或观察到X之前),有着怎样的分布呢?

比如往台球桌上扔一个球,这个球落会落在何处呢?如果是不偏不倚的把球抛出去,那么此球落在台球桌上的任一位置都有着相同的机会,即球落在台球桌上某一位置的概率服从均匀分布。这种在实验之前定下的属于基本前提性质的分布称为 先验分布,或着无条件分布

其中,先验信息一般来源于经验跟历史资料。比如林丹跟某选手对决,解说一般会根据林丹历次比赛的成绩对此次比赛的胜负做个大致的判断。再比如,某工厂每天都要对产品进行质检,以评估产品的不合格率θ,经过一段时间后便会积累大量的历史资料,这些历史资料便是先验知识,有了这些先验知识,便在决定对一个产品是否需要每天质检时便有了依据,如果以往的历史资料显示,某产品的不合格率只有0.01%,便可视为信得过产品或免检产品,只每月抽检一两次,从而省去大量的人力物力。

后验分布 π(θ|X)一般也认为是在给定样本X的情况下的θ条件分布,而使π(θ|X)达到最大的值θMD称为 最大后验估计 ,类似于经典统计学中的 极大似然估计

综合起来看,则好比是人类刚开始时对大自然只有少得可怜的先验知识,但随着不断观察、实验获得更多的样本、结果,使得人们对自然界的规律摸得越来越透彻。所以,贝叶斯方法既符合人们日常生活的思考方式,也符合人们认识自然的规律,经过不断的发展,最终占据统计学领域的半壁江山,与经典统计学分庭抗礼。

条件概率 (又称后验概率)就是事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B),读作“在B条件下A的概率”。

比如上图,在同一个样本空间Ω中的事件或者子集A与B,如果随机从Ω中选出的一个元素属于B,那么这个随机选择的元素还属于A的概率就定义为在B的前提下A的条件概率:

联合概率:

边缘概率(先验概率):P(A)或者P(B)

贝叶斯网络(Bayesian network),又称信念网络(Belief Network),或有向无环图模型(directed acyclic graphical model),是一种概率图模型,于1985年由Judea Pearl首先提出。它是一种模拟人类推理过程中因果关系的不确定性处理模型,其网络拓朴结构是一个有向无环图(DAG)。

贝叶斯网络的有向无环图中的节点表示随机变量

它们可以是可观察到的变量,或隐变量、未知参数等。认为有因果关系(或非条件独立)的变量或命题则用箭头来连接。若两个节点间以一个单箭头连接在一起,表示其中一个节点是“因(parents)”,另一个是“果(children)”,两节点就会产生一个条件概率值。

例如,假设节点E直接影响到节点H,即E→H,则用从E指向H的箭头建立结点E到结点H的有向弧(E,H),权值(即连接强度)用条件概率P(H|E)来表示,如下图所示:

简言之,把某个研究系统中涉及的随机变量,根据是否条件独立绘制在一个有向图中,就形成了贝叶斯网络。其主要用来描述随机变量之间的条件依赖,用圈表示随机变量(random variables),用箭头表示条件依赖(conditional dependencies)。

此外,对于任意的随机变量,其联合概率可由各自的局部条件概率分布相乘而得出:

1. head-to-head

依上图,所以有:P(a,b,c) = P(a) P(b) P(c|a,b)成立,即在c未知的条件下,a、b被阻断(blocked),是独立的,称之为head-to-head条件独立。

2. tail-to-tail

考虑c未知,跟c已知这两种情况:

3. head-to-tail

还是分c未知跟c已知这两种情况:

wikipedia上是这样定义因子图的:将一个具有多变量的全局函数因子分解,得到几个局部函数的乘积,以此为基础得到的一个双向图叫做因子图(Factor Graph)。

通俗来讲,所谓因子图就是对函数进行因子分解得到的 一种概率图 。一般内含两种节点:变量节点和函数节点。我们知道,一个全局函数通过因式分解能够分解为多个局部函数的乘积,这些局部函数和对应的变量关系就体现在因子图上。

举个例子,现在有一个全局函数,其因式分解方程为:

其中fA,fB,fC,fD,fE为各函数,表示变量之间的关系,可以是条件概率也可以是其他关系。其对应的因子图为:

在概率图中,求某个变量的边缘分布是常见的问题。这问题有很多求解方法,其中之一就是把贝叶斯网络或马尔科夫随机场转换成因子图,然后用sum-proct算法求解。换言之,基于因子图可以用 sum-proct 算法 高效的求各个变量的边缘分布。

详细的sum-proct算法过程,请查看博文: 从贝叶斯方法谈到贝叶斯网络

朴素贝叶斯(Naive Bayesian)是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法。朴素贝叶斯原理简单,也很容易实现,多用于文本分类,比如垃圾邮件过滤。**朴素贝叶斯可以看做是贝叶斯网络的特殊情况:即该网络中无边,各个节点都是独立的。 **

朴素贝叶斯朴素在哪里呢? —— 两个假设

贝叶斯公式如下:

下面以一个例子来解释朴素贝叶斯,给定数据如下:

现在给我们的问题是,如果一对男女朋友,男生想女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下女生是嫁还是不嫁?

这是一个典型的分类问题,转为数学问题就是比较p(嫁|(不帅、性格不好、身高矮、不上进))与p(不嫁|(不帅、性格不好、身高矮、不上进))的概率,谁的概率大,我就能给出嫁或者不嫁的答案!这里我们联系到朴素贝叶斯公式:

我们需要求p(嫁|(不帅、性格不好、身高矮、不上进),这是我们不知道的,但是通过朴素贝叶斯公式可以转化为好求的三个量,这三个变量都能通过统计的方法求得。

等等,为什么这个成立呢?学过概率论的同学可能有感觉了,这个等式成立的条件需要特征之间相互独立吧!对的!这也就是为什么朴素贝叶斯分类有朴素一词的来源,朴素贝叶斯算法是假设各个特征之间相互独立,那么这个等式就成立了!

但是为什么需要假设特征之间相互独立呢?

根据上面俩个原因,朴素贝叶斯法对条件概率分布做了条件独立性的假设,由于这是一个较强的假设,朴素贝叶斯也由此得名!这一假设使得朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率。

朴素贝叶斯优点

朴素贝叶斯缺点

理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。

朴素贝叶斯模型(Naive Bayesian Model)的 朴素(Naive)的含义是"很简单很天真" 地假设样本特征彼此独立. 这个假设现实中基本上不存在, 但特征相关性很小的实际情况还是很多的, 所以这个模型仍然能够工作得很好。

新闻分类 GitHub: 点击进入

【 机器学习通俗易懂系列文章 】

从贝叶斯方法谈到贝叶斯网络

❹ 贝叶斯网络

贝叶斯网络是一种模拟人类推理过程中因果关系的不确定性处理模型,也是一些变量的联合概率分布的图形表示。通常包含两个部分,一个是贝叶斯网络结构图,它是一个有向无环图(DAG),其中图中的每个节点代表相应的变量,节点之间的连接关系代表了贝叶斯网络的条件独立语义。另一部分,就是节点和节点之间的条件概率表(CPT),也就是一系列的概率值。如果一个贝叶斯网络提供了足够的条件概率值,足以计算任何给定的联合概率,我们就称,它是可计算的,即可推理的。 什么是贝叶斯推断?使用贝叶斯方法处理不确定性,需要利用贝叶斯定理将先验分布更新至后验分布中,这无疑是最流行的方法之一。但还存在其他非贝叶斯方法,例如集中不等式就是非贝叶斯方法,它们允许计算置信区间和不确定性集合。

贝叶斯网络随机变量的连接方式主要有顺连、分连、汇连这三种连接形式。

基于python的pgmpy库构建贝叶斯网络,其步骤是先建立网络结构, 然后填入相关参数。 1.针对已知结构及参数,先采用BayesianModel构造贝叶斯网结构

这个贝叶斯网络中有五个节点: Pollution, Cancer, Smoker, Xray, Dyspnoea.

(‘Pollution’, ‘Cancer’): 一条有向边, 从 Pollution 指向 Cancer, 表示环境污染有可能导致癌症.

(‘Smoker’, ‘Cancer’): 吸烟有可能导致癌症.

(‘Cancer’, ‘Xray’): 得癌症的人可能会去照X射线.

(‘Cancer’, ‘Dyspnoea’): 得癌症的人可能会呼吸困难.

cancer_model
<pgmpy.models.BayesianModel.BayesianModel at 0x7f57c7f593d0>

Pollution: 有两种概率, 分别是 0.9 和 0.1.

Smoker: 有两种概率, 分别是 0.3 和 0.7. (意思是在一个人群里, 有 30% 的人吸烟, 有 70% 的人不吸烟)

Cancer: envidence 表示有 Smoker 和 Pollution 两个节点指向 Cancer 节点;

测试网络结构是否正确

在构建了贝叶斯网之后, 我们使用贝叶斯网来进行推理. 推理算法分精确推理和近似推理. 精确推理有变量消元法和团树传播法; 近似推理算法是基于随机抽样的算法.

Finding Elimination Order: : 100%|██████████| 1/1 [00:00<00:00, 1096.55it/s]
Eliminating: Pollution: 100%|██████████| 1/1 [00:00<00:00, 888.25it/s]
+-----------+---------------+
| Cancer | phi(Cancer) |
+===========+===============+
| Cancer(0) | 0.0320 |
+-----------+---------------+
| Cancer(1) | 0.9680 |
+-----------+---------------+

True

CPD of D:
+------+------+
| D(0) | 0.49 |
+------+------+
| D(1) | 0.51 |
+------+------+
CPD of G:
+------+---------------------+-----+---------------------+
| D | D(0) | ... | D(1) |
+------+---------------------+-----+---------------------+
| I | I(0) | ... | I(1) |
+------+---------------------+-----+---------------------+
| G(0) | 0.46320346320346323 | ... | 0.519650655021834 |
+------+---------------------+-----+---------------------+
| G(1) | 0.5367965367965368 | ... | 0.48034934497816595 |
+------+---------------------+-----+---------------------+
CPD of I:
+------+-------+
| I(0) | 0.512 |
+------+-------+
| I(1) | 0.488 |
+------+-------+
CPD of S:
+------+----------+---------------------+
| I | I(0) | I(1) |
+------+----------+---------------------+
| S(0) | 0.515625 | 0.48770491803278687 |
+------+----------+---------------------+
| S(1) | 0.484375 | 0.5122950819672131 |
+------+----------+---------------------+
CPD of L:
+------+--------------------+---------------------+
| G | G(0) | G(1) |
+------+--------------------+---------------------+
| L(0) | 0.5424430641821946 | 0.46034816247582205 |
+------+--------------------+---------------------+
| L(1) | 0.4575569358178054 | 0.539651837524178 |
+------+--------------------+---------------------+

❺ 关于输入几个植物特征的智能识别系统的贝叶斯网络公式

贝叶斯分类是统计学分类方法。它们可以预测类成员关系的可能性,如给定样本属于一个特定类的概率。
朴素贝叶斯分类[2]假定了一个属性值对给定类的影响独立于其它属性的值,这一假定称作类条件独立。
设定数据样本用一个 n 维特征向量X={x1,x2,,xn}表示,分别描述对n 个属性A1,A2,,An样本的 n 个度量。假定有m个类 C1,C2,,Cm 。给定一个未知的数据样本 X(即没有类标号),朴素贝叶斯分类分类法将预测 X 属于具有最高后验概率(条件 X 下)的类,当且仅当P(Ci | X)> P(Cj | X),1≤j≤m,j≠i 这样,最大化P(Ci | X)。其中P(Ci | X)最大类Ci 称为最大后验假定,其原理为贝叶斯定理:
公式(1)
由于P(X) 对于所有类为常数,只需要P(X | Ci)P(Ci)最大即可。并据此对P(Ci| X)最大化。否则,最大化P(X | Ci)P(Ci)。如果给定具有许多属性的数据集,计算P(X | Ci)P(Ci)的开销可能非常大。为降低计算P(X| Ci )的开销,可以做类条件独立的朴素假定。给定样本的类标号,假定属性值相互条件独立,即在属性间,不存在依赖关系,这样,
公式(2)
概率,可以由训练样本估值:
(1) 如果Ak是分类属性,则P(xk|Ci)=sik/si其中sik是Ak上具有值xk的类Ci的训练样本数,而si是Ci中的训练样本数。
(2) 如果Ak是连续值属性,则通常假定该属性服从高斯分布。因而
公式(3)
其中,给定类Ci的训练样本属性Ak的值, 是属性Ak的高斯密度函数,而 分别为平均值和标准差。
朴素贝叶斯分类算法(以下称为NBC)具有最小的出错率。然而,实践中并非如此,这是由于对其应用假定(如类条件独立性)的不确定性,以及缺乏可用的概率数据造成的。主要表现为:
①不同的检测属性之间可能存在依赖关系,如protocol_type,src_bytes和dst_bytes三种属性之间总会存在一定的联系;
②当连续值属性分布是多态时,可能产生很明显的问题。在这种情况下,考虑分类问题涉及更加广泛,或者我们在做数据分析时应该考虑另一种数据分析。
后一种方法我们将在以下章节详细讨论。
3 朴素贝叶斯的改进:核密度估计
核密度估计是一种普便的朴素贝叶斯方法,主要解决由每个连续值属性设为高斯分布所产生的问题,正如上一节所提到的。在[3]文中,作者认为连续属性值更多是以核密度估计而不是高斯估计。
朴素贝叶斯核密度估计分类算法(以下称K-NBC)十分类似如NBC,除了在计算连续属性的概率 时:NBC是使用高斯密度函数来评估该属性,而K-NBC正如它的名字所说得一样,使用高斯核密度函数来评估属性。它的标准核密度公式为
公式(4)
其中h=σ 称为核密度的带宽,K=g(x,0,1) ,定义为非负函数。这样公式(4)变形为公式(5)
公式(5)
在K-NBC中采用高斯核密度为数据分析,这是因为高斯密度有着更理想的曲线特点。图1说明了实际数据的概率分布更接近高斯核密度曲线。
图1 两种不同的概率密度对事务中数据的评估,其中黑线代表高斯密度,虚线为核估计密度并有两个不同值的带宽朴素贝叶斯算法在计算μc和σc时,只需要存储观测值xk的和以及他们的平方和,这对一个正态分布来说是已经足够了。而核密度在训练过程中需要存储每一个连续属性的值(在学习过程中,对名词性属性只需要存储它在样本中的频率值,这一点和朴素贝叶斯算法一样)。而为事例分类时,在计算连续值属性的概率 时,朴素贝叶斯算法只需要评估g一次,而核密度估计算法需要对每个c类中属性X每一个观察值进行n次评估,这就增加计算存储空间和时间复杂度,表1中对比了两种方法的时间复杂度和内存需求空间。
4 实验研究与结果分析
本节的目标是评价我们提出核密度评估分类算法对入侵审计数据分类的效果,主要从整体检测率、检测率和误检率上来分析。
表1 在给定n条训练事务和m个检测属性条件下,
NBC和K-NBC的算法复杂度

朴素贝叶斯 核密度
时间 空间 时间 空间
具有n条事务的训练数据 O(nm) O(m) O(nm) O(nm)
具有q条事务的测试数据 O(qm) O(qnm)

4.1 实验建立
在实验中,我们使用NBC与K-NBC进行比较。另观察表1两种算法的复杂度,可得知有效的减少检测属性,可以提高他们的运算速度,同时删除不相关的检测属性还有可以提高分类效率,本文将在下一节详细介绍对称不确定方法[4]如何对入侵审计数据的预处理。我们也会在实验中进行对比分析。
我们使用WEKA来进行本次实验。采用 KDDCUP99[5]中的数据作为入侵检测分类器的训练样本集和测试样本集,其中每个记录由41个离散或连续的属性(如:持续时间,协议类型等)来描述,并标有其所属的类型(如:正常或具体的攻击类型)。所有数据分类23类,在这里我们把这些类网络行为分为5大类网络行为(Normal、DOS、U2R、R2L、Probe)。
在实验中,由于KDDCUP99有500多万条记录,为了处理的方便,我们均匀从kddcup.data.gz 中按照五类网络行为抽取了5万条数据作为训练样本集,并把他们分成5组,每组数据为10000条,其中normal数据占据整组数据中的98.5%,这一点符合真实环境中正常数据远远大于入侵数据的比例。我们首
先检测一组数据中只有同类的入侵的情况,共4组数据(DOS中的neptune,Proble中的Satan,U2R中的buffer_ overflow,R2l中的guess_passwd),再检测一组数据中有各种类型入侵数据的情况。待分类器得到良好的训练后,再从KDD99数据中抽取5组数据作为测试样本,分别代表Noraml-DOS,Normal-Probe,Normal-U2R,Normal-R2L,最后一组为混后型数据,每组数据为1万条。
4.2 数据的预处理
由于朴素贝叶斯有个假定,即假定所有待测属性对给定类的影响独立于其他属性的值,然而现实中的数据不总是如此。因此,本文引入对称不确定理论来对数据进行预处理,删除数据中不相关的属性。
对称不确定理论是基于信息概念论,首先我们先了解一下信息理论念,属性X的熵为:
公式(6)
给定一个观察变量Y,变量X的熵为:
公式(7)
P(xi )是变量X所有值的先验概率,P(xi|yi )是给定观察值Y,X的后验概率。这些随着X熵的降低反映在条件Y下,X额外的信息,我们称之为信息增益,
公式(8)
按照这个方法,如果IG(X|Y)>IG(X|Y),那么属性Y比起属性Z来,与属性X相关性更强。
定理:对两个随机变量来说,它们之间的信息增益是对称的。即
公式(9)
对测量属性之间相关性的方法来说,对称性是一种比较理想的特性。但是在计算有很多值的属性的信息增益时,结果会出现偏差。而且为了确保他们之间可以比较,必须使这些值离散化,同样也会引起偏差。因此我们引入对称不确定性,
公式(10)
通过以下两个步骤来选择好的属性:
①计算出所有被测属性与class的SU值,并把它们按降序方式排列;
②根据设定的阈值删除不相关的属性。
最后决定一个最优阈值δ,这里我们通过分析NBC和K-NBC计算结果来取值。
4.3 实验结果及分析
在试验中,以记录正确分类的百分比作为分类效率的评估标准,表2为两种算法的分类效率。

表2 对应相同入侵类型数据进行检测的结果
数据集

算法 DOS
(neptune) Proble
(satan) R2L
( guess_passwd) U2R
(buffer_overflow)
检测率 误检率 整体检测率 检测率 误检率 整体检测率 检测率 误检率 整体检测率 检测率 误检率 整体检测率
NBC 99.5 0.2 99.79 98.3 0.1 99.84 97.3 0.8 99.2 95 1.8 98.21
K-NBC 99.5 0.2 99.96 98.3 0 99.96 97.3 0.2 99.81 71 0.1 99.76
SU+NBC 99.5 0 99.96 98.3 0.1 99.85 98 0.7 99.24 9 1.1 98.84
SU+K-NBC 99.5 0 99.96 98.3 0 99.96 98.7 0.2 99.76 85 0.1 99.81

根据表2四组不同类别的入侵检测结果,我们从以下三个方面分析:
(1)整体检测率。K-NBC的整体检测率要比NBC高,这是因为K-NBC在对normal这一类数据的检测率要比NBC高,而normal这一类数据又占整个检测数据集数的95%以上,这也说明了在上一节提到的normal类的数据分布曲线更加接近核密度曲线。
(2)检测率。在对DOS和PROBLE这两组数据检测结果,两个算法的检测率都相同,这是因为这两类入侵行为在实现入侵中占绝大部分,而且这一类数据更容易检测,所以两种算法的检测效果比较接近;针对 R2L检测,从表2可以看到,在没有进行数据预处理之前,两者的的检测率相同,但经过数据预处理后的两个算法的检测率都有了提高,而K-NBC的效率比NBC更好点;而对U2R的检测结果,K-NBC就比NBC差一点,经过数据预处理后,K-NBC的检测率有一定的提高,但还是比NBC的效果差一些。
(3)误检率。在DOS和Proble这两种组数据的误检率相同,在其他两组数据的中,K-NBC的误检率都比NBC的低。
根据表3的结果分析,我们也可以看到的检测结果与表2的分组检测的结果比较类似,并且从综合角度来说,K-NBC检测效果要比NBC的好。在这里,我们也发现,两种算法对R2L和U2L这两类入侵的检测效果要比DOS和Proble这两类入侵的差。这主要是因为这两类入侵属于入侵行为的稀有类,检测难度也相应加大。在KDD99竞赛中,冠军方法对这两类的检测效果也是最差的。但我们可以看到NBC对这种稀有类的入侵行为检测更为准确一点,这应该是稀有类的分布更接近正态分布。
从上述各方面综合分析,我们可以证明K-NBC作为的入侵检测分类算法的是有其优越性的。

表3 对混合入侵类型数据进行检测的结果
数据集

算法 整体检测 分类检测
Normal Dos Proble R2L U2R
检测率 误检率 检测率 误检率 检测率 误检率 检测率 误检率 检测率 误检率 检测率 误检率
NBC 98.14 1.8 98.2 0.8 99.8 0 99.8 0 90 0 86.7 1.8
K-NBC 99.78 0.2 99.8 2.3 99.8 0 99.8 0 96 0 73.3 0.1
SU+NBC 97.99 2.0 98 0.8 99.8 0 99.8 0 90 0 86.7 1.9
SU+K-NBC 99.79 0.2 99.8 1.9 99.8 0 99.8 0 96 0 80 0.1

5 结论
在本文中,我们用高斯核密度函数代替朴素贝叶斯中的高斯函数,建立K-NBC分类器,对入侵行为进行检测,另我们使用对称不确定方法来删除检测数据的中与类不相关的属性,从而进一步改进核密度朴素贝叶斯的分类效率,实验表明,对预处理后的审计数据,再结合K-NBC来检测,可以达到更好的分类效果,具有很好的实用性。同时我们也注意到,由于入侵检测的数据中的入侵行为一般为稀有类,特别是对R2L和U2R这两类数据进行检测时,NBC有着比较理想的结果,所以在下一步工作中,我们看是否能把NBC和K-NBC这两种分类模型和优点联合起来,并利用对称不确定理论来删除检测数据与类相关的属性中的冗余属性,进一步提高入侵检测效率。

❻ 初识贝叶斯

什么贝叶斯定理、贝叶斯方法、贝叶斯网络这种,外行人一听头就疼,这完全没有乘法分配律乘法结合律来的亲民啊!实际上,他确实不亲民(摊手)

那我们就从如何着手去处理贝叶斯网络为目标, 好好看,好好学 (这是文章基于的框架结构,在此基础上进行了补充说明)。

咱先整抓球,一个不透明的带子,里面有4个除了颜色完全相同的球:2红1绿1蓝。此时你去随手抓,那问你抓到各个颜色球的概率是多少?我想是个正常人都会说:那不50%、25%、25%?这是不论你取多少次,概率θ始终不变的事件,即不随观察结果X的变化而变化。

显然啊!那不然会是什么呢?

这种观点长期统治着人们,或者说,统治着正常人,这叫频率派观点。直到有个叫Thomas Bayes的人出来搅局。

贝叶斯不介绍了,生前民间学术“屌丝”,身后颠覆了概率史啊。这里说一下他最终发表的一篇多年后轰动世界的文章:An essay towards solving a problem in the doctrine of chances(机遇理论中一个问题的解)

回到上面这个问题,袋子里取红球的概率θ是多少?正常人都说50%,贝叶斯说“NO!”。他认为取的红球的概率是个不确定的值,因为其中含有机遇的成分。

是不是不好理解了?那我们换个例子来讲(这个抓球有什么机遇,我也不懂,但大佬都以这些开头,所以咱换个例子)

78泽干了两年程序员,现在想自己创业开个外包公司。这个结果无非“走向人生巅峰”和“欠一屁股债”,要么成功要么失败。现在我们大家来估计一下他成功的概率有多大?你们可能会说:“这谁啊,两年就创业,吓他个鬼,不可能的。成功几率最多5%。”而我对他的为人比较了解,他有想法,有方法,有思路,还有毅力,能吃苦,还有情调,有凝聚力,还为他人着想等,那我就估计他成功的概率有75%以上。

这种不同于最开始的“非黑即白、非0即1”的思考方式,就是贝叶斯式的思考方式。

【频率派】把需要推断的参数θ看作是固定的未知常数,即概率虽然是未知的,但最起码是确定的一个值,同时,样本X是随机的,即不管球几红几绿,事件的概率θ一定。所以频率派重点研究样本空间,大部分的概率计算都是针对样本X的分布;

【贝叶斯派】认为参数θ是随机变量,而样本X是固定的。由于样本X固定,所以他们重点研究的是参数θ的分布。

这样,贝叶斯派提出了一个思考问题的固定模式:

先验分布π(θ)+ 样本信息X ==> 后验分布π(θ|x)

这意味着,新观察到的样本信息将修正人们以前对事物的认知。换而言之,在得到新的样本信息前,人们对θ的认知是先验分布π(θ),在得到新的样本信息X后,人们对θ的认知受其影响变为π(θ|x)。

先验信息一般来源于经验和历史资料,比如在S7以前的SKT VS RNG,解说总会根据历年比赛结果进行一个胜负的预判来相应解说。但从S7,S8这两个赛季后,发现韩国队不行了!那么现在你再看SKT VS RNG,可就不一定了不是吗?那是不是就是X影响了π(θ)得到了π(θ|x)。

后验分布π(θ|x)一般也认为是在给定样本X的情况下的θ条件分布,而使π(θ|x)达到最大的值θMD,这个θMD称谓最大后验估计,类似于统计学的极大似然估计。

这里插曲一下,似然和概率,很多人其实都不明白这是啥区别。似然(likelihood)在非正式场合中和概率(probability)几乎相同。但在统计学中完全不同。概率是在特定环境下某件事发生的可能性,也就是结果没有产生之前依据环境所对应的参数来预测某件事情发生的可能性;而似然正好相反,是在确定的结果下去推测产生这个结果的可能环境(参数)。

结果和参数相互对应的时候,似然和概率在数值上是相等的。 了解更多似然,点击这里

当然除了上述思考模式,还有举世闻名的贝叶斯定理。

先回顾几个名词

条件概率(又称后验概率)就是事件A在另外一个事件B已经发生的条件下发生的概率P(A|B):

自己花几个圆圈就能推导出这个公式了。

联合概率表示两个事件共同发生的概率:

边缘概率(又称先验概率)是某个事件发生的概率。边缘概率是这样得到的:在联合概率中,把最终结果中那些不需要的事件通过合并成它们的全概率从而消去它们(对离散随机变量用求和得全概率,连续随机变量用积分得全概率),这称为边缘化(marginalization),比如A的边缘概率表示为P(A),B的边缘概率表示为P(B)。

现在考虑问题:P(A|B)是在B发生的情况下A发生的可能性。

(1)首先,B发生之前,对事件A发生的基本概率判断为A的先验概率P(A);

(2)其次,事件B发生后,我们对事件A发生概率重新评估,称为A的后验概率P(A|B);

(3)类似,事件A发生前,对B的先验概率P(B);

(4)事件A发生后,B后验概率P(B|A)。

贝叶斯定理如下:

推导证明如下:

上式两边同时除以P(B),若P(B)非零,变得到贝叶斯定理公式表达式。

上述为传统的贝叶斯公式写法,还有另一种写法,称之为贝叶斯推断。

对条件概率公式进行变形,得到如下形式:

P(A)称为先验概率,P(A|B)为后验概率,而P(B|A)/P(B)称之为可能性函数(likelyhood),这是一个调整因子,使得预估概率更接近真实概率。

贝叶斯推断的含义:我们先预估一个先验概率,然后加入实验结果,看这个实验到底是增强还是削弱了先验概率,由此得到更接近事实后验概率。

这里,可能性函数>1,意味着先验概率被增强,事件A的发生可能性变大;可能性函数=1,意味着B事件无助于判断事件A的可能性;可能性函数<1,意味着先验概率被削弱,事件A的可能性变小。

举例加深理解:

【1】水果糖问题

两个一模一样的碗,一号碗中有30颗水果糖和10颗巧克力,二号碗有水果糖和巧克力各20颗。现在随机选择一个碗,从中摸出一颗糖,发现时水果糖。请问这个水果糖来自一号碗的概率是多少?

解:我们假定,H1表示碗一,H2表示碗二,有条件已知P(H1)=P(H2),即在取出水果糖之前,这两个碗被选中的概率相同。因此P(H1)=0.5,此为先验概率。

再假定E表示水果糖,所以问题变为已知E的情况下,来自碗一的概率有多大:求P(H1|E)。我们把这个称为后验概率,即E事件发生后,对P(H1)的修正。

根据条件概率公式,得到

已知:P(H1)=0.5,P(E|H1)=0.75,那么求出P(E)就可以得到答案,根据全概率公式(推导根据条件概率公式推就行了)

得到:

将已知带入得P(E)=0.625,最后将结果带入原方程,得到P(H1|E)=0.6,也就是说取出水果糖后,H1事件的可能性得到了增强(P(E|H1)/P(E)=0.75/0.625=1.2>1)。

贝叶斯公式还有一个最经典也是目前最广泛的应用:拼音纠错,谷歌的拼音检查就是基于贝叶斯方法。

《人工智能:现代方法》作者之一Peter Norvig曾写一篇介绍如何写一个拼写检查的文章( 原文 ),使用的也是贝叶斯方法。

用户输入一个单词,可能拼写正确,也可能拼写错误。如果把拼写正确的情况记做c,错误记做w,那么拼写检查要做的事情就是:在发生w的情况下,试图推断出c,换而言之,就是已知w,然后在若干个备选方案中,找出可能性最大的那个c,即求P(c|w)的最大值。

由于对于所有备选的c来说,对应的都是同一个w,所以它们的P(w)相同,因此我们只需要最大化P(w|c)*P(c)。

其中P(c)表示某个正确的单词出现的“概率”,它可以用“频率”代替。如果我们有一个足够大的文本库,那么这个文本库中每个单词的出现频率,就相当于它的发生概率。某个词的出现频率越高,P(c)就越大。比如在你输入一个错误的单词“tes”的时候,系统更倾向于“tea”,而不是“tee”,因为tea更常见。

当然这其中要是深究,还有更多的可能性,比如说错误字母与正确字母在键盘上的位置,也许你是按错了所以会拼错,但实际上你要拼写的单词就是那个频率低的单词,是不是?在这里,初学,咱先放一放。

P(w|c)表示在试图拼写c的情况下,出现拼写错误w的概率。为了简化问题,假定两个单词在字形上越接近,就越有可能拼错,P(w|c)就越大。举例来说,相差一个字母的拼法,就比相差两个字母的拼法,发生概率越高。你想拼写“july”,错误拼成“julw”的可能性就比错拼成“jullw”高很多。一般把这种问题称为“编辑距离”。

贝叶斯网络(Bayesian Network),又称信念网络(Belief Network),或有向无环图模型,十一中概率图模型。它是一种模拟人类推理过程中因果关系的不确定性处理模型,其网络拓扑结构是一个有向无环图(DAG,direvted acyclic graphical)。

贝叶斯网路中节点表示随机变量,认为有因果关系(或非条件独立)的变量或命题则用剪头来连接。

例如,假设节点E直接影响到节点H,即E-->H,则用从E指向H的箭头建立节点E到节点H的有向弧(E,H),权值(即连接强度)用条件概率P(H|E)来表示。

简而言之,把某个研究系统中涉及的随机变量,根据是否条件独立绘制在一个有向图中,就形成了贝叶斯网络。其主要用来描述随机变量之间的条件依赖,用圈表示随机变量(random variables),用箭头表示条件依赖(conditional dependencies)。

关于随机变量,这里不同于普通公式中的x,z那种未知数,之前专门研究过,但是参考的网址找不到了。随手记了一些笔记,分享一下(字丑):

令G=(I,E)表示一个有向无环图(DAG),其中I代表图形中所有的节点的集合,而E代表有向连接线段的集合,且令X=(Xi),i∈I为其有向无环图中某一节点i所代表的随机变量,若节点X的联合概率可以表示成:

则称X为相对于一有向无环图G的贝叶斯网络,其中,pa(i)表示节点i的“因”,也可以理解为“父节点”。

给订如下图所示的一个贝叶斯网络:

由图可知:

(1)x1,x2,......,x7的联合分布为:

(2)x1和x2独立(head-to-head);

(3)x6和x7在x4给订的条件下独立(tail-to-tail)。

根据上图,(1)很好理解,(2、3)所述的条件独立是什么意思呢?其实2、3点是贝叶斯网络中3个结构的其中两种。为了说清楚这个问题,需要引入D-Separation(D-分离)这个概念。

D-Separation是一种用来判断变量是否条件独立的图形化方法。换而言之,对于一个DAG,D-Separation方法可以快速的判断出两个节点之间是否条件独立。

有:P(a,b,c)=P(a)* P(b)* P(c|a,b)成立,化简如下:

在c未知的条件下,a、b被阻断(blocked),是独立的,称之为head-to-head条件独立,对应本节图1的x1,x2独立。

考虑c未知和已经两种情况:

1、在c未知的时候,有:P(a,b,c)=P(c)P(a|c)P(b|c),此时,无法得出P(a,b)=P(a)P(b),即c未知时,a、b不独立;

2、在c已知的时候,有:P(a,b|c)=P(a,b,c)/ P(c),然后将P(a,b,c)=P(c)P(a|c)P(b|c)带入此式中,得到:P(a,c|c)=P(a,b,c)/ P(c)=P(c)P(a|c)P(b|c)/P(c)=P(a|c)P(b|c),即c已知时,a、b独立。

所以,在c给定的条件下,a、b被blocked,式独立的,称之为tail-to-tail条件独立,对应本节图1中“x6,x7在x4给定的条件下独立”。

分c未知和已知两种情况:

1、c未知时,有:P(a,b,c)=P(a)*P(c|a)*P(b|c),但无法推出P(a,b)=P(a)P(b),即c未知时,a、b不独立;

2、c已知时,有:P(a,b|c)=P(a,b,c)/ P(c),且根据P(a,c)=P(a)P(c|a)=P(c)P(a|c),可化简得到:

所以在给定c的条件下,a、b被blocked,是独立的,称之为head-to-tail条件独立。

head-to-tail其实就是一个链式网络,在xi给定的条件下,xi+1的分布和x1,x2,...,xi-1条件独立。这意味着什么?这说明xi+1的分布状态只和xi有关,和其他变量都无关!通俗一点说,当前状态只跟上一状态有关,跟上上次或上上上上上上上次状态都无关!这种顺次演变的随机过程,就叫做马尔科夫链(Markov chain)。有:

将上述节点推广到节点集,则:对于任意的节点集A,B,C,考察所有通过A中任意节点到B中任意节点的路径,若要求A,B条件独立,则需要所有的路径都被blocked,即满足下列两个前提之一:

A和B的“head-to-tail”和“tail-to-tail”路径都通过C;

A和B的“head-to-head”路径不通过C及C的子孙;

最后举例说明上述D-Separation的3种情况(即贝叶斯网络的3种结构形式):

Factor Graph是概率图的一种,概率图有多重,最常见的就是Bayesian Network和Markov Random Fields(马尔科夫随机场)。

在概率图中,求某个变量的边缘分布是最常见的问题。这个问题有很多种求解方法,其中之一就是可以把Bayesian Network和Markov Random Fields转换成Factor Graph,然后用sum-proct算法求解。

以下图为例:

对于上图,在一个人已经呼吸困难(dyspnoea)的情况下,其抽烟(smoking)的概率是多少?

P(smoking | dyspnoea = yes)= ?

继续推算如下:(这里我就不自己码了,好多箭箭头有点麻烦的,还是用原图简单明了)

对上述推导过程作解释如下:

1.第二行:对联合概率关于b,x,c求和(在d=1的条件下),从而消去b,x,c,得到s和d=1的联合概率;

2.第三行:最开始,所有变量都在sigma(d=1,b,x,c)的后面,但由于P(s)跟“d=1,b,x,c”都没关系,可以提到式子的最前面。而且P(b|s)和x、c没关系,所以也可以把它提出来,放到sigma(b)后,从而式子的右边剩下sigma(x)和sigma(c)。

(ps:这块看能看明白,至于为什么sigma(x)和sigma(c)不能写在一起,我也,哈哈哈~等之后再来补空挡,这里先记着。)

上图中Variable elimination表示的是变量消除的意思。为此引入因子图的概念。

定义异常的晦涩难懂,你光看着名字你就摸不着头脑,所以咱先通俗来讲,所谓因子图就是对函数进行因式分解得到的一种概率图。一般内含两种节点:变量节点和函数节点。众所周知,一个全局函数通过因式分解能够分解为多个局部函数的乘积,这些局部函数和对应的变量关系就体现在因子图上。

举例说明,现有一全局函数,其因式分解方程为:

其中fA、fB、fC、fD、fE为各函数,表示变量之间的关系,可以是条件概率也可以是其他关系(如Markov Random Fields中的势函数)。

其因子图为:

在因子图中,所有的顶点不是变量节点就是函数节点,边线表示他们之间的函数关系。

提及马尔科夫随机场,就再补充一些概念:

我们知道,有向图模型,称之为贝叶斯网络。但有些情况下,强制对某些节点之间的边增加方向是不合适的。使用没有方向的无向边,形成了无向图模型(Undirected Graphical Model,UGM),又被称为马尔科夫随机场或者马尔科夫网络(MRF or Markov Network)。

回归本文主旨,首先我们举例说明如何把贝叶斯网络(和MRF),以及把马尔科夫链、隐马尔科夫模型转换成因子图,以上图为例,根据各个变量对应的关系,可得:

其对应的因子图为(以下两种皆可):

有上述例子总结出贝叶斯网络构造因子图的方法:

·贝叶斯网络中的一个因子对应因子图中的一个节点

·贝叶斯网络中的每一个变量在因子图上对应边或者半边

·节点g和边x相连当且仅当变量x出现在因子g中

我把绘图的思考过程写下来,你跟着画一遍就会明白:

1.找出已存在的先验概率,图中为P(u)和P(w),那么因子对应节点,所以先画出P(u)和P(w)的节点,就是两个框;然后因子P(u)中出现的变量是u,那么由P(u)节点引出一条边,这条边就是u,同理P(w)引出w边;

2.发现因子P(x|u,w)知,x是u和w下的条件概率,故做节点P(x|u,w),然后将边u和w与之相连,并有该节点引出x边;

3.有因子P(y|x)和P(z|x)发现基于条件x引出两个变量y和z,那么此时需要将X边拆分成两条边(我猜想这个可能就叫半边,没有专门去查),并分别接入到P(y|x)和P(z|x)节点,再由各自节点对应引出y边与z边,结束作图。

对马尔科夫链转换的因子图和隐马尔科夫模型转换而成的因子图,做法相同。这里等以后专门讲马尔科夫的时候再仔仔细细说。这里把图贴出来给大家了解一下(应该可以很快看明白):

到这,我们算把因子图讲透了,现在看看维基网络上是这样定义因子图的:将一个具有多变量的全局函数因子分解,得到几个局部函数的乘积,以此为基础得到的一个双向图叫做因子图。

怎么样,这样直接看定义,你懂吗?

我们已经学会如何画因子图了,下面来思考这样一个问题:如何由联合概率分布求边缘概率分布?

这里给出公式:

对Xk以外的其他变量的概率求和,最终剩下Xk的概率。这就是该定义的原理。你明白了吗?我有点迷糊反正,可能说成话好理解,但是这个公式未免也太模糊了点(f真的万能)。

其实可以这么理解:

如果有:

那么:

就是说把除了xk以外的所有随机变量的概率求出来,这个f就表示一个多项式,是关于f括号里面x的。然后概率上面有一横,表示的是不发生概率。

好吧,其实这块我也没太明白,先埋个坑,以后回来填。

现在假定我们要计算:

同时,f能被分解成如下因子图(看到这里你大概能明白一点我上面说的f是多项式是什么意思了):

我们都知道乘法分配律:a * b + a * c = a * (b + c),等号左边两乘一加,等号右边一加一乘,效率不用多说。现在我们就借助分配律的思想,把因子图给分配咯!

怎么看公因子很简单,例如X3是有f1(x1)和f2(x2)通过f3这个函数得来的(即因子图那节所述,P(x3|x1,x2)),而之后的f5需要x3做因子(条件),所以自然左边这个框就成了公因子。

因为变量的边缘概率等于所有与他相连的函数传递过来的消息的乘积,所以计算得到:

观察上述计算过程,可以发现类似于“消息传递”的观点,且总共有两个步骤:

1.对于f的分解图,根据左框(蓝色)、右框(红色)所包围的两个box外面的消息传递:

2.根据红蓝框为主的两个box内部的消息传递:

看上图消息传递的方向(箭头),根据

我们可以推导出:

这样就将一个概率分布写成了两个因子的乘积,而这两个因子可以继续分解或者通过已知条件得到。这种利用消息传递的观念计算概率的方法就是sum-proct算法。基于因子图可以用该算法高效地求出各个变量的边远分布。

sum-proct算法,又称belief propagation,有两种消息:

一种是变量(variable)到函数(function)的消息 如下图所示:

此时,

另一种是函数到变量的消息 如下图所示:

此时,

如果因子图是无环图,则一定可以准确地求出任意一个变量的边远分布;如果是有环图,则无法用该算法准确求出边远分布。解决方法有3个:

1、删除贝叶斯网络中的若干边,使其不含有无向环

2、重新构造没有环的贝叶斯网络

3、选择loopy belief propagation算法(sum-proct的递归版算法),该算法选择环中某个消息,随机赋初值,然后用sum-proct算法,迭代下去,因为环的存在所以一定会达到赋值的消息,然后更新该消息,继续迭代,直至没有消息改变为止。缺点是不能确保收敛。

最后,该算法有个类似的max-proct算法,弄懂了sum的,max的几乎完全一样。另这两个算法也能够应用到隐马尔科夫模型(hidden Morkov models)上。至于马尔科夫系列,下个专题咱再见~

❼ 贝叶斯网络基本原理

贝叶斯网络又称信念网络,是有向无环图的网络拓扑结构和贝叶斯概率方法有机结合的模型表示,描述了各个数据项及其相互间的依赖关系。一个 BN 包括了一个拓扑结构模型和与之相关的一组条件概率参数。结构模型是一个有向无环图,每个节点则表示一个随机变量,是对于状态、过程、事件等实体的某个特性的形象描述,其中的有向边则表示随机变

量之间的条件依赖关系。BN 中每个节点( 除根节点外) 都有一个给定其父节点情况下的条件概率分布。2. 1. 1 贝叶斯网络定理

BN 是一种概率网络,即基于概率推理的图形化网络,这个概率网络的基础是贝叶斯公式。我们先来看一看贝叶斯基本公式。

定义 2. 1 条件概率: 设 X、Y 是两个事件,且 P( X) >0,称

基于BN+GIS新技术的突水态势研究

为在事件 X 发生的条件下事件 Y 发生的条件概率。

定义 2. 2 联合概率: 设 X,Y 是两个事件,且 P( X) >0,它们的联合概率为:

基于BN+GIS新技术的突水态势研究

定义2.3全概率公式:设试验E的样本空间为S,X为E的事件,Y1,Y2,…,Yn为E的一组事件,满足:

基于BN+GIS新技术的突水态势研究

定义2.4贝叶斯公式:根据定义2.1、定义2.2和定义2.3,很容易推得众所周知的贝叶斯公式:

基于BN+GIS新技术的突水态势研究

2. 1. 2 贝叶斯网络的拓扑结构

BN 是一个具有概率分布的有向无环图( Directed Acyclic Graph) ,其中每个节点代表一个数据变量或者属性,节点间的弧段代表数据变量( 属性) 之间的概率依赖关系。一条弧段由一个数据变量( 属性) X 指向另外一个数据变量( 属性) Y,说明数据变量 X 的取值可以对数据变量 Y 的取值产生影响。既然是有向无环图,因此 X,Y 间不构成有向回路。在 BN 当中,连接两个节点的一条弧 XY 中的弧头节点( 直接的原因节点) X 叫做弧尾节点( 结果节点) Y 的双亲节点( Parents) ,Y 叫做 X 的孩子节点( Children) 。如果从节点 A 有一条有向通路指向 B,则称节点 A 为节点 B 的祖先( Ancestor) ,同时称节点 B 为节点 A 的后代( Descendent) 。

BN 能够利用简单明了的图形表达方式定性地表示事件间复杂的概率关系和因果关系,在给定某些先验信息后,还可以定量地表示这些因果概率关系。BN 的拓扑结构通常是根据具体的问题和研究对象来确定的。目前如何通过结构学习自动确定和优化网络的拓扑结构是 BN 的一个研究热点。

2.1.3 条件独立性假设

条件独立性假设是BN进行定量推理的理论基础,可以减少先验概率的数目,从而大大地简化推理和计算过程。

BN的条件独立性假设的一个很重要的判据就是着名的分隔定理(D-Separation):

定义2.5阻塞:G=(V(G),E(G))为一个有向非循环图,s是其中的一条链。当s包含3个连续的节点x,y,z,满足以下3种情况之一,我们称s被节点集合W(WV(G))阻塞:

(1)z∈W,s上存在弧x→z和z→y;

(2)z∈W,s上存在弧x←z和z→y;

(3)s上存在弧x→z和z←y,σ(z)∩W=,σ(z)表示z以及z的所有子孙节点的集合。

图2.1 阻塞的3种情形

定义2.6阻塞集:两个节点x和y间的所有路径都被节点集合Z所阻塞,则称集合Z为x,y两个节点间的阻塞集。

定义2.7D-Separation:令X,Y和Z是一个有向无环图G中3个不相交节点的子集,如果在集合X和Y中所有节点间的所有路径都被集合Z所阻塞,则称集合X,Y被Z集合(d-separation),表示为<X,Y|Z>G,也称Z为X和Y的切割集。否则,称在给定集合Z下集合X和Y的图形依赖。

这个判据指出,如果Z隔离了X和Y时,那么可以认为X与Y是关于Z条件独立的,即:P(X|Y,Z)=P(X|Y)。

❽ 用GeNIe2.0软件如何构建贝叶斯网络各节点的先验概率怎么输入到软件中啊

鼠标放在节点上,点击右键,选择 Node Properties,选择 Definition 选项卡,,在该页面内输入条件概率。

❾ 贝叶斯决策论及贝叶斯网络

对于一个数据进行分类,那么数据的属性信息称为x,如果知道后验概率的情况下即能得到确定x的情况下分类为ci的概率。这时我们还需要一个损失的权值,λij称为i错判为j的损失(λii为0,一般λij都相等=1但具体情况可以具体分配),由前边得到的后验概率来乘上这个λ的参数这就叫做条件风险(conditional risk)。

那么我们可以设计一个映射关系h,从x->c可以将结果带入条件风险,求整体风险最小。
但是其中后验概率很难在现实任务中取到,所以引入机器学习的目标的就是去训练这样一个后验概率(从大量的样本数据中)当然也有两种方式:

可以看到前边判别类别的决策树,bp,svm都是判别式模型。(从这里看出我们的终极目标还是去计算 p(c|x) ,符合现实的要求。)

根据贝叶斯定理,要求联合概率分布,可以通过 p(c )*p(x|c)/p(x) 来得到,前者是类先验概率,后者是类条件概率,或者称似然。
p(x) 是用于归一化的证据因子,对于给定的样本x,证据因子和类标记无关。(证据因子的存在知识为了保证各类别的后验概率的总和为1,所以在固定x的情况下这一项相当于常数,在比较时不做考虑)

但如果x样本的属性很多或者是一个连续值,那么样本个数是不可能完全模拟到所有的取值的,更不用说还要去计算他们出现的联合概率了,也就是说得到的 p(x|c) 会有很多零值。
那么无法通过样本来进行模拟分布,可以用mle(极大似然估计)的方法,通过设定一个通用的分布函数(如:正态分布,不一定是正态,所以这个假设存在一定误差,或者说我们在指定假设分布形式时需要参考一定的先验知识(也就是我们训练数据的风格))然后通过训练分布中的参数来让极大似然最大。

1.朴素贝叶斯分类器:(naïve bayes classification)
条件:
将所有的属性假设为相互独立也就是每个属性独立地对分类结果发生影响,这个想法很天真,很梦幻。
当然有了这个假设就很好计算了,计算联合分布的过程:通过训练集D来得到类先验概率然后再得到类条件概率。对于离散的取值数据量够可以直接用取值在训练集D中的概率直接估计,对于离散取值过多,或者是连续取值的情况可以用最大似然来做估计。
然后通过计算和比较 p(c=1,x) 和 p(c=2,x) 的大小,来或者最后输出c是判为1还是2。
因为离散取值会因为在数据集中找不到而变成概率为0,这样会影响所有的判断,这样就可以通过一个平滑处理(如:拉普拉斯修正)来将其修正为 (Dci+1)/(Dc+Nx) ,Dci为类别为c,x属性取值为i的个数,Nx为属性x的可能的取值数。同理对于类先验也要进行平滑处理。(这样的平滑操作算是一种先验,而且随着样本集增大影响逐渐减少的趋向于真实值。)

2.半朴素贝叶斯分类器(semi-naïve bayes classification)
条件:
既然所有属性都假设为相互独立过于天真,那么我们假设一种独依赖,也就是假设每一个属性在类别之外最多仅依赖于一个其他属性。我们称这种假设为semi-naïve 的假设。
那么这样的独依赖也会有一些设计的方式:
1.都依赖于一个相同的父属性(SPODE);
2.随机依赖于除自己以外的其他的属性,但要让生成的树达到最大的权值(权值由两个属性之间的条件互信息来决定),构成最大带权生成树(TAN)。
但是因为有无环的性质,所以无论哪一种最后一定会有一个属性是没有父依赖的。

3.非朴素贝叶斯--贝叶斯网络:(放弃之前“天真”的假设)

条件:
前边半朴素通过图连接来刻画属性之间的依赖关系,那么同样贝叶斯网络也在用这种有向无环图来刻画属性之间的依赖关系,并用条件概率表(CPT,conditional probability table)作为边的参数也就是(整个贝叶斯网络的参数)主要是子属性和父属性相对应的条件概率。而一个属性他的父属性个数没有任何限制。
问题:
但这样不如上一个半朴素贝叶斯结构基本固定直接遍历搜索空间也不会很大,可以用最大边的方式构建贝叶斯网络,也就是说这样的网络结构很难去构建和生成,主要是用似然损失+构造损失(参数个数*参数的精度)作为损失函数来进行优化,但是这直接求解是一个NP难的问题,这样就有两种方式第一种:贪心法,通过初始化一个网络结构,然后每次调整一个边(增加,删除或调整方向)使得loss变化最大,直到最后评分函数无法在降低。(当然这样的一个初始化网络结构就会变得很重要)第二种:通过给网络结构添加约束,比如将网络结构限定为树形结构等。
方法:
除了之前我们用作的分类问题,还可以做扩展到一个推断的问题,比如蒙着眼摸出西瓜的根蒂,形状,大小,能推断出它的色泽到底是青绿还是黄绿,是好瓜还坏,甜度如何等等。而且还可以直接精确计算出后验概率,但是当网络结点很多,连接又很稠密,而且查询的属性又含有依赖关系的时候,在短时间内计算出准确的结果会很难。所以我们通过借助近似的方式推断结果。(我们只想知道哪种可能性大得多,具体大多少不是我们要求的结论)
这种近似的做法就是吉布斯采样方法,固定我们获得的证据属性E,然后通过初始化一个q0,接着对于q0中的某一个属性根据其他的属性不变,根据计算得到的条件概率进行采样。这是一个马尔科夫链(marcov chain),性质:在经过t次的采样之后,马尔科夫会收敛于一个平稳分布,而这个平稳分布正是我们要求的那个 p(Q|E=e) 的分布。这样我们就可以通过吉布斯采样来得到一个模拟化的分布得到q最有可能的取值。(或者给定q, p(q|E=e) 估计的概率是多少)

隐变量介绍以及解决方法:
上诉还有一个问题那就是属性缺失的情况下怎么办,我们的模型网络还能创建得出来吗?也就是说存在隐变量(latent variable)该怎样解决这样的问题?
EM(Expectation-Maximization)算法是常用的估计参数隐变量的方法。
主要的思想就是:隐变量和模型参数是我们要求的,而二者之间存在相互依赖的关系,也就是不知道隐变量无法求出模型参数,不知道模型参数也无法反推出隐变量。那如果是一种优化迭代算法的话,初始化隐变量,然后训练得到最优的参数,然后通过固定最优的参数再反过来训练到最优的隐变量。直到最后收敛到一个局部最优解。(所以这种算法求解的结果是和 初始值关系比较大的局部最优解,如果能找到一个接近全局最优解的初始值,或者在接受解的概率上做调整不至于过快收敛,可能可以得到一个更好的解。)

参考文献:西瓜书-贝叶斯决策论

❿ 贝叶斯网络的简介

贝叶斯网络又称信度网络,是Bayes方法的扩展,是目前不确定知识表达和推理领域最有效的理论模型之一。从1988年由Pearl提出后,已经成为近几年来研究的热点.。一个贝叶斯网络是一个有向无环图(Directed Acyclic Graph,DAG),由代表变量节点及连接这些节点有向边构成。节点代表随机变量,节点间的有向边代表了节点间的互相关系(由父节点指向其子节点),用条件概率进行表达关系强度,没有父节点的用先验概率进行信息表达。节点变量可以是任何问题的抽象,如:测试值,观测现象,意见征询等。适用于表达和分析不确定性和概率性的事件,应用于有条件地依赖多种控制因素的决策,可以从不完全、不精确或不确定的知识或信息中做出推理。