参数说明
计算中所涉及到的说明见下图:
计算公式
计算中用到的相关公式罗列如下:
O ( x ) = P ( x ) P ( ¬ x ) = P ( x ) 1 − P ( x ) , O ( x ) ∈ [ 0 , ∞ ) , 几 率 函 数 O(x) = \frac{{P(x)}}{{P(\neg x)}} = \frac{{P(x)}}{{1 - P(x)}},O(x) \in [0,\infty ),几率函数 O(x)=P(¬x)P(x)=1−P(x)P(x),O(x)∈[0,∞),几率函数
P ( x ) = O ( x ) 1 + O ( x ) , P ( x ) ∈ [ 0 , 1 ] , 概 率 函 数 P(x) = \frac{{O(x)}}{{1 + O(x)}}, P(x) \in [0,1],概率函数 P(x)=1+O(x)O(x),P(x)∈[0,1],概率函数
P ( H i ∣ E j ) = L S j × P ( H i ) ( L S j − 1 ) × P ( H i ) + 1 P({H_i}|{E_j}) = \frac{{L{S_j} \times P({H_i})}}{{(L{S_j} - 1) \times P({H_i}) + 1}} P(Hi∣Ej)=(LSj−1)×P(Hi)+1LSj×P(Hi)
P ( H ∣ S ) = { P ( H ∣ ¬ E ) + P ( H ) − P ( H ∣ ¬ E ) P ( E ) × P ( E ∣ S ) , 0 ≤ P ( E ∣ S ) < P ( E ) P ( H ) + P ( H ∣ E ) − P ( H ) 1 − P ( E ) × [ P ( E ∣ S ) − P ( E ) ] , P ( E ) ≤ P ( E ∣ S ) ≤ 1 P(H|S) = \left\{ {\begin{array}{l} {P(H|\neg E) + \frac{{P(H) - P(H|\neg E)}}{{P(E)}} \times P(E|S),0 \le P(E|S) < P(E)}\\ \\ {P(H) + \frac{{P(H|E) - P(H)}}{{1 - P(E)}} \times [P(E|S) - P(E)],P(E) \le P(E|S) \le 1} \end{array}} \right. P(H∣S)=⎩⎪⎨⎪⎧P(H∣¬E)+P(E)P(H)−P(H∣¬E)×P(E∣S),0≤P(E∣S)<P(E)P(H)+1−P(E)P(H∣E)−P(H)×[P(E∣S)−P(E)],P(E)≤P(E∣S)≤1
O ( H ∣ S 1 , S 2 , . . . , S n ) = O ( H ∣ S 1 ) O ( H ) O ( H ∣ S 2 ) O ( H ) . . . O ( H ∣ S n ) O ( H ) O ( H ) O(H|{S_1},{S_2},...,{S_n}) = \frac{{O(H|{S_1})}}{{O(H)}}\frac{{O(H|{S_2})}}{{O(H)}}...\frac{{O(H|{S_n})}}{{O(H)}}O(H) O(H∣S1,S2,...,Sn)=O(H)O(H∣S1)O(H)O(H∣S2)...O(H)O(H∣Sn)O(H)
例题
通过下图例题实现结论不确定性合成:
计算流程
(1)计算 O ( H 1 ∣ S 1 ) O(H_1|S_1) O(H1∣S1)
P ( E 1 ∣ S 1 ) > P ( E 1 ) , P ( H 1 ∣ E 1 ) = L S 1 × P ( H 1 ) ( L S 1 − 1 ) × P ( H 1 ) + 1 P ( H 1 ∣ S 1 ) = P ( H 1 ) + P ( H 1 ∣ E 1 ) − P ( H 1 ) 1 − P ( E 1 ) × ( P ( E 1 ∣ S 1 ) − P ( E 1 ) ) O ( H 1 | S 1 ) = P ( H 1 ∣ S 1 ) 1 − P ( H 1 ∣ S 1 ) {P(E}_1\left|S_1\right)>P(E_1),\\ P(H_1|E_1)=\frac{{LS}_1\times P(H_1)}{\left({LS}_1-1\right)\times P\left(H_1\right)+1}\\ P(H_1|S_1)=P\left(H_1\right)+\frac{P(H_1|E_1)-P\left(H_1\right)}{1-P(E_1)}\times(P(E_1\left|S_1\right)-P\left(E_1\right))\\ O\left(H_1\middle| S_1\right)=\frac{P(H_1|S_1)}{1-P(H_1|S_1)} P(E1∣S1)>P(E1),P(H1∣E1)=(LS1−1)×P(H1)+1LS1×P(H1)P(H1∣S1)=P(H1)+1−P(E1)P(H1∣E1)−P(H1)×(P(E1∣S1)−P(E1))O(H1∣S1)=1−P(H1∣S1)P(H1∣S1)
(2)计算 O ( H 1 ∣ S 2 ) O(H_1|S_2) O(H1∣S2)
P ( E 2 ∣ S 2 ) > P ( E 2 ) , P ( H 1 ∣ E 2 ) = L S 2 × P ( H 1 ) ( L S 2 − 1 ) × P ( H 1 ) + 1 P ( H 1 ∣ S 2 ) = P ( H 1 ) + P ( H 1 ∣ E 2 ) − P ( H 1 ) 1 − P ( E 2 ) × ( P ( E 2 ∣ S 2 ) − P ( E 2 ) ) O ( H 1 | S 2 ) = P ( H 1 ∣ S 2 ) 1 − P ( H 1 ∣ S 2 ) {P(E}_2\left|S_2\right)>P(E_2),\\ P(H_1|E_2)=\frac{{LS}_2\times P(H_1)}{\left({LS}_2-1\right)\times P\left(H_1\right)+1}\\ P(H_1|S_2)=P\left(H_1\right)+\frac{P(H_1|E_2)-P\left(H_1\right)}{1-P(E_2)}\times(P(E_2\left|S_2\right)-P\left(E_2\right))\\ O\left(H_1\middle| S_2\right)=\frac{P(H_1|S_2)}{1-P(H_1|S_2)} P(E2∣S2)>P(E2),P(H1∣E2)=(LS2−1)×P(H1)+1LS2×P(H1)P(H1∣S2)=P(H1)+1−P(E2)P(H1∣E2)−P(H1)×(P(E2∣S2)−P(E2))O(H1∣S2)=1−P(H1∣S2)P(H1∣S2)
(3)计算 P ( H 1 ∣ S 1 , S 2 ) P(H_1|S_1,S_2) P(H1∣S1,S2)
O ( H 1 ) = P ( H 1 ) 1 − P ( H 1 ) O ( H 1 | S 1 , S 2 ) = O ( H 1 ∣ S 1 ) O ( H 1 ) × O ( H 1 ∣ S 2 ) O ( H 1 ) × O ( H 1 ) P ( H 1 | S 1 , S 2 ) = O ( H 1 ∣ S 1 , S 2 ) 1 + O ( H 1 ∣ S 1 , S 2 ) O\left(H_1\right)=\frac{P(H_1)}{1-P(H_1)}\\ O\left(H_1\middle| S_1,S_2\right)=\frac{O{(H}_1|S_1)}{O\left(H_1\right)}\times\frac{O{(H}_1|S_2)}{O\left(H_1\right)}\times O\left(H_1\right)\\ P\left(H_1\middle| S_1,S_2\right)=\frac{O{(H}_1|S_1,S_2)}{1+O{(H}_1|S_1,S_2)} O(H1)=1−P(H1)P(H1)O(H1∣S1,S2)=O(H1)O(H1∣S1)×O(H1)O(H1∣S2)×O(H1)P(H1∣S1,S2)=1+O(H1∣S1,S2)O(H1∣S1,S2)
(4)计算 O ( H 2 | S 1 , S 2 ) O\left(H_2\middle| S_1,S_2\right) O(H2∣S1,S2)
P ( H 1 | S 1 , S 2 ) > P ( H 2 ) , P ( H 2 | H 1 ) = L S 4 × P ( H 2 ) ( L S 4 − 1 ) × P ( H 2 ) + 1 P ( H 2 | S 1 , S 2 ) = P ( H 2 ) + P ( H 2 ∣ H 1 ) − P ( H 2 ) 1 − P ( H 1 ) × ( P ( H 1 | S 1 , S 2 ) − P ( H 1 ) ) O ( H 2 | S 1 , S 2 ) = P ( H 1 ∣ S 1 , S 2 ) 1 − P ( H 1 ∣ S 1 , S 2 ) P\left(H_1\middle| S_1,S_2\right)>P(H_2),\\ P\left(H_2\middle| H_1\right)=\frac{{LS}_4\times P(H_2)}{\left({LS}_4-1\right)\times P\left(H_2\right)+1}\\ P\left(H_2\middle| S_1,S_2\right)=P\left(H_2\right)+\frac{P(H_2|H_1)-P\left(H_2\right)}{1-P(H_1)}\times(P\left(H_1\middle| S_1,S_2\right)-P\left(H_1\right))\\ O\left(H_2\middle| S_1,S_2\right)=\frac{P{(H}_1|S_1,S_2)}{1-P{(H}_1|S_1,S_2)} P(H1∣S1,S2)>P(H2),P(H2∣H1)=(LS4−1)×P(H2)+1LS4×P(H2)P(H2∣S1,S2)=P(H2)+1−P(H1)P(H2∣H1)−P(H2)×(P(H1∣S1,S2)−P(H1))O(H2∣S1,S2)=1−P(H1∣S1,S2)P(H1∣S1,S2)
(5)计算 O ( H 2 ∣ S 3 ) O(H_2|S_3) O(H2∣S3)
P ( E 3 ∣ S 3 ) < P ( E 3 ) , P ( H 2 ∣ ¬ E 3 ) = L N 3 × P ( H 2 ) ( L N 3 − 1 ) × P ( H 2 ) + 1 P ( H 2 ∣ S 3 ) = P ( H 2 ∣ ¬ E 3 ) + P ( H 2 ) − P ( H 2 ∣ ¬ E 3 ) P ( E 3 ) × P ( E 3 ∣ S 3 ) O ( H 2 | S 3 ) = P ( H 2 ∣ S 3 ) 1 − P ( H 2 ∣ S 3 ) {P(E}_3\left|S_3\right)<P(E_3),\\ P(H_2|{\lnot E}_3)=\frac{{LN}_3\times P(H_2)}{\left({LN}_3-1\right)\times P\left(H_2\right)+1}\\ P(H_2|S_3)=P(H_2|{\lnot E}_3)+\frac{P\left(H_2\right)-P(H_2|{\lnot E}_3)}{P(E_3)}\times P(E_3|S_3)\\ O\left(H_2\middle| S_3\right)=\frac{P(H_2|S_3)}{1-P(H_2|S_3)} P(E3∣S3)<P(E3),P(H2∣¬E3)=(LN3−1)×P(H2)+1LN3×P(H2)P(H2∣S3)=P(H2∣¬E3)+P(E3)P(H2)−P(H2∣¬E3)×P(E3∣S3)O(H2∣S3)=1−P(H2∣S3)P(H2∣S3)
(6)计算 P ( H 2 ∣ S 1 , S 2 , S 3 ) P(H_2|S_1,S_2,S_3) P(H2∣S1,S2,S3)
O ( H 2 ) = P ( H 2 ) 1 − P ( H 2 ) O ( H 2 | S 1 , S 2 , S 3 ) = O ( H 2 ∣ S 1 , S 2 ) O ( H 2 ) × O ( H 2 ∣ S 3 ) O ( H 2 ) × O ( H 2 ) P ( H 2 ∣ S 1 , S 2 , S 3 ) = O ( H 1 ∣ S 1 , S 2 , S 3 ) 1 + O ( H 1 ∣ S 1 , S 2 , S 3 ) O\left (H_2\right)=\frac{P(H_2)}{1-P(H_2)}\\ O\left(H_2\middle| S_1,S_2,S_3\right)=\frac{{O(H}_2|S_1,S_2)}{O\left(H_2\right)}\times\frac{{O(H}_2|S_3)}{O\left(H_2\right)}\times O\left(H_2\right)\\ P(H_2|S_1,S_2,S_3)=\ \frac{{O(H}_1|S_1,S_2,S_3)}{1+{O(H}_1|S_1,S_2,S_3)} O(H2)=1−P(H2)P(H2)O(H2∣S1,S2,S3)=O(H2)O(H2∣S1,S2)×O(H2)O(H2∣S3)×O(H2)P(H2∣S1,S2,S3)= 1+O(H1∣S1,S2,S3)O(H1∣S1,S2,S3)
代码实现
PE1 = PE2 = PE3 = 0.6
PHs = [0.091, 0.01]
PExSs = [0.84, 0.68, 0.36]
LSs = [2, 100, 200, 50]
LNs = [0.00001, 0.0001, 0.001, 0.1]
def PLS(LS, PH):
PHxLS = (LS*PH)/((LS-1)*PH+1)
return PHxLS
def PHS(PH, PE, PHxE, PExS):
if 0 < PExS < PE:
PHxS = PHxE + (PH-PHxE)/PE*(PExS)
elif PE <= PExS <= 1:
PHxS = PH + (PHxE-PH)/(1-PE)*(PExS-PE)
return PHxS
def OHS(PHxS):
OHxS = PHxS/(1-PHxS)
return OHxS
print('(1)计算O(H1|S1)')
PH1xE1 = PLS(LSs[0], PHs[0])
PH1xS1 = PHS(PHs[0], PE1, PH1xE1, PExSs[0])
OH1xS1 = OHS(PH1xS1)
print('P(H1|E1):', PH1xE1, '\nP(H1|S1):', PH1xS1, '\nO(H1|S1):', OH1xS1)
print('(2)计算O(H1|S2)')
PH1xE2 = PLS(LSs[1], PHs[0])
PH1xS2 = PHS(PHs[0], PE2, PH1xE2, PExSs[1])
OH1xS2 = OHS(PH1xS2)
print('P(H1|E2):', PH1xE2, '\nP(H1|S2):', PH1xS2, '\nO(H1|S2):', OH1xS2)
print('(3)计算P(H1|S1,S2)')
OH1 = OHS(PHs[0])
OH1xS1S2 = (OH1xS1/OH1)*(OH1xS2/OH1)*OH1
PH1xS1S2 = OH1xS1S2/(1+OH1xS1S2)
print('O(H1):', OH1, '\nO(H1|S1,S2):', OH1xS1S2, '\nP(H1|S1,S2):', PH1xS1S2)
print('(4)计算O(H2|S1,S2)')
PH2xH1 = PLS(LSs[3], PHs[1])
PH2xS1S2 = PHS(PHs[1], PHs[0], PH2xH1, PH1xS1S2)
OH2xS1S2 = OHS(PH2xS1S2)
print('P(H2|H1):', PH2xH1, '\nP(H2|S1,S2):', PH2xS1S2, '\nO(H1|S1,S2):', OH2xS1S2)
print('(5)计算O(H2|S3)')
PH2x0E3 = PLS(LNs[2], PHs[1])
PH2xS3 = PHS(PHs[1], PE3, PH2x0E3, PExSs[2])
OH2xS3 = OHS(PH2xS3)
print('P(H2|非E3):', PH2x0E3, '\nP(H2|S3):', PH2xS3, '\nO(H2|S3):', OH2xS3)
print('(6)计算P(H1|S1,S2,S3)')
OH2 = OHS(PHs[1])
OH2xS1S2S3 = (OH2xS1S2/OH2)*(OH2xS3/OH2)*OH2
PH2xS1S2S3 = OH2xS1S2S3/(1+OH2xS1S2S3)
print('O(H2):', OH2, '\nO(H1|S1,S2,S3):', OH2xS1S2S3, '\nP(H1|S1,S2,S3):', PH2xS1S2S3)