Khóa học sụp đổ về DST
Lý thuyết Dempster hạng Shafer (DST) cung cấp một phương pháp kết hợp nhiều nguồn chứng cứ khác nhau để tạo thành niềm tin. Đưa ra một danh sách các tuyên bố có thể (một trong số đó là câu trả lời đúng), mỗi kết hợp có thể có của các tuyên bố được gán một "khối lượng" cho biết mức độ bằng chứng hỗ trợ. Tổng khối lượng của tất cả các kết hợp luôn bằng 1.
Từ những bài tập lớn này, chúng ta có thể tạo ra một ràng buộc thấp hơn (niềm tin) và ràng buộc trên (tính hợp lý) trên sự thật của sự kết hợp đó. Niềm tin bel(X)
của bất kỳ tập X nào là tổng khối lượng của tất cả các tập con của X (bao gồm cả chính nó). Tính hợp lý pl(X)
của bất kỳ tập X nào là "1 - tổng khối lượng của tất cả các tập hợp tách rời với X". Biểu đồ dưới đây minh họa cách niềm tin và tính hợp lý có liên quan đến sự không chắc chắn.
Ví dụ: giả sử có một đèn tín hiệu giao thông có thể là một trong hai G
, reen Y
hoặc R
ed. Danh sách các tùy chọn và phân công khối có thể được hiển thị bên dưới:
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
Những khối này có thể được ký hiệu bởi một mảng [0, 0.2, 0.1, 0.05, 0.2, 0.3, 0, 0.15]
.
Bây giờ câu hỏi là, làm thế nào để chúng ta quyết định quần chúng là gì? Giả sử rằng chúng ta có một cảm biến nhìn vào ánh sáng và cảm biến này chỉ ra rằng ánh sáng không có màu xanh lá cây ; tuy nhiên, chúng tôi biết rằng có 20% khả năng cảm biến đã gửi tín hiệu giả, ngẫu nhiên. Đoạn bằng chứng này có thể được mô tả bằng phân phối khối lượng [0, 0, 0, 0.8, 0, 0, 0, 0.2]
trong đó {Y, R} có khối lượng 0,8 và {G, Y, R} có khối lượng 0,2.
Tương tự, giả sử rằng một số cảm biến thứ hai chỉ ra rằng ánh sáng không phải là màu đỏ , nhưng chúng ta cũng biết rằng có 30% khả năng cảm biến bị sai và ánh sáng thực sự là màu đỏ. Đoạn bằng chứng này có thể được mô tả bằng cách [0, 0.3, 0, 0, 0, 0, 0.7, 0]
{G, Y} có khối lượng 0,7 và {R} có khối lượng 0,3.
Để đồng hóa hai mẩu bằng chứng này để tạo thành một bản phân phối hàng loạt duy nhất, chúng ta có thể sử dụng Quy tắc kết hợp của Dempster.
Quy tắc kết hợp của Dempster
Hai phân khối m1
và m2
có thể được kết hợp để tạo thành m1,2
bằng cách sử dụng công thức sau đây, nơi A
, B
và C
đại diện cho tổ hợp có thể (các hàng của bảng trên).
Trong đó K là thước đo "xung đột", được sử dụng để tái chuẩn hóa và được tính bằng:
Cũng có thể mô tả quá trình này về mặt hình học, như trong hình ảnh dưới đây. Nếu A = 011
(Vàng hoặc Đỏ) và B = 101
(Xanh hoặc Đỏ), thì giá trị m1(A) * m2(B)
đóng góp cho (được thêm vào) giá trị của m1,2(001)
(Đỏ). Quá trình này được lặp lại cho tất cả các kết hợp có thể có của A và B trong đó A&B != 0
. Cuối cùng, mảng được chuẩn hóa lại để các giá trị cộng tổng cộng 1.
Đây là một phương thức Java đơn giản kết hợp hai mảng theo quy tắc của Dempster:
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;
}
Để xem cách thức hoạt động của nó trong thực tế, hãy xem xét các cảm biến đèn giao thông ở trên, độc lập cung cấp cho quần chúng [0, 0, 0, 0.8, 0, 0, 0, 0.2]
và [0, 0.3, 0, 0, 0, 0, 0.7, 0]
. Sau khi thực hiện quy tắc của Dempster, khối lượng chung kết quả là [0, 0.3, 0.56, 0, 0, 0, 0.14, 0]
. Phần lớn khối lượng được gán cho "Màu vàng", điều này có ý nghĩa trực quan khi hai cảm biến trả về "không phải màu xanh lá cây" và "không màu đỏ" tương ứng. Hai khối lượng khác (0,3 cho "Đỏ" và 0,14 cho "Xanh hoặc Vàng") là do độ không đảm bảo của các phép đo.
Các thách thức
Viết chương trình lấy hai danh sách các số thực và đưa ra kết quả của việc áp dụng quy tắc của Dempster cho hai danh sách đầu vào. Độ dài của hai danh sách đầu vào sẽ bằng nhau và độ dài đó sẽ là lũy thừa bằng 2 và sẽ có ít nhất 4. Đối với mỗi danh sách, giá trị đầu tiên sẽ luôn là 0 và các giá trị còn lại sẽ không âm và thêm lên tới 1.
Đầu ra phải là một danh sách có cùng độ dài với danh sách đầu vào. Bạn có thể giả sử rằng một giải pháp tồn tại (có thể giải pháp không tồn tại khi có xung đột hoàn toàn giữa bằng chứng và do đó K = 1). Để đặt một yêu cầu tối thiểu về độ chính xác, chương trình của bạn phải có khả năng tạo ra kết quả chính xác khi được làm tròn đến bốn chữ số thập phân.
Ví dụ 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]