Реферат: Разработка подсистемы вывода в диагностической экспертной системе
Имея начальный список болезней, система проводит их дифференциацию. Далее система начинает проводить “рассуждения”.
Самые распространенные методы логического вывода - это прямая цепочка рассуждений (прямой вывод) и обратная цепочка рассуждений (обратный вывод). В основном, при решении задач диагностики используется обратный вывод. Можно сказать, что обратный вывод более эффективен, когда пользователь должен выбирать из набора возможных последствий как в случае медицинской или технической диагностики. В разрабатываемой системе реализуется механизм смешанного вывода, который позволяет и прямой вывод от фактов к заключениям , и обратный - чтобы подтвердить или опровергнуть гипотезу.
В процессе уточнения информации система, задавая пользователю вопросы, проводит «отсеивание» лишних гипотез, имеющих малый вес. Для просчета веса гипотез система открывает данные из файла на диске, а именно таблицу весов. Таблица весов размером [Кол-во болезней] на [Кол-во симптомов] имеет в пересечении клеток число, равное весу данного симптома для данной болезни; порог уверенности заранее задается в настройках.
-
Рекомендации и сбор дополнительной информации.
Если пользователь не смог ответить на некоторые вопросы на этапе первоначального опроса, то система дает рекомендации, как можно собрать эти данные, (сдать анализы, провести ЭКГ) и на основе этого собирает дополнительные данные. Рекомендации система дает только на гипотезы, имеющие большой вес (чтобы подтвердить их весомость, и чтобы пациенту не стоило сдавать лишних анализов).
-
Принятие окончательного решения.
В процессе предыдущих шагов выявляется несколько версий окончательного результата, которые система распределяет по порядку возрастания вероятности той или иной болезни.
Вероятности болезней также считаются по таблице весов.
Алгоритм подсчитывания веса:
-
Выбирается болезнь из списка болезней, сформированного на предыдущих этапах.
-
Система просматривает, какие симптомы из списка симптомов имеют отношение к данной болезни.
-
Происходит суммирование весов всех симптомов, имеющих отношение к данной болезни (опять же по таблице весов).
-
Запоминание конечного веса болезни.
После подсчета весов всех болезней выбирается болезнь, имеющая максимальный вес, и происходит нормировка весов болезней (чтобы они были в пределах от 1 до 100)
Далее система выбирает те болезни, вероятности которых находятся в некоторых рамках, заранее определенных системным программистом (так называемый “порог уверенности”). Значение порога уверенности можно задать в настройках программы.
Формула для подсчета веса болезни: ves_b(j) = [tab_ves(ves(i,j))]*k(i)
То есть, для конечного подсчета вероятности не применяется умножение веса на коэффициенты, а идет суммирование всех элементов таблицы весов (tab_ves(ves(i,j)) имеющих отношение к болезни. Далее происходит нормировка всех конечных вероятностей с целью “укладывания” их в промежуток от 1..100. (Чтобы окончательный ответ измерялся в процентах). k(i) – коэффициент присутствия симптома (равен либо «0», либо «1»).
Пример:
Голова болит | Провалы памяти | Частые припадки | В ухе стреляет | Челюсть сводит | Внутриче-репное давление | |
Склероз | 10 | 106 | 64 | 55 | 20 | 43 |
Например, в процессе работы были выбраны симптомы 2,4 и 6. Система будет суммировать вес:
Ves_b("склероз")=10*0+106*1+64*0+55*1+20*0+43*1=204. Далее:
-
У всех болезней таким образом будет вычислен вес.
-
Выберется максимальный вес болезни из списка болезней.
J=-1; // отрицательное значение для начала.
For i=1 to 15 do
( if j>max(ves_b(i)) // если j больше максимального значения,
j=max(ves_b(i)); // то j=max.
-
Допустим, максимальный вес = 300.
-
Веса всех болезней разделятся на 300 (нормируются), чтобы быть в пределах от 0 до 1.
-
Таким образом, вес болезни “склероз” = 204/300=0.68 (т.е. 68%). Это и есть конечный итог.