Скачать 374.44 Kb.
|
^ В задачу данной дипломной работы входит разработка машины вывода диагностической экспертной системы. Особенностью разрабатываемой машины вывода является ее способность работать с неточными и нечеткими входными данными. При этом машина вывода будет использовать экспертные знания, также допускающие элементы нечеткости и неточности.
Необходимо было разработать систему медицинской диагностики, которая позволяла бы на основе неполных данных ставить диагноз с некоторой точностью, и выдавать, насколько точно она определила болезнь.
Входными данными моей части программы являются:
Иначе говоря, входные данные можно разбить на два больших блока:
Сюда также входит и база данных о пациентах (их «больничные карточки»)
Выходными данными программы является диагноз, построенный на основе наблюдаемых симптомов и базы знаний о болезнях. Этот диагноз выдается на экран в качестве окончательного ответа экспертной системы пользователю. Кроме того, информация об обнаруженной болезни и наблюдаемых симптомах заносится в карточку пациента. В процессе работы система генерирует несколько рабочих версий окончательного диагноза, и в конце происходит «отсеивание» лишних гипотез, которые имеют вес, меньший, чем некоторое значение, заранее заданное системным программистом. Например, в процессе работы сформировалось 5 версий с вероятностями от 67 до 98 %. Порог уверенности, заданный системным программистом – 75%. Тогда система выдаст все версии, вероятности которых больше 75%. Например, их 3. Болезнь 1 – 94% Болезнь 2 – 93% Болезнь 3 – 87% Болезнь 4 – 51% Болезнь 5 – 67% Система «отсеет» остальные болезни, кроме этих трех, и выдаст эти три в порядке убывания их вероятностей: ^ Вероятность Болезни 2 – 93% Вероятность Болезни 3 – 87% Также следует упомянуть, что система ведет регистрацию больных, их болезней, и ведет статистику заболеваний:
База знаний – Совокупность трех реляционных баз данных в формате Paradox 7.0:
Вес – Вероятность той или иной болезни в процентах. Недоопределенная спецификация – Набор данных, на основе которого невозможно принять окончательное решение. Фактор уверенности – Фактор уверенности демонстрирует степень уверенности системы в достоверности сделанных ею логических заключений. Порог уверенности – число, заранее определенное пользователем, означающее максимальный вес болезни в данном случае, ниже которого гипотезы просто не рассматриваются.
Структуры данных данного программного средства – 4 таблицы формата Paradox 7.0 (работу с этими таблицами обеспечивает DBE и DBD, которые как раз поставляются в комплект с Borland Delphi с целью «безпроблемной» работы с базами данных практически любого формата). Таблица клиентов
Что касается пункта 5. (fotokard), то для этого специально был разработан модуль для работы со сканером, чтобы можно было ввести фотокарточку пациента в его медицинскую карту. Таблица Болезней
Таблица симптомов
Таблица соответствий
Все значения таблицы – numeric. Число в пересечении колонок есть «указатель» на ту болезнь, на которую указывает определенный симптом, либо на тот симптом, на который указывает определенная болезнь. Таблица весов
Таблица размером [Кол-во болезней]х[Кол-во симптомов]. Число в пересечении колонок – Вес данного симптома для данной болезни.
Работа программы начинается с функции инициализации, которая ответственна за присвоение данным начального значения. После чего управление получает процедура “Главного меню”. Далее, в зависимости от действий пользователя, происходит вызов одной из нижеперечисленных процедур:
В мою часть входила обработка следующих пунктов:
На каждом шаге алгоритма у системы есть откат, т.е. у пользователя есть возможность, если он что-то забыл, вернуться в предыдущее состояние системы, нажав кнопку «Назад». Если же ему захочется все начать сначала, то, нажав кнопку «Отмена», система вернется в первоначальное состояние. На вход системы (данные, введенные пользователем с клавиатуры) изначально поступает неполная информация, вследствие чего система не может однозначно поставить диагноз. Для решения данной проблемы используется следующий алгоритм:
Первоначальный шаг. При входе в систему пользователь видит перед собой список всех симптомов, имеющихся в базе. Напротив выборочных пунктов списка симптомов пользователь выставляет “галочки” (те симптомы, которые он у себя наблюдает). Нажав кнопку “Далее” система переходит к следующему пункту.
После ввода пользователя некоторых первоначальных симптомов, система анализирует, к каким болезням принадлежат данные симптомы. Алгоритм определения первоначального списка болезней:
5.1) Если данная болезнь уже имеется в списке, то переходим к п.6; 5.2) Если элемент таблицы =0, то болезнь в список не включаем;
Каждый симптом может принадлежать сразу нескольким болезням, поэтому в первоначальном списке болезней болезней будет не столько же, сколько симптомов. Следует также учесть, что симптомы есть значимые и незначимые, т.е. вес симптома по отношению к какой-либо болезни либо большой, либо малый. Данный процесс регулируется системой, поэтому никак не зависит от пользователя.
Имея начальный список болезней, система проводит их дифференциацию. Далее система начинает проводить “рассуждения”. Самые распространенные методы логического вывода - это прямая цепочка рассуждений (прямой вывод) и обратная цепочка рассуждений (обратный вывод). В основном, при решении задач диагностики используется обратный вывод. Можно сказать, что обратный вывод более эффективен, когда пользователь должен выбирать из набора возможных последствий как в случае медицинской или технической диагностики. В разрабатываемой системе реализуется механизм смешанного вывода, который позволяет и прямой вывод от фактов к заключениям , и обратный - чтобы подтвердить или опровергнуть гипотезу. В процессе уточнения информации система, задавая пользователю вопросы, проводит «отсеивание» лишних гипотез, имеющих малый вес. Для просчета веса гипотез система открывает данные из файла на диске, а именно таблицу весов. Таблица весов размером [Кол-во болезней] на [Кол-во симптомов] имеет в пересечении клеток число, равное весу данного симптома для данной болезни; порог уверенности заранее задается в настройках.
Если пользователь не смог ответить на некоторые вопросы на этапе первоначального опроса, то система дает рекомендации, как можно собрать эти данные, (сдать анализы, провести ЭКГ) и на основе этого собирает дополнительные данные. Рекомендации система дает только на гипотезы, имеющие большой вес (чтобы подтвердить их весомость, и чтобы пациенту не стоило сдавать лишних анализов).
В процессе предыдущих шагов выявляется несколько версий окончательного результата, которые система распределяет по порядку возрастания вероятности той или иной болезни. Вероятности болезней также считаются по таблице весов. ^
После подсчета весов всех болезней выбирается болезнь, имеющая максимальный вес, и происходит нормировка весов болезней (чтобы они были в пределах от 1 до 100) Далее система выбирает те болезни, вероятности которых находятся в некоторых рамках, заранее определенных системным программистом (так называемый “порог уверенности”). Значение порога уверенности можно задать в настройках программы. Формула для подсчета веса болезни: ves_b(j) = [tab_ves(ves(i,j))]*k(i) То есть, для конечного подсчета вероятности не применяется умножение веса на коэффициенты, а идет суммирование всех элементов таблицы весов (tab_ves(ves(i,j)) имеющих отношение к болезни. Далее происходит нормировка всех конечных вероятностей с целью “укладывания” их в промежуток от 1..100. (Чтобы окончательный ответ измерялся в процентах). k(i) – коэффициент присутствия симптома (равен либо «0», либо «1»). Пример:
Например, в процессе работы были выбраны симптомы 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.
Система выдает те болезни, которые были выбраны в предыдущем пункте в порядке процентного убывания, на экран. Пример: У вас, скорее всего, Склероз. Вероятность – 94% Вероятность физического повреждения мозга – 93% Вероятность простой потери памяти – 87% В данном случае, порог уверенности, установленный системный программистом, составляет 92%, поэтому все болезни, имеющие веса, не превышающие планки 92%, просто отсеиваются. |
![]() | Дипломный проект должен быть сдан на кафедру 01. 06. 2011 К защите допускаются студенты, полностью завершившие дипломный проект, подписанный руководителем, консультантом, утвержденный заведующим... | ![]() | Дипломный проект «Проект городской сети передачи данных с гарантированной... Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования |
![]() | Отзыв на дипломный проект студента (ки) Российского университета... | ![]() | Отчет по практике №4 преддипломная тема «Техническое задание на дипломный проект» Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования |
![]() | На дипломный проект студента 5 курса инженерно-физического факультета «расчет средней электрической импульсной мощности», размещенной на сайте Научно-технической библиотеки | ![]() | Дипломный проект Материалы данного файла могут быть использованы без ограничений для написания собственных работ с целью последующей сдачи в учебных... |
![]() | Дипломный проект Материалы данного файла могут быть использованы без ограничений для написания собственных работ с целью последующей сдачи в учебных... | ![]() | Дипломный проект Материалы данного файла могут быть использованы без ограничений для написания собственных работ с целью последующей сдачи в учебных... |
![]() | Дипломный проект Материалы данного файла могут быть использованы без ограничений для написания собственных работ с целью последующей сдачи в учебных... | ![]() | Дипломный проект Материалы данного файла могут быть использованы без ограничений для написания собственных работ с целью последующей сдачи в учебных... |