一. 基本概念
要掌握C-F模型首先需要了解可信度的概念,可信度是根据经验对一个事物或现象为真的相信程度,说白了就是有多大把握相信一个事情。由于可信度不可避免地带有较大主观性和经验性,难以把握准确性。C-F模型便是基于可信度表示的不确定性推理的基本方法。
不确定性推理主要有两种不确定性,即关于知识的不确定性和关于证据的不确定性。
C-F模型中关于知识的不确定性的表示方法为“IF E THEN H (CF(H,E))”。这样的式子后面的括号中都会有一个数值,这个数值叫可信度因子,它的取值范围为[-1,1]。可信度因子又被称为静态强度,即当E所对应的证据为真时对H的影响程度。
若CF(H,E) > 0,CF(H,E)的值越大,则证据的出现越是支持H为真;若CF(H,E) < 0,CF(H,E)的值越小,则证据的出现越是支持H为假;若CF(H,E)=0,则证据的出现与否与H无关。
C-F模型中关于证据的不确定性的表示方法为“CF(E)”,CF(E)的值便是证据E的可信度,它的取值范围为[-1,1]。可信度又被称为动态强度,即证据E当前的不确定性程度。
对于初始证据,若所有观察S能肯定它为真,则CF(E) = 1。若肯定它为假,则CF(E) = -1。若以某种程度为真,则 0 < CF(E) < 1。若以某种程度为假,则 -1 < CF(E) < 0 。若未获得任何相关的观察,则 CF(E) = 0。
二. 必背公式
上面这些基本概念是不是看着一头雾水?
没错,确实很抽象,但是这并不妨碍我们把题做出来,咱们真正需要重点掌握的是接下来的公式。
就硬背,干就完了!
1. 证据不确定性的组合算法
组合证据按照逻辑运算与(AND)和或(OR)可以分为合取运算和析取运算,其公式如下:
合取运算:
析取运算:
记忆口诀:合取AND取最小,析取OR取最大。
2. 结论不确定性的传递算法
C-F模型中的不确定性推理从不确定的初始证据出发,最终推出结论并求出结论的可信度值。结论 H 的可信度的计算公式如下:
3. 结论不确定性的合成算法
上面这个算法只是假定只有两个因素E1和E2对H有影响,对于多个因素(两个以上)对H有影响的情况,需要先根据上述算法合成CF1,2(H),再与后面的项CF3(H)合成CF1,2,3(H),直至遍历完所有对H有影响的因素。需要注意的是在算法的第二步需要根据合成二者的符号选用特定的公式。
三. 典型例题
我们现在已经背会了上面三个算法公式,现在就可以开始做题了。
下面给出了三道例题,我们可以通过例题的分析求解总结出C-F模型相关题目的普遍性解法。
例题1
【例1】设有如下一组知识:
r1:IF E1 THEN H (0.9)
r2:IF E2 THEN H (0.6)
r3:IF E3 THEN H (-0.5)
r4:IF E4 AND (E5 OR E6) THEN E1(0.8)
已知CF(E2) = 0.8,CF(E3) = 0.6, CF(E4) = 0.5,CF(E5) = 0.6,CF(E6) = 0.8 ,求CF(H)。
我们首先观察已知的内容,发现有CF(E2)、CF(E3)、CF(E4)、CF(E5)和CF(E6),是不是感觉缺少了些东西?
对啊!CF(E1)哪儿去了!?
其实,CF(E1)这个东西就是我们首先需要求出来的值,是本题的入口所在。
我们从上面的四条知识中搜寻E1,发现r4这句中带有E1,我们便需要根据此条知识求出CF(E1)。
根据不确定性传递算法,我们可以将r4这句转化为下面这个样子:
CF(E1) = 0.8 × max{0, CF[E4 AND (E5 OR E6)]}
我们重点关注一下“CF[E4 AND (E5 OR E6)]”,这个式子中带有AND和OR,我们很自然地就想到了合取和析取运算,运用记忆口诀,我们可以进一步处理可以得到下面这个样子:
CF(E1) = 0.8 × max{0, min{CF(E4), max{CF(E5), CF(E6)}}}
然后代入已知的值进行计算:
CF(E1) = 0.8 × max{0, min{0.5, max{0.6, 0.8}}} = 0.4
CF(E1) = 0.4总算被我们求出来了,现在我们再观察上面三个和H有关的知识r1、r2、r3。
r1:IF E1 THEN H (0.9)
r2:IF E2 THEN H (0.6)
r3:IF E3 THEN H (-0.5)
从上式我们可以得知,有三个因素E1、E2、E3都对H有影响。为了求出CF(H),此时我们应该先合成CF1,2(H),再与CF3(H)合成CF1,2,3(H)。
先将r1、r2、r3转化,并计算出CF1(H)、CF2(H)、CF3(H):
CF1(H) = 0.9 × CF(E1) = 0.9 × 0.4 = 0.36
CF2(H) = 0.6 × CF(E2) = 0.6 × 0.8 = 0.48
CF3(H) = -0.5 × CF(E3) = -0.5 × 0.6 = -0.3
首先计算CF1,2(H),由于CF1(H)和CF2(H)都大于0,所以采用如下公式合成:
CF1,2(H) = CF1(H) + CF2(H) - CF1(H) × CF2(H) = 0.36 + 0.48 - 0.36 × 0.48 = 0.6672
之后再通过CF1,2(H)和CF3(H)合成CF1,2,3(H),由于CF1,2(H)和CF3(H)异号,所以采用如下公式合成:
CF1,2,3(H) = [CF1,2(H) + CF3(H)] / [1 - min{|CF1,2(H)|, |CF1,2(H)|}] = (0.6672 - 0.3) / (1 - 0.3) ≈ 0.52
CF1,2,3(H)也就是我们要求的CF(H),所以CF(H) = 0.52。
例题2
我们再来通过一道例题来熟悉解题流程:
【例2】设有如下一组推理规则:
r1: IF E1 AND E2 THEN E3 (1.0)
r2: IF E3 OR E4 THEN E5 (0.8)
r3: IF E5 THEN H (0.8)
r4: IF E6 THEN H (0.9)
已知CF(E1) = 0.7,CF(E2) = 0.5,CF(E4) = 0.4,CF(E6) = 0.8,求CF(H)。
还是老规矩,先求出缺少的CF(E3)和CF(E5):
CF(E3)
= 1.0 × max{0, CF[E1 AND E2]}
= 1.0 × max{0, min{CF(E1), CF(E2)}}
= 1.0 × max{0, min{0.7, 0.5}}
= 1.0 × 0.5
= 0.5
CF(E5)
= 0.8 × max{0, CF[E3 OR E4]}
= 0.8 × max{0, max{CF(E3), CF(E4)}}
= 0.8 × max{0, max{0.5, 0.4}}
= 0.8 × 0.5
= 0.4
再分别求出CF1(H)和CF2(H):
CF1(H) = 0.8 × CF(E5) = 0.8 × 0.4 = 0.32
CF2(H) = 0.9 × CF(E6) = 0.9 × 0.8 = 0.72
最后合成最终结果:
CF(H)
= CF1,2(H)
= CF1(H) + CF2(H) - CF1(H) × CF2(H)
= 0.32 + 0.72 - 0.32 × 0.72
= 0.8096
四. 通用解法
从上述例题的求解流程我们不难发现,类似的题目都有一套固定的流程:
1. 观察哪个CF(E)题目中没有给出,之后依据题目中的某条知识根据相关公式求出缺少的CF(E)。
2. 找到和H有关的几条知识,根据公式求出所有的CFn(H)。
3. 根据CFn(H)的值通过合成公式求出CF(H)。