DSTのクラッシュコース
デンプスター・シェーファー理論(DST)は、さまざまな証拠を組み合わせて信念を形成する方法を提供します。可能なステートメントのリスト(そのうちの1つが正しい答え)が与えられると、ステートメントの可能な各組み合わせに、裏付けとなる証拠の程度を示す「質量」が割り当てられます。すべての組み合わせの合計質量は常に1です。
これらの質量割り当てから、その組み合わせの真理について妥当な下限(信念)と上限(妥当性)を作成できます。bel(X)任意のセットX の信念は、Xのすべてのサブセット(それ自体を含む)の質量の合計です。pl(X)すべてのセットX の妥当性は「1-Xに共通でないすべてのセットの質量の合計」です。以下の図は、信念と妥当性が不確実性とどのように関連しているかを示しています。
たとえば、Green、Yellow、Redのいずれかの信号機があるとします。オプションと可能な質量割り当てのリストを以下に示します。
binary interpretation m(X) bel(X) pl(x)
000 null 0 0 0
001 R 0.2 0.2 0.7
010 Y 0.1 0.1 0.3
011 Y||R 0.05 0.35 0.8
100 G 0.2 0.2 0.65
101 G||R 0.3 0.7 0.9
110 G||Y 0 0.3 0.8
111 G||Y||R 0.15 1 1
これらの質量は配列で表記できます[0, 0.2, 0.1, 0.05, 0.2, 0.3, 0, 0.15]。
さて、問題は、どうやって大衆が何であるかを決定することですか?ライトを見るセンサーがあり、このセンサーがライトが緑ではないことを示しているとしましょう。ただし、センサーがランダムなスプリアス信号を送信する可能性は20%あることがわかっています。この証拠は[0, 0, 0, 0.8, 0, 0, 0, 0.2]、{Y、R}の質量が0.8で、{G、Y、R}の質量が0.2 の質量分布で説明できます。
同様に、いくつかの2番目のセンサーがライトが赤ではないことを示しているとしましょう。しかし、センサーが間違っていてライトが実際に赤である確率は30%あることもわかっています。この証拠は[0, 0.3, 0, 0, 0, 0, 0.7, 0]、{G、Y}の質量が0.7、{R}の質量が0.3である場所で説明できます。
これらの2つの証拠を同化して単一の質量分布を形成するには、デンプスターの組み合わせ規則を使用できます。
デンプスターの組み合わせのルール
2つの質量割り当てでm1あり、次の数式を使用しm2て形成するために組み合わせることができますm1,2。ここでA、BとCは可能な組み合わせ(上の表の行)を表します。
ここで、Kは「競合」の尺度であり、くりこみに使用され、次のように計算されます。
以下の画像のように、このプロセスを幾何学的に説明することもできます。場合A = 011(黄または赤)及びB = 101(緑色または赤色)、その後の値m1(A) * m2(B) に寄与するが、の値(に加算される)m1,2(001)(赤)。このプロセスは、AとBのすべての可能な組み合わせに対して繰り返されますA&B != 0。最後に、配列が再正規化され、値の合計が1になるようにします。
以下は、Dempsterの規則に従って2つの配列を組み合わせる単純なJavaメソッドです。
public static double[] combine(double[] a, double[] b) {
double[] res = new double[a.length];
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < b.length; j++) {
res[i & j] += a[i] * b[j];
}
}
for (int i = 1; i < res.length; i++) {
res[i] /= 1 - res[0];
}
res[0] = 0;
return res;
}
これが実際にどのように機能するかを確認するには、質量[0, 0, 0, 0.8, 0, 0, 0, 0.2]とを独立して与える上記の信号センサーを検討してください[0, 0.3, 0, 0, 0, 0, 0.7, 0]。デンプスターの法則を実行した後、結果の関節の質量はになり[0, 0.3, 0.56, 0, 0, 0, 0.14, 0]ます。質量の大部分は「黄色」に割り当てられています。これは、2つのセンサーがそれぞれ「緑ではない」と「赤ではない」を返した場合、直感的に理解できます。他の2つの質量(「赤」の場合は0.3、「緑または黄色」の場合は0.14)は、測定値の不確かさが原因です。
チャレンジ
実数の2つのリストを受け取り、Dempsterの規則を2つの入力リストに適用した結果を出力するプログラムを作成します。2つの入力リストの長さは等しくなり、その長さは2の累乗になり、少なくとも4になります。各リストでは、最初の値は常に0で、残りの値はすべて負ではなく、追加されます1まで。
出力は、入力リストと同じ長さのリストである必要があります。解が存在すると仮定できます(証拠間に完全な矛盾があるため、K = 1の場合、解が存在しない可能性があります)。精度に最低限の要件を課すには、プログラムで小数点以下4桁に四捨五入したときに正確な結果を生成できる必要があります。
I / Oの例
in:
[0, 0, 0, 0.8, 0, 0, 0, 0.2]
[0, 0.3, 0, 0, 0, 0, 0.7, 0]
out:
[0.0, 0.3, 0.56, 0.0, 0.0, 0.0, 0.14, 0.0]
in:
[0.0, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.4]
[0.0, 0.2, 0.0, 0.2, 0.0, 0.2, 0.0, 0.4]
out:
[0.0, 0.2889, 0.0889, 0.1556, 0.0889, 0.1556, 0.0444, 0.1778]
in:
[0.0, 0.0, 0.5, 0.5]
[0.0, 0.7, 0.1, 0.2]
out:
[0.0, 0.53846, 0.30769, 0.15385]
in:
[0.0, 0.055, 0.042, 0.098, 0.0, 0.152, 0.0, 0.038, 0.031, 0.13, 0.027, 0.172, 0.016, 0.114, 0.058, 0.067]
[0.0, 0.125, 0.013, 0.001, 0.012, 0.004, 0.161, 0.037, 0.009, 0.15, 0.016, 0.047, 0.096, 0.016, 0.227, 0.086]
out: (doesn't have to be this precise)
[0.0, 0.20448589713416732, 0.11767361551134202, 0.028496524069011694, 0.11809792349331062, 0.0310457664246791, 0.041882026540181416, 0.008093533320057205, 0.12095719354780314, 0.11306959103499466, 0.06412594818690368, 0.02944697394862137, 0.06398564368086611, 0.014369896989336852, 0.03774983253978312, 0.006519633578941643]
in:
[0.0, 0.0, 0.1, 0.1, 0.0, 0.0, 0.0, 0.1, 0.1, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.1, 0.0, 0.1, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0]
[0.0, 0.0, 0.1, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.1, 0.0, 0.0, 0.0, 0.1, 0.1, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.1, 0.0, 0.0, 0.1, 0.0, 0.1, 0.0]
out:
[0.0, 0.09090909090909094, 0.23376623376623382, 0.0, 0.07792207792207795, 0.025974025974026, 0.03896103896103895, 0.0, 0.10389610389610393, 0.05194805194805199, 0.02597402597402597, 0.0, 0.012987012987012984, 0.012987012987012993, 0.012987012987012984, 0.0, 0.09090909090909094, 0.038961038961038995, 0.06493506493506492, 0.0, 0.07792207792207796, 0.0, 0.0, 0.0, 0.012987012987012984, 0.012987012987013, 0.012987012987012984, 0.0, 0.0, 0.0, 0.0, 0.0]




