Интеллектуальная система диагностирования глазных заболеваний человека

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    55,55 Кб
  • Опубликовано:
    2015-11-13
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Интеллектуальная система диагностирования глазных заболеваний человека

Реферат

Ключевые слова: Интеллектуальная система, диагностика глазных заболеваний, медицинская диагностика, байесовкая сеть, наивный байесовский метод, формула байеса, экспертная система.

Цель работы: разработка интеллектуальной системы диагностирования глазных заболеваний человека.

В выпускной квалификационной работе проводится ознакомление с предметной областью, анализ аналогов разрабатываемого программного обеспечения, рассматриваются способы для разработки подобного приложения на основе байесовских сетей, и выполняется разработка приложения. Приведенное в бакалаврской работе сравнение аналогов наглядно показывает о несовершенстве офтальмологической медицинской области, о её развитии.

Практическая значимость проекта заключается в том, что подобных аналогов не известно в доступных источниках. Возможно, подобные существуют, но являются коммерческой тайной.

Результатами разработанного проекта могут воспользоваться многие медицинские учреждения, связанные с офтальмологией для усовершенствования своей деятельности, как в масштабах одной клиники, так и в федеральном масштабе.

В перспективах разработки возможно изменение метода расчёта для более точного и быстрого получения результата

Содержание

Реферат

Введение

1. Аналитическая часть

1.1 Постановка задачи

1.2 Актуальность создания системы

1.3 Описание предметной области

1.3.1 Понятие офтальмологии

1.3.2 Глазные заболевания и их симптомы

1.3.3 Виды и методы диагностики офтальмоилоги

1.3.4 Определение экспертных систем, достоинство и назначение

1.3.5 Области применения экспертных систем

1.4 Рассмотрение аналогов существующей системы

1.5 Целесообразность создания системы

1.6 Требования технического задания к автоматизированной системе

1.6.1 Назначение разработки

1.6.2 Требования к функциональным характеристикам

1.6.3 Стадии и этапы разработки

1.7 Теоретические сведения о байесовских сетях доверия

1.7.1 Представление нечётких знаний

1.7.2 Байесовская сеть

1.7.3 Наивный байесовский метод

1.7.4 Простейший пример байесовской сети

2. Проектная часть

2.1 Проектирование модели байесовской сети

2.2 Структура разрабатываемой системы

2.3 Разработка инфологической модели базы данных

.4 Применение к другим областям медицинской диагностики

2.5 Преимущества веб-приложения

2.6 Обоснование выбора инструментария

2.6.1 Язык программирования PHP 5.3.13

2.6.2 PhpStorm

.6.3 HTML и CSS

2.6.4 Denwer

3. Разработка системы

3.1 Разработка базы данных

3.2 Разработка классов

3.3 Описание методов

4. Описание пользовательского интерфейса и тестирование

4.1 Руководство пользователя

4.2 Тестирование системы

Заключение

Список литературы

Приложение А

Приложение Б

Введение

Зрение - самый ценный дар подаренный человеку природой, ведь именно благодаря данному виду ощущений мы получаем большую часть информации об окружающем мире, точность и полнота которой зависит от нормального функционирования зрительного аппарата.

Через зрительный анализатор поступает до 80 % информации об окружающем мире и в процессе эволюции человека орган зрения приобрел достаточно высокую устойчивость к различным раздражителям и неблагоприятным факторам воздействия. Однако даже эти защитные механизмы не способны полностью избавить глаз от заболеваний. Поэтому глазные болезни встречаются достаточно часто.

По данным Всемирной организации здравоохранения, во всем мире насчитывается около 37 миллионов слепых людей и 124 миллиона человек с плохим зрением. Каждые пять секунд в мире слепнет один взрослый человек, каждую минуту - ребенок. При этом три четверти случаев слепоты излечимы или предотвратимы. По расчетам ВОЗ, если не будут приняты срочные меры, к 2020 году число слепых в мире удвоится и достигнет 75 миллионов.[31]

Какие-то заболевания глаз можно предотвратить, обратившись к офтальмологу и выполнив диагностику.

Диагностика глазных болезней, как и любых других патологий, начинается со сбора жалоб пациента. Существуют определенные сочетания симптомов, которые позволяют поставить предварительный диагноз болезни глаз исходя исключительно из жалоб пациента. В некоторых случаях сочетания симптомов неспецифичны и в случае сомнения врач может направить пациента на анализ наиболее вероятных заболеваний. К тому же это инструмент автоматизации работы врача-офтальмолога, который упростит и облегчит опрос пациента. Помимо специалиста доступ к системе открыт для любого интересующегося. Для экономии времени, денег и нервов (себе и врачу) пациент может самостоятельно заполнить жалобы и узнать предварительный диагноз с помощью разработанной экспертной системы.

Подобных систем мало. Имеются ввиду системы, основанные на опросе пациента, без сканирования сетчатки или глазного дна (существуют экспертные системы для диагностирования глазных заболеваний на основе изображения глазного дна, но они требуют работы со специалистом). Большинство систем оценивает общее состояние организма и в такой специализированной области не может дать удовлетворяющего ответа.

Существуют аналогичные системы медицинской диагностики, реализованные в виде приложений и используемые в различных клиниках. Доступ к подобным системам имеют только сотрудники. Таким образом, являясь коммерческой тайной, они закрыты для изучения.

Поэтому разработка интеллектуальной системы для автоматического диагностирования глазных заболеваний человека является актуальной.

Для создания подобной экспертной системы для диагностики глазных заболеваний человека необходимы эффективные, компактные и понятные способы представления информации, связанные с неопределённостью. Для преодоления проблемы неопределенности знаний в области искусственного интеллекта были разработаны различные методы, применяемые при построении экспертных систем. Однако в последние годы внимание исследователей все больше привлекает теория вероятностей, с ее развитым и строго формализованным аппаратом, а именно байесовская сеть. В силу того, что байесовская сеть - это полная модель для переменных и их отношений, она может быть использована для того, чтобы давать ответы на вероятностные вопросы. Наиболее часто БС используют для прогнозирования - определение вероятности события при наблюдаемых причинах или диагностирования - определение вероятности причины при наблюдаемых следствиях.

Цель работы - разработка интеллектуальной системы диагностирования глазных заболеваний человека.

Работа состоит из введения, четырех глав и заключения.

Первая глава - теоретические аспекты офтальмологии: диагнозы, симптомы, факторы, аналоги существующих систем. Во второй главе - проектной, приводится описание проектирования системы: описание байесовских сетей, разработка база данных, выбор инструментов для реализации системы, обоснование выбора веб-приложения. В третьей главе предоставлены элементы реализации: описание создания базы данных и описание классов с методами. В четвертой главе представлены руководство пользователя и тестирование системы.

1. Аналитическая часть

.1 Постановка задачи

Цель: разработка интеллектуальной системы диагностирования глазных заболеваний человека.

Задачи:

-изучение предметной области - офтальмологии;

-анализ продуктов, выполняющих аналогичные действия;

-изучение байесовских сетей и методов для расчёта решения байесовской сети;

-разработка приложения для диагностирования глазных заболеваний человека на основании полученной информации.

Разрабатываемый программный продукт - «Интеллектуальная система для диагностирования глазных заболеваний человека», далее именуемое как приложение. ПО предназначено для автоматизации работы врачей-офтальмологов в сборе жалоб пациента и диагностике заболеваний по этим жалобам и для самостоятельной диагностики заболеваний пациентами без специалиста. Работа приложения основана на байесовской сети доверия. Благодаря этому приложение за конечное время способно выдавать пользователю результат с приемлемой точностью.

Приложение должно функционировать через сеть Интернет. В настоящее время все большее количество программных продуктов переносится в Сеть, поэтому пользователям не нужно задумываться о его местоположении. Также это позволяет перенести всю вычислительную нагрузку с компьютера пользователя на внешний сервер. Еще одно преимущество Web-интерфейса - кроссплатформенность. Приложение должно работать одинаково для всех операционных систем, в том числе и мобильных. Это позволит увеличить круг пользователей.

Данная ЭС должна удовлетворять следующим требованиям:

-должна существовать база данных, в которой будет содержаться информация о диагнозах, симптомах, факторах и о пользователях;

-должна проводиться регистрация пользователей для работы с приложением, приложение должно быть доступно без регистрации;

-вся предоставляемая информация должна быть доступна пользователям системы через интернет;

-система должна опрашивать посетителя о его жалобах;

-выдача результатов работы системы в удобном для пользователя виде;

-система должна обладать группами прав, для разграничения доступа к управлению хранимой информацией;

-у системы должны быть методы для обучения экспертами.

Таким образом, выше были описаны основные функциональные возможности программного обеспечения.

Для достижения сформулированной цели необходимо решить следующие задачи:

-создать приложение для просмотра информации о диагнозах;

-выбрать инструментальные средства создания ЭС;

-реализовать алгоритм диагностики на основе байесовского метода;

-реализовать добавление новых диагнозов, симптомов, факторов в ЭС;

-реализовать возможность обучения экспертной системы.

1.2 Актуальность создания системы

По данным Всемирной организации здравоохранения, во всем мире насчитывается около 37 миллионов слепых людей и 124 миллиона человек с плохим зрением. В России, по данным независимых источников, каждый второй житель имеет какое-либо нарушение зрения. От воспалительных заболеваний ежегодно нарушается зрение у 4 млн. россиян. 60 процентов россиян старше 50 лет испытывают серьезные проблемы со зрением. При этом три четверти заболеваний можно было бы избежать при своевременной диагностике и лечении заболевания.

Данная экспертная система может применяться врачами-офтальмологами для автоматизации работы и для консультации в случае при неоднозначных симптомах не проводить анализ для всех заболеваний, а двигаться в сторону наиболее вероятных диагнозов.

На сегодняшний день подобная система будет актуальна тем, что большинство людей слишком заняты и не ценят своё здоровье, а поэтому не спешат идти к врачу, экономя время и деньги.

Подобных систем мало. Имеются ввиду системы, основанные на диалоге с пациентом. Существуют экспертные системы для диагностирования глазных заболеваний на основе изображения глазного дна, но они требуют работы со специалистом. Большинство систем оценивает общее состояние организма и в такой специализированной области не может дать удовлетворяющего ответа. Возможно, подобные системы существуют и установлены в различных клиниках, но доступ к ним имеют только сотрудники, вследствие чего их изучение затруднено.

Поэтому разработка экспертной системы диагностирования глазных заболеваний для автоматизации работы врача-офтальмолога и для взаимодействия с пациентом без специалиста является актуальной.

1.3 Описание предметной области

.3.1 Понятие офтальмологии

Офтальмология ("ophthalmos" - глаз и "logos" - слово, наука) - это область клинической медицины, которая занимается изучением этиологии, патогенеза и различных проявлений нарушений функции зрения человека. Эта наука изучает всевозможные заболевания органов зрения - глазного яблока и его придатков, окружающей глаз клетчатки и образующих глазницу костных структур.[1]

Врачей этой специальности называют офтальмологами, или окулистами (от лат. oculue - глаз). Офтальмология выделилась в самостоятельную дисциплину как из-за важности функций органа зрения, так и из-за особенностей методов его обследования.

Орган зрения является важнейшим орудием познания внешнего мира. Основная информация об окружающей действительности (до 70%) поступает в мозг именно через этот анализатор. Следует подчеркнуть, что глаз - это дистантный анализатор высшего порядка. Ему свойственно пространственное восприятие глубины, передвижения предметов, их удаленности, телесности. Неслучайно в ряде стран существовали религиозные секты, члены которых поклонялись богу в образе глаза. Хорошо известно, что даже незначительная потеря зрения может изменить судьбу человека. Что страшнее: жить слепым или умереть? Многие литературные произведения отвечают на этот вопрос так: лишить человека зрения - худшее наказание, чем лишить его жизни.

Офтальмология занимает заметное место в медицинской науке. Орган зрения или «зеркало души», как его называют в литературе, является одновременно неплохим «зеркалом здоровья» человеческого организма. Большинство заболеваний человека находят свое подтверждение в специфических глазных проявлениях. Для примера можно привести изменения глазного дна при гипертонической болезни, изменения сосудов при диабете, изменения зрительного нерва при внутричерепных новообразованиях и другие. Многие врачи других медицинских специальностей зачастую нуждаются в консультациях офтальмолога для уточнения прогноза заболевания или выбора оптимального варианта лечения. Если же искать точки соприкосновения офтальмологии с другими отраслями медицины, то можно с уверенностью сказать, что все они в той или иной мере связаны с офтальмологией.[2]

1.3.2 Глазные заболевания и их симптомы

По данным Всемирной организации здравоохранения, во всем мире насчитывается около 37 миллионов слепых людей и 124 миллиона человек с плохим зрением. Каждые пять секунд в мире слепнет один взрослый человек, каждую минуту - ребенок.

В России, по данным независимых источников, каждый второй житель имеет какое-либо нарушение зрения. От воспалительных заболеваний ежегодно нарушается зрение у 4 млн. россиян. 60 процентов россиян старше 50 лет испытывают серьезные проблемы со зрением, каждый пятый из них страдает глаукомой. Среди основных причин заболеваний органов зрения специалисты называют: воспалительные заболевания, травмы, близорукость, глаукома.

Человеческий глаз - это сложная оптическая система. Ни один, даже очень дорогой фотообъектив не может похвастаться такой точностью и яркостью передачи изображения. Глаз состоит из прозрачных сред (роговицы, внутриглазной жидкости в передней и задней камерах, хрусталика и стекловидного тела) и окружающих их оболочек, причем практически в любой из этих составляющих может выйти из строя, воспалиться. Именно по этим компонентам глаза и его придаточного аппарата основано разделение.

Классификация по МКБ - 10. Класс VII. Болезни глаза и его придаточного аппарата (H00-H59)

Болезни век, слезных путей и глазницы

Болезни конъюнктивы

Болезни склеры, роговицы, радужной оболочки и цилиарного тела

Болезни хрусталика

Болезни сосудистой оболочки и сетчатки

Глаукома

Болезни стекловидного тела и глазного яблока

Болезни зрительного нерва и зрительных путей

Болезни мышц глаза, нарушения содружественного движения глаз, аккомодации и рефракции

Зрительные расстройства и слепота. Другие болезни глаза и его придаточного аппарата.[3]

Список болезней, выбранных для тестирования приложения можно посмотреть в Приложении А.

Есть множество внешних и внутренних факторов, которые плохо сказываются на качестве зрения и ведут к проблемам.

Возраст.

Формирование глаза обычно заканчивается к 18 годам. Самый опасный возраст для развития близорукости - это 9-14 лет. Осложнения на глаза могут дать гормональные сбои в период полового созревания, колоссальная нагрузка во время учебы, экзаменов. 40 лет - это следующий «переходный» возраст для глаз, когда показываться офтальмологу нужно регулярно. К этому времени в зрительной системе, как и во всем организме, начинаются возрастные изменения. В них запускаются естественные процессы (дистрофические процессы), которые потом могут стать основой серьезных болезней глаз. После 55 лет большинству людей приходится сталкиваться с глазными заболеваниями. Самые распространенные: глаукома, катаракта, близорукость и центральная дистрофия сетчатки.

Наследственность.

Многие болезни передаются по наследству. Такие как астигматизм, близорукость, глаукома, дальнозоркость, макулодистрофия.

Общее состояние организма.

Различные заболевания - не менее важная причина ухудшения зрения. Покраснение, раздражение, слезотечение глаз сопровождают заболевания щитовидной железы, диабет, атеросклероз, гипертония, тяжелый ревматический артрит, заболевания кишечника, нарушения кровообращения при остеохондрозе.

Вредные привычки и влияние вредных веществ.

Вредные вещества, такие как алкоголь и наркотики или пристрастие к курению вызывает пагубные изменения во всём организме, а не только заболевания глаз. Курение может вызвать конъюнктивит, закупорку сосудов, табачную амблиопию. Алкоголь и наркотики - атрофию зрительного нерва.

Солнечный свет.

Воздействие на глаз сильного солнечного света может ускорить в течении длительного времени может ускорить процесс корковой катаракты.

Работа с компьютером.

В последнее 10-летие появился диагноз «компьютерный синдром». При длительной работе на ПК возникает синдром «сухого глаза».

Это не полный перечень причин, которые портят зрение: ветер, дым, смог, испарение лаков и красок, напряжение внимания при работе с ПК, длительный прием медикаментов, нанесение косметики и т.д.[4]

Список факторов, выбранных для тестирования приложения можно посмотреть в Приложении А.

Симптомы глазных заболеваний могут проявляться различно, это могут быть различные изменения зрения (центрального и бокового), неприятные ощущения (боли, рези, чувства инородного тела), а так же изменения на самом глазном яблоке или окружающих глаз тканях (образования на веках, выпадение ресниц). Данные симптомы могут возникать внезапно (молнии перед глазами, острая боль) или нарастать постепенно (снижение зрения, чувство сухости), оставаясь незаметными для человека в течении продолжительного времени. Как правило, большинство таких жалоб вызваны проблемами в органе зрения, но часто их появление связано и с общими заболеваниями организма.

Несмотря на все многообразие заболеваний глаз, пациенты, зачастую, имеют очень похожие симптомы глазных болезней.

Например, любое глазное воспаление проявляется покраснением глаза. Каждая инфекция конъюнктивы сопровождается отделяемым из глаза. Симптомами более серьезных заболеваний роговицы, сосудов глаза, сетчатки, хрусталика, является снижение остроты зрения. Далее приведены основные симптомы заболеваний глаз, которые пациент может заметить самостоятельно. Большинство из них является поводом для обращения к специалисту.[5]

Боль или дискомфорт в области век самая частая жалоба может характеризовать множество глазных заболеваний.

Липкое отделяемое из глаза может быть из-за блефарита, дакриоцистита или конъюнктивита.

Вспышки света могут появиться вследствие отслойки сетчатки или стекловидного тела, разрыва сетчатки.

Двоение или диплопию могут вызвать астигматизм, диабетическая ретинопатия, кератоконус.

Снижение зрения вызывают многие заболевания.

Искажение видимых объектов может быть из-за астигматизма, кератоконуса или макулодистрофии.

Многие заболевания вызывают покраснение век или глаза.

Опухоль на веках любого цвета появляется из-за базалиомы, халязиона или ячменя.[12,13]

И это не полный список симптомов.

Список симптомов, выбранный для тестирования приложения можно посмотреть в Приложении А.

1.3.3 Виды и методы диагностики офтальмоилоги

Офтальмология стала самостоятельным направлением в медицине, отделившись от общей хирургии в XIX в. Позже она разделилась на виды, основанные на методах лечения.

Клиническая офтальмология занимается вопросами консервативного лечения патологий глаза, хирургическая - оперативными вмешательствами на органах зрения. Отдельно стоит неотложная офтальмология, которая решает острые состояния, такие как травмы глаза, ожоги роговицы, отслоение сетчатки и другие.

Для диагностики офтальмологических заболеваний используется множество разнообразных специальных методов исследования. В настоящее время глазной врач в своей работе использует периметр, офтальмоскоп, щелевую лампу, тонометр, гониоскоп, таблицы для определения остроты зрения (см. рис. 1.1) и цветоощущения, эхографическое и электрофизиологическое оборудование, аппараты для оценки циркуляции крови и внутриглазной жидкости. С помощью этих методов офтальмолог может довольно точно определить зрительные функции и физиологические параметры глаза, визуально оценить состояние его тканей и образований, наблюдать патологические процессы и т. д.[6]

Рисунок 1.1 - Таблица Д.А. Сивцева для исследования остроты зрения

Обилие методов объясняется многообразием функций глаза и его доступностью для наблюдения. Именно многообразие методов исследования и их высокая разрешающая способность позволяет офтальмологам довольно точно распознавать патологии у большинства больных. Установить диагноз существенно помогает также детальный опрос больного.[6]

Диагностика зрения - это наиболее важный этап в борьбе за здоровье глаз. Существуют серьезные глазные заболевания, оказывающие значительное влияние на зрение. Ранняя диагностика и лечение этих заболеваний являются основным способом предупреждения частичной потери зрения, а иногда и слепоты. Более того, в результате диагностики можно по глазным проявлениям обнаружить на начальных стадиях такие общие заболевания, как: гипертоническая болезнь, сахарный диабет, атеросклероз, туберкулез, ревматизм, шейный остеохондроз, болезни щитовидной железы и многие другие.

Качественная диагностика напрямую зависит от технического оснащения.

Помимо приборов, которые предоставляют данные для офтальмолога (ретинальная камера, щелевая лампа, пахиметр), на основании которых он заключает диагноз, существуют экспертные системы, разработанные для диагностики и помощи врачам. При работе подобных систем врач не принимает участия или его участие минимально.

1.3.4 Определение экспертных систем, достоинство и назначение

Экспертные системы - это яркое и быстро прогрессирующее направление в области искусственного интеллекта. На протяжении всего своего существования экспертные системы вызывают к себе повышенный интерес. Причиной этого интереса является возможность их применения к решению задач из самых различных областей человеческой деятельности. Пожалуй, не найдется такой проблемной области, в которой не было бы создано ни одной экспертной системы или, по крайней мере, такие попытки не предпринимались бы.[7]

Экспертная система - это программное обеспечение, которое выполняет функции эксперта при решении какой-либо компетентной ему задаче. Экспертная система оперирует со знаниями, которые определённым образом формализованы и представлены в памяти ЭВМ в виде базы знаний, которая может изменяться и дополняться в процессе развития системы. Экспертные системы ориентированы на решение задач, которые требуют проведения экспертизы человеком-экспертом. Они выдают советы, дают консультации, выполняют классификацию и ставят диагноз. В отличие от программ, использующих процедурный анализ, экспертная система решает задачи в конкретной предметной области на основе дедуктивных рассуждений. Подобные системы нередко способны найти решение задачи, которая плохо определена или не структурирована. Это полезно в тех системах, где существует недостаток знаний или невозможно провести полный анализ. Главное достоинство экспертной системы - возможность накапливания знаний, сохранение их длительное время, обновление и тем самым обеспечение относительной независимости конкретной организации от наличия в ней квалифицированных специалистов.

Обычная статическая ЭС состоит из следующих основных компонентов (рис. 2.):

решателя (интерпретатора);

рабочей памяти (РП), называемой также базой данных (БД);

базы знаний (БЗ);

компонентов приобретения знаний;

объяснительного компонента;

диалогового компонента.

База данных (рабочая память) предназначена для хранения исходных и промежуточных данных решаемой в текущий момент задачи.

База знаний в экспертной системе предназначена для хранения долгосрочных данных, описывающих рассматриваемую область, и правил, описывающих целесообразные преобразования данных этой области.

Решатель, используя исходные данные из рабочей памяти и знания из БЗ, формирует последовательность правил, которые применяются к исходным данным и приводят к решению задачи.

Компонент приобретения знаний автоматизирует процесс наполнения экспертную систему знаниями, осуществляемый пользователем-экспертом.

Объяснительный компонент объясняет, как система получила решение задачи (или почему она не получила решение) и какие знания она использовала в процессе.

Искусственный интеллект - самое молодое научное направление. Появление его было подготовлено развитием мощности вычислительных машин.

Рисунок 1.2 - Структура статической ЭС

Искусственный интеллект занимает исключительное положение. Это связано со следующим: сейчас часть функций программирования оказалось возможным передать машине. При этом общение с машиной происходит на языке, близком к разговорному. Для этого в ЭВМ закладывают огромную базу знаний, способы решения, правила, процедуры синтеза, программы, а также средства общения, позволяющие пользователю легко общаться с ЭВМ. Если раньше производство ориентировалось на участие человека, то в настоящее время находят применение технологиям, основанным на роботизации и автоматизации системы управления. Интеллектуальные системы в настоящее время начинают занимать ведущее положение в проектировании образцов изделий. Часть изделий невозможно спроектировать без их участия.

Системы, относящиеся к системам искусственного интеллекта в настоящее время:

-экспертные системы. Первые системы, которые нашли широкое применение. Их элементы используются в системах проектирования, диагностики, управления и играх. Основаны на вводе знаний экспертов в ЭВМ и разработке специальной системы по их использованию.

-системы естественно-языкового общения. Данные системы позволяют производить обработку связанных текстов по какой-либо тематике на естественном языке.

-системы речевого общения.

-системы обработки визуальной информации. Находят применение в обработке аэрокосмических снимков, данных, поступающих с датчиков.

-системы машинного перевода.

.3.5 Области применения экспертных систем

Существует ряд прикладных задач, которые решаются с помощью систем, основанных на знаниях, более успешно, чем любыми другими средствами. При определении целесообразности применения таких систем нужно руководствоваться следующими критериями:

.данные и знания надежны и не меняются со временем;

.пространство возможных решений относительно невелико;

.в процессе решения задачи должны использоваться формальные рассуждения;

.должен быть по крайней мере один эксперт, способный явно сформулировать свои знания и объяснить свои методы применения этих знаний для решения задач.

В таблице 1.1 приведены сравнительные свойства прикладных задач, по наличию которых можно судить о целесообразности использования для их решения экспертных систем.

Таблица 1.1 - Критерий применимости экспертных систем

ПрименимыНеприменимыНе могут быть построены строгие алгоритмы или процедуры, но существуют эвристические методы решения.Имеются эффективные алгоритмические методы.Есть эксперты, которые способны решить задачу.Отсутствуют эксперты или их число недостаточно.По своему характеру задачи относятся к области диагностики, интерпретации или прогнозирования.Задачи носят вычислительный характер.Доступные данные "зашумлены".Известны точные факты и строгие процедуры.Задачи решаются методом формальных рассуждений.Задачи решаются процедурными методами, с помощью аналогии или интуитивно.Знания статичны (неизменны).Знания динамичны (со временем изменяются).

В целом экспертную систему не рекомендуется применять для решения следующих типов задач:

-математических, решаемых обычным путем формальных преобразований и процедурного анализа;

-задач распознавания, поскольку в общем случае они решаются численными методами;

-задач, знания о методах решения которых отсутствуют (невозможно строить базу знаний).[8]

Области применения систем, основанных на знаниях, могут быть сгруппированы в несколько основных классов: медицинская диагностика, контроль и управление, диагностика неисправностей в механических и электрических устройствах, обучение.

Диагностика.

Системы диагностирования используются для установления связи между нарушениями их возможными причинами. Наиболее часто это медицинская диагностика или техническая. MYCIN - самая известная медицинская система, которая предназначена для диагностики и наблюдения за состоянием больного при бактериальных инфекциях и менингите.

Прогнозирование.

Прогнозирующие системы предсказывают возможные результаты или события на основе данных о текущем состоянии объекта (погода, урожайность, поток пассажиров).

Планирование и проектирование.

Такие системы предназначены для достижения конкретных целей при решении задач с большим числом переменных (консультации по приобретению товаров, проектирование космических станций и так далее).

Интерпретация.

Интерпретирующие системы обладают способностью получать определенные заключения на основе результатов наблюдения. PROSPECTOR одна из наиболее известных интерпретирующих систем. Этой системе удалось обнаружить залежи руды стоимостью в миллион долларов, причём наличие этих залежей не предполагал ни один из экспертов. Другая система подобного типа - HASP/SIAP. Она определяет местоположение и тип судов в океане по данным акустических систем слежения.

Контроль и управление.

Интеллектуальные системы контроля могут принимать решения, анализируя данные, поступающие от нескольких источников. Их применение - это работа на атомных электростанциях, управление воздушным движением и осуществление медицинского контроля. Они полезны для оказания помощи при выработке решений в критических ситуациях и при регулировании финансовой деятельности предприятия.

Обучение.

Экспертно-обучающие системы реализуют такие педагогические функции, как обучение, контроль, диагностику и тестирование знаний обучаемого. Подобные системы создают модель того, что обучающийся знает и как он эти знания применяет к решению проблемы. Системы диагностируют и указывают обучающемуся его ошибки, анализируя модель и строя планы исправлений указанных ошибок.

Большинство экспертных систем включают знания, по содержанию которых их можно отнести одновременно к нескольким типам.[9]

Методы искусственного интеллекта нашли широкое применение в области диагностики заболеваний. Интеллектуальные системы в области медицинской диагностики направлены на поддержку принятия решения о характере заболевания практикующим врачом на основании результатов различных медицинских обследований и данных о самочувствии пациента.

Большинство таких систем носят прескриптивный характер, то есть имеют вид правил: если есть такие наблюдения, то необходимо делать такое вмешательство.

1.4 Рассмотрение аналогов существующей системы

Существуют аналогичные системы, реализованные в виде приложений и используемые в различных клиниках. Доступ к подобным системам есть только у сотрудников клиники. Из-за того, что они являются коммерческой тайной, их сложно изучить.

Рассмотрим другие экспертные системы, действия которых не аналогичны, но они известны.

Диагноз.ру - известная система онлайн-диагностики (рисунок 1.3). Это система постановки диагноза по симптомам. Система бесплатная, создана в 2002 году. Система широкого профиля, помимо глазных заболеваний может диагностировать болезни кожи, крови, нервной системы и т.д. Используется искусственный интеллекта на базе нечеткой логики (fuzzy logic), что позволяет получить результаты диагностики, по достоверности близкие к клиническим. Достоверность результатов системы на данный момент составляет в среднем 68%.

CASNET/GLACOMA - это медицинская экспертная система для диагностики и выдачи рекомендаций по лечению глазных заболеваний, связанных с глаукомой. На ее основе разработан язык инженерии знаний EXPERT, с помощью которого создан ряд других медицинских диагностических систем по офтальмологии, ревматологии и эндокринологии. Особенностью этого семейства систем является явное выделение понятия факта (априорно известных или опытных данных) и гипотезы (предположительного диагноза или рекомендации) и использование правил, логически связывающих факты между собой и гипотезы с фактами.[10]

Рисунок 1.3 - Система диагностики Диагноз.ру

Другая компьютерная система диагностики глазных заболеваний DIADEL предназначена для автоматического установления раннего диагноза глазных заболеваний (диабетическая ретинопатия, отделение сетчатки, глаукома) по состоянию сосудистой системы на цифровых изображениях глазного дна человека (рисунок 1.4).

Система автоматически подсчитывает около десятка характерных признаков кровеносных сосудов на изображениях глазного дна: число разветвлений, углы разветвлений, извилистость сосудов, средний диаметр, амплитуду и частоту вариации толщины сосудов и другие параметры.

Современные компьютеризированные диагностические приборы, отмечают малейшие отклонения от нормы, определяют наличие заболевания на самых ранних стадиях его появления, гарантируют точность постановки диагноза и составление полной картины зрительной системы пациента, фиксируют и прогнозируют возникновения заболевания. [11]

Рисунок 1.4 - Система DIADEL

Все эти системы обладают либо широкой областью применения, либо узкой областью применения и может использоваться по назначению только в ней.

.5 Целесообразность создания системы

Если задаться вопросом, для чего подобной системе представительство в сети, можно выделить несколько моментов. Во-первых, это система для диагностирования глазных заболеваний. Любой интересующийся человек может пройти диагностику и получить достоверные сведения. Во-вторых, это система для автоматизации работы врача и любой врач может провести диагностику пациента и, в случае сомнения, направить больного на анализы наиболее вероятного заболевания. В-третьих, это канал распространения информации о глазных заболеваниях. В-четвёртых, это инструмент косвенного побуждения пойти на приём к офтальмологу.

Но при всех очевидных преимуществах у большинства клиник не подобных систем диагностики. У некоторых есть, но к ним имеют доступ только сотрудники клиники и они не распространены.

Многие больницы понимают, что подобное приложение необходимо, но не знают, как подступиться к этому вопросу, так как сразу возникает несколько проблем:

-отсутствие оборудования или подключения к сети Интернет в больнице;

-отсутствие большого числа экспертов для обучения системы;

-отсутствие финансовых средств на разработку и поддержку приложения.

А существующие приложения в малочисленных клиниках могут доставлять ряд проблем. Проблемы могут быть следующие:

-необходимо обучение для работы с программой;

-сложная и неудобная система обучения или отсутствие таковой;

-конфликты с разработчиками, сложность в поддержке приложения;

-нюансы взаимодействия: зачастую заказчики доверяются разработчикам в заключении договоров на хостинг и доменное имя, а при прекращении отношений часто теряют доступ к управлению доменом, хостингом, сайтом.

Отсутствие оборудования и подключения к сети Интернет обсуждать сложно, так как это вопрос бюджета и компьютеризации конкретной организации или региона.

Остальные проблемы решаемы: необходимо найти систему, с которой могли бы работать простые пользователи компьютера, и построить отношения с разработчиками так, чтобы ежедневное использование сайта от них не зависело.

Сегодня существуют различные возможности для создания. Можно обратиться к услугам профессионалов или создать сайт самостоятельно.

Для управления сайтом достаточно одного человека. Он должен разграничивать права пользователей на обычных и экспертов, которые могут обучать систему. Поэтому перед разработкой сайта необходимо точно определить на кого точно ориентируется сайт, какую информацию и в каком виде разместить на страницах, разработать стратегию работы с целевой аудиторией.

Так же необходимо помнить, что нельзя ориентироваться только на пользователей. Конкуренты, СМИ, спонсоры и т.д. могут быть заинтересованы сайтом подобного типа и к ним нужно относиться терпимо и тоже учитывать их.

Сайт должен постоянно обновляться, администраторы должны повышать его притягательность, стимулировать интерес пользователей. Сеть Интернет предлагает своим пользователям миллионы веб-сайтов и совершенно невообразимый объём информации. Хоть это и узкоспециализированный сайт, большое внимание нужно уделить визуальным характеристикам сайта, сделать его притягательным, интересным, удобным и запоминающимся

Перспективы развития подобного приложения огромны. Так как на сегодняшний день интернет заполонил жизнь обычного человека и такие интерактивные элементы как форумы, блоги, получение сертификатов, интеграция с социальными сетями, необходимы для сайта. Это привлечёт посетителей и даст рекламу в социальных сетях. А размещаемая на сайте реклама частично покроет расходы на поддержку и развитие сайта. Стоит так же рассмотреть возможность интеграции приложения в систему регистратуры конкретной больницы и записи к специалисту.

.6 Требования технического задания к автоматизированной системе

.6.1 Назначение разработки

Разрабатываемый программный продукт предназначен для диагностирования глазных заболеваний человека по описанию симптомов с помощью байесовских сетей доверия. Данный продукт может использоваться пользователями как консультант для автоматизации работы.

.6.2 Требования к функциональным характеристикам

Программный продукт должен обеспечивать выполнение следующих функций:

1.ввод логина и пароля для регистрации нового пользователя приложения;

2.авторизация для уже зарегистрированных пользователей;

.опрос пользователя о его жалобах;

.вывод результата диагностики по жалобам пациента;

.страница с описанием каждого диагноза, с его симптомами и факторами, которые могут повлиять на возникновение подобного заболевания;

.добавление нового диагноза, симптома или фактора**;

.добавление новых связей типа «диагноз-симптом», «диагноз-фактор»**;

.возможность ведения для каждого пользователя таблицы предварительных диагнозов**;

.добавление и удаление записей из таблицы предварительных диагнозов**;

.обучение сети через добавление записи из таблицы предварительных диагнозов**;

.возможность обучение сети из выводимого результата работы приложения**;

.наличие страницы с описанием приложения.

Входные данные от пользователей:

.логин и пароль;

2.список отмеченных симптомов и факторов;

.название симптома, фактора, диагноза**;

.диагноз с набором симптомов и факторов**;

.предварительный диагноз: диагноз, симптомы, факторы**;

.выбор предварительного диагноза**.

Выходные данные приложения:

.список наиболее вероятных диагнозов;

2.таблица с предварительными диагнозами**;

.описание диагнозов.

1.6.3 Стадии и этапы разработки

- техническое задание - формулирование назначения, необходимой функциональности, особенностей используемых технических средств;

эскизный проект - построение модели (внутреннее представление данных), вида (интерфейса пользователя), определение согласования между ними;

технический проект - реализация ввода входных данных, интерфейса пользователя;

рабочий проект - реализация всех необходимых функций для требуемого продукта, определенных в техническом задании, выполнение назначения продуктом согласно техническому заданию;

проведение испытаний программы.

.7 Теоретические сведения о байесовских сетях доверия

.7.1 Представление нечётких знаний

Для создания экспертной системы для диагностики глазных заболеваний человека необходимы эффективные, компактные и понятные способы представления информации, связанные с неопределённость. Так как при решении реальных задач часто возникают ситуации неопределенности, которые можно разделить на две категории: отсутствие достаточно полного и достоверного знания о предметной области и отсутствие возможности получить исчерпывающую информацию о конкретном состоянии среды, объекте, ситуации и т.п.

В первом случае речь может идти о плохо изученных явлениях, противоречивых теориях или нечетко сформулированных концепциях. Возможна также и противоположная ситуация: предметная область хорошо изучена, но эксперты предпочитают прибегать к неформальным, но более эффективным, эвристическим приемам, вместо использования рутинных точных методов.

Существуют и более прозаичные источники неопределенности знаний, любая информация обладает некоторой погрешностью, допустим процент ошибок, обусловленных «человеческим фактором». Возможно, также, что приходиться пользоваться информацией, полученной ранее, и которую невозможно не проверить, не дополнить не получить повторно.

Для преодоления проблемы неопределенности знаний в области искусственного интеллекта были разработаны различные методы, применяемые при построении экспертных систем. Наиболее неформальный подход - это использование коэффициентов уверенности, выражающих степень достоверности знания (пример использования MYCIN). Альтернативный способ заключается в использовании теории вероятности. Однако не ясно, как с помощью вероятности представить такие понятия как «часто», «иногда», «старый», «высокий» и т.п. Кроме того, теория вероятности подразумевает значительное количество вычислений, для обновления вероятностных оценок. Широкое распространение получили также аппараты нечеткой логики теории и функций доверия. Однако в последние годы внимание исследователей все больше привлекает теория вероятностей, с ее развитым и строго формализованным аппаратом.

Рассмотрим подробнее теорию вероятности для весьма эффективного её использования в представлении неопределённости знаний, а именно байесовскую сеть.

1.7.2 Байесовская сеть

Байесовская сеть (или байесова сеть, байесовская сеть доверия, англ. Bayesian network, belief network) - графическая вероятностная модель, представляющая собой множество переменных и их вероятностных зависимостей.

Математический аппарат байесовых сетей создан американским ученым Джудой Перлом, лауреатом Премии Тьюринга (2011 г.).

Формально, байесовская сеть - это направленный ациклический граф, каждой вершине которого соответствует случайная переменная, а дуги графа кодируют отношения условной независимости между этими переменными. Вершины могут представлять переменные любых типов, быть взвешенными параметрами, скрытыми переменными или гипотезами.

В силу того, что байесовская сеть - это полная модель для переменных и их отношений, она может быть использована для того, чтобы давать ответы на вероятностные вопросы. Это процесс вычисления апостериорного распределения переменных по переменным-свидетельствам называют вероятностным выводом. Это следствие дает универсальную оценку для приложений, где нужно выбрать значения подмножества переменных, которое минимизирует функцию потерь, например, вероятность ошибочного решения.[15]

Байесовская сеть позволяет получить ответы на следующие типы вероятностных запросов:

-нахождение вероятности свидетельства,

-определение априорных маргинальных вероятностей,

-определение апостериорных маргинальных вероятностей, включая:

§прогнозирование, или прямой вывод, - определение вероятности события при наблюдаемых причинах,

§диагностирование, или обратный вывод (абдукция), - определение вероятности причины при наблюдаемых следствиях,

§межпричинный (смешанный) вывод (intercausal inference) или трансдукция, - определение вероятности одной из причин наступившего события при условии наступления одной или нескольких других причин этого события.

-вычисление наиболее вероятного объяснения наблюдаемого события (Most probable explanation, MPE),

-вычисление апостериорного максимума (Maximum a-posteriori, MAP).

В основе байесовских сетей лежит теорема Байеса (формула перерасчета гипотез) теории вероятностей для определения апостериорных вероятностей попарно несовместных событий Bi по их априорным вероятностям:

.

Вероятности гипотезы называется апостериорной вероятностью события после наблюдения A, тогда как - априорная вероятность.

Разрабатывая концептуальную модель предметной области, инженер может увидеть, что предметная область хорошо описывается в терминах событий, вероятностей событий, а также причинно-следственных взаимосвязей между ними.

Например, в этих терминах может быть описана задача поиска причин неисправностей. Так - событие А может быть следствием каких-то событий Н. В терминах продукционной модели можно записать:

Если Н, то А, т.е. если происходит событие Н, то произойдет и событие А.

Есть два события Н и , которые составляют полную группу событий и несовместны. Формула полной вероятности события А имеет следующий вид:

,

где Р(Н), P() - априорная вероятность событий Н и соответственно; Р(А/Н), Р(А/) - условные вероятности того, что в результате Н произойдет А или в результате произойдет А.

В задаче диагностики А уже произошло, и ищется причина - произошло А по вине Н или по какой-то иной причине, т.е. .

Формула Байеса позволяет оценить апостериорные вероятности причин, в рассматриваемом случае Н и .

Если Р(Н) > Р(), то более вероятной причиной считается событие H, в противном случае не H.

В конкретных задачах для экспертной системы можно определить больше причин, чем две. Формула Байеса для случая, когда предполагается n несовместных событий, составляющих полную группу:

.

В диагностической системе взаимосвязь между разными событиями может быть более сложная - многоуровневая (рисунок 1.5).

Рисунок 1.5 - Граф связей между событием А и его причинами

Связи на рисунке 1.5 означают, что событие есть результат возможных причин -Е1 и Е2, т.е.:


Тогда диагностика причин происходит последовательно. Сначала вычисляются апостериорные вероятности причин события А:


Обозначим р - . Далее по формуле Байеса находятся вероятности и . В данном случае однозначной уверенности в возникновении нет, т.е. событие-причина произошло с вероятностью р. Отсюда и вероятность того, что или стали причинами для А, вычисляется с учетом р:


Таким образом, вычисляя все вероятности событий - вершин на графе и доходя до нижнего уровня, рассчитываются вероятности всех возможных причин. [16]

Существенным недостатком способа представления знаний на основе формулы Байеса является то, что необходимо заложить в систему много информации об априорных и условных вероятностях. Это трудоемко тем больше, чем более сложной является задача. В этом случае еще более разнообразен граф связей в БЗ (см. рисунок 1.5), который может расти как за счет уровней, так и за счет числа событий на верхних уровнях.

Значения априорных и условных вероятностей могут вычисляться на основе статистических сведений, или это могут быть экспертные оценки вероятностей. В последнем случае говорят о субъективной вероятности событий.

Помимо метода грубой силы (полного перебора) существует несколько подходов к построению алгоритмов. Наиболее значимые можно условно разделить на три категории:

.Упрощение модели. Эти методы пытаются упростить оригинальную модель. Тогда точные алгоритмы могут применяться эффективно в упрощенной сети для получения приближенного решения исходной задачи. Одни действия включают сокращение ребер первоначальной сети, соответствующие слабой зависимости в модели. Другие упрощения включают снижение мощности узлов или кликов. Также может быть включена установка параметров для простой логистической функции, используя вариационные методы.

2.Основанные на поиске. Пытаются найти наиболее вероятные частичные назначения с большой вероятностью совместного распределения вероятностей. Эти методы могут получить хорошую оценку сети практически при всех крайних условных вероятностях, т. е. когда вероятность в узле очень близка к нулю или единице. Трудно получить обоснованную точность при общей сети, которая не удовлетворяет этому условию.

.Стохастической выборки (Монте-Карло алгоритмы). Они порождают случайно выбранные назначения сети в соответствии с вероятностями в модели, а затем вычисляют частоту назначений для наблюдения, как приближение для задачи вывода. Выделяют следующие алгоритмы: алгоритмы формирования выборок с исключением, метод оценки выборок с учетом правдоподобия, алгоритм МСМС (англ. Markov chain Monte Carlo) и др.

Остальные алгоритмы ориентированы на Байесовские сети доверия специфического вида, что серьёзно ограничивает область их применения.[17]

.7.3 Наивный байесовский метод

Как известно, формула Байеса позволяет поменять местами причину и следствие в формулах с условными вероятностями:

.

Пусть в качестве A будет рассматриваться причина, а в качестве B - набор следствий (вектор предикторов) . В этих обозначениях формула Байеса перепишется следующим образом:


Но задачу можно упростить, если предположить, что все признаки независимы друг от друга. Тогда можно вероятность сложного события записать в виде произведения вероятностей каждого события в отдельности:


Намного проще найти n одномерных функций, чем одну n-мерную функцию. При увеличении размерности задачи (количества признаков) выигрыш ещё более заметен.

Таким образом, наивный байесовский метод - это простой вероятностный метод, основанный на применении Теоремы Байеса с (наивными) предположениями о независимости предикторов:


Несмотря на свою простоту, скорость и интерпретируемость результатов, наивно-байесовский алгоритм имеет недостатки:

-перемножать условные вероятности корректно только тогда, когда все входные переменные действительно статистически независимы; допущение этой независимости и обуславливает уточнение "наивно-" в названии алгоритма, хотя, по приведенным в примерам он показывает неплохие практические результаты даже при несоблюдении условия статистической независимости; корректно данная ситуация обрабатывается только более сложными методами, основанными на обучении байесовских сетей;

-невозможна непосредственная обработка непрерывных переменных - их требуется разбивать на множество интервалов, чтобы атрибуты были дискретными; такое разбиение в ряде случаев приводит к потере значимых закономерностей;

-наивно-байесовский подход учитывает только индивидуальное влияние входных переменных на результат классификации, не принимая во внимание комбинированного влияния пар или троек значений разных атрибутов, что было бы полезно с точки зрения прогностической точности, но значительно увеличило бы количество проверяемых комбинаций.[18]

1.7.4 Простейший пример байесовской сети

Предположим, у больного жалобы на быструю утомляемость (b) и на необходимость прищуриваться (n). Подобные симптомы могут быть вызваны амблиопией (a) или миопией (m).

Граф этой ситуации изображен на рисунке 1.6.

Вычислим вероятность каждого заболевания, условные вероятности представлены на рисунке 2.7.

=


Вероятность того, что у больного миопия 74% и амблиопия 49%.

Позже выясняется, что у его родственников были заболевания астенопией (g). Вычислим, используя новые данные: .

С использованием новых данных гипотеза заболевания изменилась.

Рисунок 1.6 - Схема БС с условными вероятностями

2. Проектная часть

.1 Проектирование модели байесовской сети

Для создания подобной системы необходима трехуровневая байесовская сеть: 1й уровень - факторы влияния, 2й - диагнозы, 3й - симптомы.

У каждой вершины в байесовской сети должна быть таблица условных вероятностей. Но рассматривать те случаи, когда истинны несколько диагнозов не корректно. Потому что существуют симптомы, соответствующие нескольким заболеваниям. Тогда, вместо того, чтобы выбрать одно заболевание, система предположит тот вариант, где эти заболевания вместе. Поэтому рассматриваться будут случаи только с одним заболеванием. Поэтому алгоритм вычисления - наивный байесовский метод.

Существуют два способа обучения байесовских сетей с помощью прецедентов: уточнение параметров сети, если структура сети известна, и выбор из множества моделей, применяя введенную метрику ко всей базе прецедентов.

В моей модели обучение будет происходить на основе уточнения и перерасчёта условных и априорных вероятностей. Для этого необходимо хранить статистику по заболеваниям, симптомам и факторам.

Данные, которые будет хранить статистика: количество больных с определённым заболеванием, количество больных с определённым симптомом, количество больных с определённым симптомом и заболеванием, количество больных с определённым фактором и заболеванием.

Формулы, по которым будут вычисляться вероятности:




где - симптом.

.

где - фактор.

Вычисление вероятности фактора стоит рассмотреть подробнее. Можно было бы вычислить вполне обычным способом , но так сделано для удобства подсчёта p(di) для расчёта по формуле Байеса: .

При добавлении нового случая заболевания будет обновляться статистика только по добавленному заболеванию, следовательно пересчитываться будут только вероятности для данного заболевания, его симптомом и факторов. Другие же вероятности симптомов данного заболевания; диагнозов, на которые влияют обновленные факторы; заболеваний с данными симптомами пересчитываться не будут. На малых наборах добавленных заболеваний погрешность будет велика. Но при увеличении статистической выборки погрешность будет стремиться к минимуму.

Блок-схема процесса работы ЭС представлена на рисунке 2.1.

Байесовскую сеть представляет собой массив диагнозов с ссылками на массивы симптомов и факторов. Для каждого диагноза вычисляется вероятность.

Пока сеть мала, можно решать задачу полным перебором, вычисляя вероятность для каждого диагноза. Но при увеличении размеров сети это станет неэффективным. Было решено сократить количество диагнозов, для которых будет вычисляться апостериорная вероятность. Так как у каждого диагноза есть симптомы (потомки). Если у диагноза не выбран ни один симптом, то очевидно, что вычислять его вероятность нет необходимости. Так же у диагнозов с большим количеством потомков, но выбранные пользователем симптомы соответствуют одному или двумя симптомам диагноза, будет высчитана низкая вероятность по сравнению с другими диагнозами. Поэтому было решено отсеивать те диагнозы, у которых процент отмеченных симптомов составляет 20% от общего числа потомков.

Рисунок 2.1 - Блок-схема работы ЭС

На рисунке 2.2 представлен алгоритм расчёта апостериорной вероятности для диагноза.

Рисунок 2.2 - Блок-схема расчёта апостериорной вероятности

Calc_post_for_diagnosis(d) - возвращает апостериорную вероятность для d, где d - это диагноз.

Для того чтобы высчитать вероятность, нужно учитывать неопределённость, то есть в диагнозе у тех симптомов, что не отмечены высчитать их с двумя значениями: установлен и не установлен. Для этого я модифицировала метод размещение с повторением (выборка с возвращением). Количество размещений должно быть равно 2k, где k - количество симптомов у диагноза. Но у диагноза у отмеченных симптомов уже установлено состояние: установлен, т.е. для i-того симптома уже установлено выбрано. Поэтому количество размещений будет 2k-g, где g - количество отмеченных симптомов у диагноза. Очевидно, что случай может выродиться в одно размещение в том случае, если отмечены все симптомы диагноза.

На рисунке 2.3 изображен алгоритм размещений симптомов.

Функция cppr(d, k, mas, mas_num, mdp) размещает симптомы в состояние выбран/не выбран и служит для расчёта апостериорной вероятности. Параметры: d - диагноз, k - место для размещения в массиве mas, mas - массив состоящий из 1 и 0, где 1 - симптом есть, 0 - симптома нет, mas_num - аналог массива mas, только симптомы выбраны пользователем, mdp - массив из 2х элементов, где mas0 - хранит вероятность при условии что d не случился, а mas1 - при условии, что d произошло.

Рисунок 2.3 - Блок-схема алгоритма размещений симптомов

Функция cp рассчитывает две вероятности для одной выборки и возвращает эти вероятности (при условии, что d - произошло и наоборот). Алгоритм работы функции представлен на рисунке 2.4.

Параметры функции cp(): d - диагноз, mas - выборка симптомов.

После того, как для определённых диагнозов подсчитаны вероятности, массив сортируется и диагнозы выводятся в порядке убывания вероятностей.

.2 Структура разрабатываемой системы

Основные компоненты обычной статической ЭС изображены на рисунке 2.5. В моей модели некоторых компонентов не будет: рабочей памяти и объяснительного компонента.

Рисунок 2.4 - Блок-схема для расчёта по одной выборке

Рисунок 2.5 - Структура ЭС

Структура разрабатываемой экспертной системы предоставлена на рисунке 2.5. В качестве диалогового компонента выступает страница с перечнем симптомов и факторов, решателя - скрипт с алгоритмом, базы знаний - база данных, компонента приобретения знаний - методы для добавления и обновления записей в БД.

При анализе поставленной задачи на разработке программного обеспечения для диагностирования глазных заболеваний наиболее удобной для использования оказалась следующая структура: на компьютере-сервере запущен сайт. Работа с пользователями ведется через сеть Интернет, что позволяет получить доступ к приложению в любой точке мира. База данных расположена на внешнем сервере, поэтому резко уменьшается вероятность потери пользовательской информации.

Архитектура системы представлена на рисунке 2.6.

Пользователь со своего персонального компьютера заходит на сайт приложения, где работает специальный скрипт. После получения запросов, скрипт их обрабатывает и возвращает пользователю результаты. При этом вся вычислительная нагрузка остается на внешнем сервере.

Алгоритм работы приложения.

Приложение работает следующим образом:

.компьютер-клиент заходит по url-адресу в браузере на стартовую страницу на сервере;

.запрос авторизации: нужно ввести логин и пароль для продолжения работы с приложением. Если логин и пароль введены неправильно, доступ к приложению запрещается и предлагается повторить ввод. Можно не проходить авторизацию;

.загружается главная страница; при вводе данных для работы приложения и нажатии на какие-либо кнопки выполняются вычисления и представляются пользователю в виде результатов или выполняются другие действия для обучения системы.

Рисунок 2.6 - Архитектура системы

Представления пользователя.

Суть данной диаграммы состоит в следующем: проектируемая система представляется в виде множества сущностей или актеров, взаимодействующих с системой с помощью, так называемых вариантов использования. При этом актером или действующим лицом называется любая сущность, взаимодействующая с системой извне. Это может быть человек, техническое устройство, программа или любая другая система, которая может служить источником воздействия на моделируемую систему так, как определит сам разработчик. В свою очередь, вариант использования служит для описания сервисов, которые система предоставляет актеру.

Основным средством защиты информации в разрабатываемой системе является авторизация.

Авторизация - предоставление субъекту некоторых прав доступа к информационному объекту.

В системе присутствуют несколько ролей, которым выданы права на доступ и использование информации:

-Пользователь - имеет доступ к просмотру и поиску информации, диагностике.

-Эксперт - имеет то же права, что и пользователь. Так же может обучать систему через добавление новых вершин и рёбер в сеть и может вести таблицу предварительных диагнозов.

Далее, на рисунке 2.7. представлены варианты использования ПО.

Рисунок 2.7 - Диаграмма прецедентов.

Как правило, компьютеры и программы, входящие в составе любой системы, не являются равноправными. Некоторые из них владеют ресурсами, другие имеют возможность обращаться к этим ресурсам. Компьютер (или программу), управляющий ресурсом, называют сервером этого ресурса. Клиент и сервер какого-либо ресурса могут находиться как в рамках одной вычислительной системы, так и на различных компьютерах, связанных сетью.

Пользователи отправляют запросы к базе данных через сервер. Обратно из базы данных приходят данные на сервер и передаются пользователям. Архитектура системы изображена на рисунке 2.8. Для передачи данных используются следующие протоколы:

-HTTP (Hyper Text Transfer Protocol);

-SMTP (Simple Mail Transfer Protocol);

-MySQL Client/Server Protocol.

Рисунок 2.8 - Архитектура системы

2.3 Разработка инфологической модели базы данных

База данных состоит из сущностей. Сущность представляет собой совокупность данных, обладающих общими свойствами. При этом каждая сущность должна быть уникальна и не должна описывать несколько объектов реального мира. Это важное свойство всех реляционных баз данных. Сущности должно быть только существительным, так как оно характеризует не действие или процесс, объекты.

База данных требуется для хранения информации, которая будет использоваться в системе. От правильного проектирования базы данных зависит скорость работы и возможность дальнейшей модификации приложения. Нередки случаи, когда хорошо спроектированные программные системы рушились, в момент изменения схемы БД. Поэтому к процессу проектирования БД стоит подойти крайне серьезно, так как для изменения уже работающей базы данных нужны усилия на порядок выше, чем для проектирования «с нуля». Для хранения информации в базе данных необходимо предварительно определить имена и параметры данных, свести эту информацию в реляционные таблицы и установить между ними связи. Кроме того, необходимо задать первичные и вторичные ключи. Первичный ключ необходим для уникальной идентификации сущности, а вторичный - для обеспечения связей между сущностями.

Данная база данных должна содержать следующие сущности:

.Диагнозы

.Симптомы

.Факторы

.Предварительные диагнозы

.Пользователи

Отношение в самом общем виде представляет собой связь между двумя и более сущностями. Отношение должно быть однозначно поименовано. Существует множество видов связей, однако, самые распространенные из них - «один к одному» и «один ко многим». Остальные виды связей могут быть выражены через них.

Диаграммы сущность-связь (ERD) предназначены для разработки моделей данных и обеспечивают стандартный способ определения данных и отношений между ними.

Построим инфологическая модель базы данных: диаграмма «сущность-связь» (рисунок 2.9).

На рисунке 2.9 изображена инфологическая модель БД. Определим атрибуты сущностей. Для выражения связи «многие ко многим» в связи между диагнозы - симптомы, диагнозы - факторы, предварительные диагнозы - симптомы, предварительные диагнозы - факторы используются дополнительные таблицы, которые связаны с обоими таблицами связями «один ко многим». При этом в таблицах для связи диагнозов и симптомов, диагнозов и факторов будет использованы дополнительные поля, поэтому эти две таблицы тоже будут описаны как сущности.

Рисунок 2.9 - Инфологическая модель базы данных: диаграмма «сущность-связь»

Атрибуты сущностей

1.Диагнозы: название, описание, вероятность, количество больных.

2.Симптомы: название, количество больных.

.Диагноз-симптом: диагноз, симптом, количество больных с таким диагнозом и таким симптомом, p(s/d), p(s/-d).

.Факторы: название.

.Диагноз-фактор: диагноз, фактор, p(d/f), количество больных с таким диагнозом и при таком факторе.

.Пользователи: логин, пароль, тип.

.Предварительные диагнозы: диагноз, пользователь, комментарий.

На основе диаграммы «сущность-связь» строится логическая модель базы данных. Логическая модель БД представляет собой описание объектов предметной области, их атрибутов и взаимосвязей между ними в том объеме, в котором они подлежат непосредственному хранению в базе данных системы. А на основе логической модели строится физическая.

База данных данного программного обеспечения состоит из 9 таблиц. Рассмотрим каждую таблицу.

Таблица Diagnosis содержит информацию о диагнозах. Описание полей сущности diagnosis приведены в таблице 2.1.

Таблица 2.1 - Мнемоническое описание атрибутов сущности diagnosis.

Наименование атрибутаТип атрибутаОграниченияIdIntegerПервичный ключNameVarchar(200)Уникальный, не пустойDescriptionTextНе пустойProbabilityDoubleПо умолчанию 0, не пустойPatiensIntegerПо умолчанию 0, не пустой

Таблица Symptom содержит информацию о симптомах. Описание полей сущности symptom приведены в таблице 2.2.

Таблица 2.2 - Мнемоническое описание атрибутов сущности symptom.

Наименование атрибутаТип атрибутаОграниченияIdIntegerПервичный ключNameVarchar(200)Уникальный, не пустойPatiensIntegerПо умолчанию 0, не пустой

Таблица Diagnosis_Symptom содержит информацию о связи диагноз-симптом. Описание полей сущности diagnosis_symptom приведены в таб. 2.3.

Таблица Factor содержит информацию о факторах. Описание полей сущности factor приведены в таблице 2.4.

Таблица Diagnosis_Factor содержит информацию о связи диагноз-фактор. Описание полей сущности diagnosis_factor приведены в таблице 2.5.

Таблица 2.3 - Мнемоническое описание атрибутов сущности diagnosis_symptom.

Наименование атрибутаТип атрибутаОграниченияIdIntegerПервичный ключId_diagnosisIntegerВторичный ключId_symptomIntegerВторичный ключPatiensIntegerПо умолчанию 0, не пустойProbabilityDoubleПо умолчанию 0, не пустойNonprobabilityDoubleПо умолчанию 0, не пустой

Таблица 2.4 - Мнемоническое описание атрибутов сущности factor.

Наименование атрибутаТип атрибутаОграниченияIdIntegerПервичный ключNameVarchar(200)Уникальный, не пустой

Таблица 2.5 - Мнемоническое описание атрибутов сущности diagnosis_factor.

Наименование атрибутаТип атрибутаОграниченияIdIntegerПервичный ключId_diagnosisIntegerВторичный ключId_factorIntegerВторичный ключPatiensIntegerПо умолчанию 0, не пустойProbabilityDoubleПо умолчанию 0, не пустой

Таблица Users содержит информацию о пользователях. Описание полей сущности user приведены в таблице 2.6.

Таблица Preliminary_Diagnosis содержит информацию о предварительных диагнозах. Описание полей сущности preliminary_diagnosis приведены в таблице 2.7.

Таблица Preliminary_diagnosis_symptom содержит информацию о связи предварительный диагноз - симптом. Описание полей сущности preliminary_diagnosis_symptom приведены в таблице 2.8.

Таблица Preliminary_diagnosis_factor содержит информацию о связи предварительный диагноз - фактор. Описание полей сущности preliminary_diagnosis_factor приведены в таблице 2.9.

Таблица 2.6 - Мнемоническое описание атрибутов сущности user.

Наименование атрибутаТип атрибутаОграниченияLoginVarchar(100)Первичный ключPasswordVarchar(20)Не пустойTypeBooleanПо умолчанию 0, не пустой

Таблица 2.7 - Мнемоническое описание атрибутов сущности preliminary_diagnosis.

Наименование атрибутаТип атрибутаОграниченияIdIntegerПервичный ключId_diagnosisIntegerВторичный ключId_userVarchar(100)Вторичный ключCommentText

Таблица 2.8 - Мнемоническое описание атрибутов сущности preliminary_diagnosis_symptom.

Наименование атрибутаТип атрибутаОграниченияIdIntegerПервичный ключId_symptomIntegerВторичный ключId_diagnosisIntegerВторичный ключ

Таблица 2.9 - Мнемоническое описание атрибутов сущности preliminary_diagnosis_factor.

Наименование атрибутаТип атрибутаОграниченияIdIntegerПервичный ключId_diagnosisIntegerВторичный ключId_factorIntegerВторичный ключ

Ниже на рисунке 2.10 изображена ER-диаграмма базы данных.

Рисунок 2.10 - ER-диаграмма базы данных.

.4 Применение к другим областям медицинской диагностики

Очевидно, что ни база данных, ни структура приложения не привязаны к определённой области медицины, а именно к глазным заболеваниям. Можно сделать вывод, что данная система подойдёт к любой области медицинской диагностики, где можно применить предварительную диагностику по опросу пациента. Например, в психологии. Так же модель должна укладываться в трехуровневую модель сети «факторы -> диагнозы -> симптомы».

Но слишком обобщать медицинскую диагностику не следует. Данная система подойдет для общей диагностики организма, но это будет неэффективно. Потому что, во-первых зависимости во всеобщей диагностике довольно сложны и можно выделить 4й уровень и более, а во-вторых решение сети с большим количеством вершин и рёбер будет рассчитываться очень долго при условии, что метод расчёта не изменится.

2.5 Преимущества веб-приложения

приложение - это прикладное программное обеспечение, логика которого распределена между сервером и клиентом, а обмен информацией происходит по сети. Клиентская часть реализует пользовательский интерфейс, а серверная - получает и обрабатывает запросы от клиента, выполняет вычисления, формирует веб-страницу и отправляет её клиенту согласно протоколу HTTP.

Данный вид приложений имеет целый ряд особенностей, которые накладывают отпечаток на процессы их функционирования, разработки и поддержки:

-выполняются независимо от операционной системы клиента. При этом на него налагается требование кроссбраузерности, вытекающее из различной реализации браузерами стандартов HTML, CSS;

-представляют собой распределенную информационную систему и должны выдерживать максимальное число клиентские обращений;

-в процессе разработки открыты для тестирования с удаленных компьютеров, что оптимально для применения гибкой методологии разработки.

Актуальность исследований в области вопросов построения web-приложений обусловлена тем, что данный вид программного обеспечения:

-перспективен, как инструмент электронной коммерции;

-предоставляет широкие возможности социального взаимодействия;

-в обозримом будущем может составить реальную конкуренцию нативным приложениям мобильных операционных систем (Apple iOS, Google Android, Windows Phone). [23]

Современный компьютер постепенно превращается в веб-устройство и нет смысла в приложениях, которые будут устанавливаться на компьютер.

Преимущества разрабатываемого ПО как веб-приложения:

-портируемость;

-развёртывание;

-централизованное хранение данных и их обновление;

-распространение среди пользователей.

2.6 Обоснование выбора инструментария

Для написания самого приложения будет использован язык PHP 5.3.13, интегрированная среда разработки PHPStorm. Так же будут использоваться HTML5 и CSS3. Будет использован Denwer - набор дистрибутивов и программная оболочка, предназначенные для создания и отладки сайтов на локальном ПК. Denwer включает в себя: веб-сервер Apache, интерпретатор PHP, СУБД MySQL, панель phpMyAdmin для администрирования СУБД, система управления виртуальными хостами.

.6.1 Язык программирования PHP 5.3.13

PHP (англ. PHP: Hypertext Preprocessor - «PHP: препроцессор гипертекста»; первоначально Personal Home Page Tools - «Инструменты для создания персональных веб-страниц») - скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков, применяющихся для создания динамических веб-сайтов.

В области веб-программирования, в частности серверная часть, PHP - один из популярных сценарных языков (наряду с JSP, Perl и языками, используемыми в ASP.NET) благодаря своей простоте, скорости выполнения, богатой функциональности, кроссплатформенности и распространению исходных кодов на основе лицензии PHP.

Язык PHP родился из потребности разрабатывать и поддерживать веб-сайты, обладающие динамической клиент-серверной функциональностью. В 1994 году Расмус Лердорф разработал набор сценариев с открытым исходным кодом на языке Perl, которые впоследствии были переписаны на языке C и превратились в то, чем является современный язык PHP.

Преимущества PHP:

-является свободным программным обеспечением, распространяемым под особой лицензией (PHP license);

-легок в освоении на всех этапах;

-поддерживается большим сообществом пользователей и разработчиков;

-имеет развитую поддержку баз данных;

-имеется огромное количество библиотек и расширений языка;

-может использоваться в изолированной среде;

-предлагает нативные средства организации веб-сессий, программный интерфейс расширений;

-является довольно полной заменой проприетарной среды ASP (Active Server Pages) от Microsoft;

-может быть развёрнут почти на любом сервере;

-портирован под большое количество аппаратных платформ и операционных систем.

Недостатки PHP:

-не подходит для создания десктопных приложений или системных компонентов;

-имеет слабые средства для работы с исключениями;

-глобальные параметры конфигурации влияют на базовый синтаксис языка, что затрудняет настройку сервера и разворачивание приложений;

-объекты передаются по значению, что смущает многих программистов, привыкших к передаче объектов по ссылке, как это делается в большинстве других языков;

-веб-приложения, написанные на PHP, зачастую имеют проблемы с безопасностью.[24]

2.6.2 PhpStorm

PhpStorm - это интегрированная среда разработки на PHP с интеллектуальным редактором, которая глубоко понимает код, поддерживает PHP 5.6, 5.5, 5.4 и 5.3 для современных и классических проектов, обеспечивает лучшее в индустрии автодополнение кода, рефакторинги, предотвращение ошибок налету и поддерживает смешивание языков.

Ключевые возможности:

-интеллектуальный редактор PHP кода с подсветкой синтаксиса, автодополнением кода, расширенными настройками форматирования кода, предотвращением ошибок налету;

-поддерживает PHP 5.6, 5.5, 5.4 и 5.3, генераторы, сопрограммы и все синтаксические улучшения;

-PHP рефакторинги, code (re)arranger, детектор дублируемого кода;

-поддержка фреймворков (MVC view для Symfony2, Yii) и специализированные плагины для ведущих PHP фреймворков (Symfony, Magento, Drupal, Yii, CakePHP и многие другие);

-визуальный отладчик для PHP приложений, валидация конфигурации отладчика, PHPUnit с покрытием кода, а также интеграция с профилировщиком;

-HTML, CSS, JavaScript редактор. Отладка и модульное тестирование для JS. Поддержка HTML5, CSS, Sass, SCSS, Less, Stylus, Compass, CoffeeScript, TypeScript, ECMAScript Harmony, Emmet и других передовых технологий веб-разработки;

-интеграция с системами управления версиями, включая унифицированный интерфейс;

-удаленное развертывание приложений и автоматическая синхронизация с использованием FTP, SFTP, FTPS и др.;

-Live Edit: изменения в коде можно мгновенно просмотреть в браузере без перезагрузки страницы;

-PHP UML;

-интеграция с баг-трекерами;

-инструменты работы с базами данных, SQL редактор;

-кросс-платформенность (Windows, Mac OS X, Linux).[28]

2.6.3 HTML и CSS

HTML (от англ. HyperText Markup Language - «язык гипертекстовой разметки») - стандартный язык разметки документов во Всемирной паутине. Большинство веб-страниц содержат описание разметки на языке HTML (или XHTML). Язык HTML интерпретируется браузерами, полученный в результате интерпретации форматированный текст отображается на экране монитора компьютера или мобильного устройства.

Язык HTML является приложением SGML (стандартного обобщённого языка разметки) и соответствует международному стандарту ISO 8879.

Во всемирной паутине HTML-страницы, как правило, передаются браузерам от сервера по протоколам HTTP или HTTPS, в виде простого текста или с использованием шифрования.

Текстовые документы, содержащие разметку на языке HTML (такие документы традиционно имеют расширение .html или .htm), обрабатываются специальными приложениями, которые отображают документ в его форматированном виде. Такие приложения, называемые «браузерами» или «интернет-обозревателями», обычно предоставляют пользователю удобный интерфейс для запроса веб-страниц, их просмотра (и вывода на иные внешние устройства) и, при необходимости, отправки введённых пользователем данных на сервер. Наиболее популярными на сегодняшний день браузерами являются Google Chrome, Mozilla Firefox, Opera и Internet Explorer.

HTML5 был закончен в 2014 году и является самой свежей версией.[26](англ. Cascading Style Sheets - каскадные таблицы стилей) - формальный язык описания внешнего вида документа, написанного с использованием языка разметки.

Преимущественно используется как средство описания, оформления внешнего вида веб-страниц, написанных с помощью языков разметки HTML и XHTML, но может также применяться к любым XML-документам, например, к SVG или XUL.используется создателями веб-страниц для задания цветов, шрифтов, расположения отдельных блоков и других аспектов представления внешнего вида этих веб-страниц. Основной целью разработки CSS являлось разделение описания логической структуры веб-страницы (которое производится с помощью HTML или других языков разметки) от описания внешнего вида этой веб-страницы (которое теперь производится с помощью формального языка CSS). Такое разделение может увеличить доступность документа, предоставить большую гибкость и возможность управления его представлением, а также уменьшить сложность и повторяемость в структурном содержимом. Кроме того, CSS позволяет представлять один и тот же документ в различных стилях или методах вывода, таких как экранное представление, печатное представление, чтение голосом (специальным голосовым браузером или программой чтения с экрана), или при выводе устройствами, использующими шрифт Брайля.[25]

Последней версией является CSS3. Но некоторые разработчики предпочитают не пользоваться ею, так как некоторые браузеры не поддерживают её.

.6.4 Denwer

Денвер (от сокр. Д.н.w.р или ДНВР - джентльменский набор Web-разработчика) - набор дистрибутивов и программная оболочка, предназначенные для создания и отладки сайтов (веб-приложений, прочего динамического содержимого интернет-страниц) на локальном ПК (без необходимости подключения к сети Интернет) под управлением ОС Windows. Распространяется как freeware.

Сразу после установки доступен полностью работающий веб-сервер Apache, работающий на локальном компьютере, на котором может работать неограниченное количество сайтов, что очень эффективно для разработки и отладки сценариев PHP без загрузки его файлов на удаленный сервер. При запуске создается виртуальный диск (по умолчанию Z:), где хранятся все файлы проектов.

Особенностью, отличающей Denwer от других WAMP-дистрибутивов, является автоматическая правка системного файла hosts, являющегося локальным аналогом DNS-сервера, что позволяет обращаться к локальным сайтам, работающим под управлением Денвера, по именам, совпадающим с именем папки, расположенной в каталоге home Денвера.

Базовый пакет включает:

-Веб-сервер Apache 2.2.22 с поддержкой SSI, SSL, mod_rewrite, mod_php.

-Интерпретатор PHP 5.3.13 с поддержкой GD, MySQL, SQLite.

-СУБД MySQL 5.5 с поддержкой транзакций (mysqld-max).

-Система управления виртуальными хостами, основанная на шаблонах.

-Система управления запуском и завершением.

-Панель phpMyAdmin 3.5 для администрирования СУБД.

-Ядро интерпретатора Perl без стандартных библиотек (поставляются отдельно).

-Эмулятор sendmail и сервера SMTP с поддержкой работы совместно с PHP, Perl, Parser и др.

-Установщик.[2727]

Apache HTTP-сервер - свободный веб-сервер.является кроссплатформенным ПО, поддерживает операционные системы Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS.

Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д. Поддерживает IPv6.

Ядро Apache включает в себя основные функциональные возможности, такие как обработка конфигурационных файлов, протокол HTTP и система загрузки модулей.[29]

MySQL - свободная система управления базами данных (СУБД). MySQL является собственностью компании Oracle Corporation, получившей её вместе с поглощённой Sun Microsystems, осуществляющей разработку и поддержку приложения. Распространяется под GNU General Public License или под собственной коммерческой лицензией. Помимо этого разработчики создают функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.

MySQL является решением для малых и средних приложений. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.

Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.[30]

инфологический байесовский сеть заболевание

3. Разработка систем

.1 Разработка базы данных

База данных, которая содержит все таблицы приложения называется med.

Рассмотрим описание реализации всех таблиц:

1.diagnosis;

2.symptom;

3.factor;

4.diagnosis-symptom;

5.diagnosis-factor;

6.users;

7.preliminary_diagnosis;

8.preliminary_diagnosis_symptom;

9.preliminary_diagnosis_factor.

Таблица «diagnosis». Назначение: хранит информацию о диагнозах. Поля таблицы смотреть в таблице 3.1.

Таблица 3.1 - Вид таблицы «diagnosis»

Idnamedescriptionprababilitypatiens1АмблиопияФункциональное расстройство зрительной системы, …0,1942АстигматизмВид аметропии, при котором световые лучи не могут сфокусироваться на сетчатке глаза…0,073

Структура таблицы «diagnosis»table diagnosis (id integer primary key auto_increment, name varchar(200) not null unique, probability double default 0 not null, patiens integer not null default 0, description text);

Таблица «symptom». Назначение: хранит информацию о диагнозах. Поля таблицы смотреть в таблице 3.2.

Таблица 3.2 - Вид таблицы «symptom»

idnamepatiens1ухудшение зрения одного или обоих глаз142затруднение восприятия объемных предметов и оценки расстояния до предметов, нарушение аккомодации и бинокулярного зрения4

Структура таблицы «symptom»table symptom (id integer primary key auto_increment, name varchar(200) not null unique, patiens integer not null default 0);

Таблица «diagnosis-symptom». Назначение: хранит информацию о ребре диагноз-симптом. Поля таблицы смотреть в таблице 3.3.

Таблица 3.3 - Вид таблицы «diagnosis-symptom»

iddiagnosis_idsymptom_idprobabilitynonprobabilitypatiens1110,60,0632410,670,062

Структура таблицы « diagnosis-symptom »table diagnosis_symptom (id integer primary key auto_increment, diagnosis_id integer not null references diagnosis on delete cascade on update cascade, symptom_id integer not null references symptom on delete cascade on update cascade, probability double default 0 not null, nonprobability double default 0 not null, patiens integer not null default 0);

Таблица «factor». Назначение: хранит информацию о факторах. Поля таблицы смотреть в таблице 3.4.

Таблица 3.4 - Вид таблицы «factor»

idname1возраст с 9 до 142Возраст с 40 до 54

Структура таблицы «factor»table factor (id integer primary key auto_increment, name varchar(200) not null unique);

Таблица «diagnosis-factor». Назначение: хранит информацию о ребре диагноз-фактор. Поля таблицы смотреть в таблице 3.5.

Таблица 3.5 - Вид таблицы «diagnosis-factor»

iddiagnosis_idfactor_idprobabilitypatiens1410,1121220,25

Структура таблицы « diagnosis-factor »table diagnosis_factor (id integer primary key auto_increment, diagnosis_id integer not null references diagnosis on delete cascade on update cascade, factor_id integer not null references factor on delete cascade on update cascade, probability double default 0 not null, patiens integer not null default 0);

Таблица «users». Назначение: хранит информацию о пользователях. Поля таблицы смотреть в таблице 2.6.

Таблица 3.6 - Вид таблицы «users»

loginpasswordtypeuser112340user212341

Структура таблицы « users »table users (login varchar(100) primary key, password varchar(20) not null, type boolean not null default '0');

Таблица «preliminary_diagnosis». Назначение: хранит информацию о предварительных диагнозах. Поля таблицы смотреть в таблице 3.7.

Таблица 3.7 - Вид таблицы «preliminary_diagnosis»

iddiagnosis_iduser_idcomment11user221user2Структура таблицы « preliminary_diagnosis »table preliminary_diagnosis (id integer primary key auto_increment, diagnosis_id integer not null references diagnosis on delete cascade on update cascade, user_id integer not null references users on delete cascade on update cascade, comment text);

Таблица «preliminary_diagnosis_symptom». Назначение: хранит информацию о связи предварительный диагноз - симптом. Поля таблицы смотреть в таблице 3.8.

Таблица 3.8 - Вид таблицы «preliminary_diagnosis_symptom»

iddiagnosis_idsymptom_id111212

Структура таблицы « preliminary_diagnosis_symptom»table preliminary_diagnosis_symptom (id integer primary key auto_increment, pd_id integer not null references preliminary_diagnosis on delete cascade on update cascade, symptom_id integer not null references symptom on delete set null on update cascade);

Таблица «preliminary_diagnosis_factor». Назначение: хранит информацию о связи предварительный диагноз - фактор. Поля таблицы смотреть в таблице 3.9.

Таблица 3.9 - Вид таблицы «preliminary_diagnosis_factor»

iddiagnosis_idfactor_id1412122

Структура таблицы « preliminary_diagnosis_factor»table preliminary_diagnosis_factor (id integer primary key auto_increment, pd_id integer not null references preliminary_diagnosis on delete cascade on update cascade, factor_id integer not null references factor on delete set null on update cascade);

3.2 Разработка классов

Сущности БД обычно отображаются в программе на классы. Очень важно разработать методы классов для работы с сущностями. На рисунке 3.1 представлена диаграмма классов.

Рисунок 3.1 - Диаграмма классов.

На изображенной диаграмме видно, что сущности Диагноз (Diagnosis), Симптом (Symptom) и Фактор (Factor) являются наследниками одного класса Entity. Может показаться, что классы Symptom и Factor похожи, но у них имеются существенные отличия. Из-за их схожести был создан промежуточный класс EntityInfluence.

Рассмотрим описание интерфейсов классов на рисунке 3.2. Реализацию классов можно посмотреть в приложении.

Класс Entity: поля являются отображением из БД. У всех сущностей есть такие поля как id, name, probability(prior) и patiens. Методы set*() и get*(…) очевидно для чего нужны, construct - тоже.

В классе EntityEnfluence добавляется новое поле exist, которого нет у сущностей в БД. Это поле типа Boolean и оно нужно для того, чтобы служить показателем наличия того или иного симптома (фактора) отмеченного пользователем у диагноза.

В классе Factor метод addPatien(d, pf) добавляет в статистику +1 для связи фактор-диагноз и пересчитывает вероятность p(d/f). Параметры: d -

диагноз, pf - количество больных с данным фактором.

Рисунок 3.2- Диаграмма классов с методами и полями

В классе симптом поле countpatiens - общее количество больных с этим симптомом.

В классе Diagnosis поле post - апостериорная вероятность, symptoms - массив симптомов, factors - массив факторов, getExistSymptom() - возвращает массив выбранных симптомов пользователем, совпадающих с симптомами диагноза.

Реализацию классом можно посмотреть в Приложении Б.

3.3 Описание методов

Рассмотрим методы не относящиеся к классам и служащие для вычисления решения БС и для взаимодействия с БД (основные).

Методы для работы с базой данных.

connect() - возвращает объект, представляющий подключение к базе данных.

getSymptoms() - возвращает массив симптомов из БД.

getFactors() - возвращает массив факторов из БД.

getDiagnosis(symptoms, factors) - возвращает массив диагнозов из БД с симптомами и факторами. Параметры: symptoms - массив симптомов, factors - массив факторов.() - возвращает количество всех больных.() - возвращает количество больных со всеми симптомами.(idf) - возвращает количество больных с заданным диагнозом. Параметры: idf - id диагноза.

setPatiensProbability(patiens, probability, type, d, s, non_probability) - обновляет запись в таблице, записывая новую вероятность. Параметры: patiens - новое количество больных, probability - новая вероятность, type - «диагноз», «симптом» или «фактор», d - id диагноза, s - id симптома или фактора (необходим при условии обновления записи симптома или фактора), non-probability - новая вероятность при условии, что диагноз не случился (нужен только при обновлении записи симптома).(idpd) - возвращает id симптома из таблицы preliminary_diagnosis_symptom. Параметры: idpd - id записи предварительного диагноза.

getFactorsIdFromPDF (idpd) - возвращает id фактора из таблицы preliminary_diagnosis_factor. Параметры: idpd - id записи предварительного диагноза.

setPreliminaryDiagnosis(d, login, comment) - добавляет новую запись в таблицу preliminary_diagnosis. Параметры: d - диагноз, login - логин эксперта, comment - комментарий эксперта.

setPreliminaryDiagnosisSymptom(idpd, ids) - добавляет новую запись в таблицу preliminary_diagnosis_symptom. Параметры: idpd - id предварительного диагноза, ids - id симптома.

setPreliminaryDiagnosisFactor(idpd, idf) - добавляет новую запись в таблицу preliminary_diagnosis_factor. Параметры: idpd - id предварительного диагноза, idf - id фактора.

deletePreliminaryDiagnosis(idpd) - удаляет запись из таблицы preliminary_diagnosis c id = idpd. Параметры: idpd - id предварительного диагноза.

updatePreliminaryDiagnosis(d, comment) - изменяет существующую запись в таблице preliminary_diagnosis. Параметры: d - диагноз, comment - комментарий эксперта.

deletePreliminaryDiagnosisSymptom(idpd, ids) - удаляет запись из таблицы preliminary_diagnosis_symptom с такими параметрами. Параметры: idpd - id предварительного диагноза, idfs- id симптома.

deletePreliminaryDiagnosisFactor(idpd, idf) - удаляет запись из таблицы preliminary_diagnosis_factor с такими параметрами. Параметры: idpd - id предварительного диагноза, idf - id фактора.

Методы для вычисления решения байесовской сети.

calculate_post(d) - высчитывает апостериорную вероятность d. Параметры: d - диагноз.

4. Описание пользовательского интерфейса и тестирование

.1 Руководство пользователя

Для запуска приложения пользователю достаточно зайти на соответствующий сайт и выбрать нужный пункт. На рисунке 4.1 изображена главная страница сайта.

Рисунок 4.1 - Главная страница сайта

Для того чтобы начать диагностику пользователь должен нажать на пункт кнопку «Начать диагностику» или на пункт в меню вверху сайта с таким же названием. Откроется страница с опросом пациента. Ему необходимо выбрать необходимые симптомы и факторы, если они есть. На рисунке 4.2 и 4.3 изображена страница с выбором симптомов и факторов.

После выбора симптомов и факторов пользователь должен нажать на кнопку «Отправить». Появится страница со списком вероятных диагнозов. Страница со списком диагнозов изображена на рисунке 4.4.

Рисунок 4.2 - Выбор симптомов

Рисунок 4.3 - Выбор факторов

Рисунок 4.4 - Страница с результатом работы системы

Пользователь может просмотреть список всех болезней с описанием симптомов и факторами влияния, нажав на «Болезни» вверху сайта рисунок 4.5.

Рисунок 4.5 - Список болезней

Так же пользователь может зарегистрироваться, хотя в этом для него нет большой необходимости, так как действия доступные зарегистрированному пользователю (без уровня «эксперт») могут выполняться и незарегистрированным пользователем.

Для регистрации необходимо нажать на кнопку «Регистрация» в правом верхнем углу страницы. Форма регистрации представлена на рис. 4.6.

Рисунок 4.6 - Форма регистрации

Для регистрации достаточно заполнить поля логина и пароля. Если в системе уже зарегистрирован пользователь с таким же логином, то будет выведено соответствующее сообщение.

Зарегистрированный пользователь может войти в систему. Для этого нужно ввести логин и пароль в верхней части страницы и нажать кнопку «Вход». Если был введён незарегистрированный пользователь или пароль не совпадает с паролем пользователя, будет выведено соответствующее сообщение.

Выполнивший вход в систему пользователь может выйти, нажав кнопку «Выход» в правом верхнем углу рядом со своим логином.

На этом действия, доступные обычному пользователю заканчиваются.

Пользователям с уровнем «эксперт» доступно больше функций, основной из которых является обучение системы. Так же этим пользователям доступны все функции, которые доступны обычным пользователям. На рисунке 4.7 представлено меню для эксперта.

Рисунок 4.7 - Вид меню для эксперта

Из рисунка 4.7 видно, что в меню появились 2 новых функции: «Добавить» и «Предварительные диагнозы».

Для того чтобы добавить новый симптом, фактор или диагноз эксперт должен перейти по пункту «Добавить» и проделать необходимые действия на открывшейся странице.

На рисунке 4.8 представлена форма для добавления нового симптома.

Для добавления нового симптома достаточно ввести название симптома и нажать «Добавить». Симптом добавится в базу данных.

Для добавления нового фактора нужно заполнить форму ниже формы добавления симптома. Эта форма представлена на рисунке 4.9.

Рисунок 4.8 - Форма для добавления нового симптома

Рисунок 4.9 - Форма для добавления нового фактора

Здесь эксперту нужно проделать те же действия, что и при добавлении нового симптома: ввести название и нажать «Добавить».

Ниже формы для добавления фактора есть формула для добавления диагноза см. рисунок 4.10.

Для добавления нового диагноза в базу данных эксперту необходимо ввести название диагноза и выбрать минимум один симптом. Для выбора нескольких симптомов необходимо зажать клавишу ctrl и выделить необходимые симптомы. Если заболевание не вызывает ни один фактор, то факторы выбирать не обязательно. Чтобы выбрать несколько факторов, необходимо проделать те же действия, что и при выборе симптомов. После выбора и заполнения всех полей нужно нажать кнопку «Добавить». Необходимо помнить, что потом добавить новые симптомы и факторы к диагнозу не получится.

Рисунок 4.10 - Форма для добавления нового диагноза

Эксперт может обучать систему с помощью предварительных диагнозов.

Для того чтобы добавить запись в предварительные диагнозы, эксперту нужно из результатов диагностики выбрать требуемый диагноз и нажать «Добавить диагноз в таблицу» см. рисунок 4.11.

Просмотреть добавленные экспертом диагнозы можно выбрав пункт «Предварительные диагнозы». Как это выглядит см. на рисунке 4.12.


Рисунок 4.11 - Выбор диагноза для добавления в предварительные диагнозы

Любую запись в таблице можно изменить, удалить или подтвердить. С пунктами изменить и удалить всё понятно: запись либо изменяется, либо удаляется. При выборе «Подтвердить» система обучается, обновляя статистику и вероятности, а запись удаляется.

Рисунок 4.12 - Таблица предварительных диагнозов

.2 Тестирование системы

Для тестирования системы было выбрано 23 наиболее известные глазные болезни, 49 симптомов и 13 факторов. Список заболеваний, симптомов и факторов можно посмотреть в приложении.

Для каждого из них было добавлено в статистику по несколько заболеваний с разными наборами симптомов. Это видно в колонке patiens на рисунке 4.13 для диагнозов и на рисунке 4.14 для рёбер диагноз-симптом.

Выберем симптомы, соответствующие Амблиопии (рисунок 4.15).

Нажмём «Отправить». Результат виден на рисунке 4.16.

Рисунок 4.13 - Таблица diagnosis в phpMyAdmin

Рисунок 4.14 - Таблица diagnosis_symptom в phpMyAdmin

Рисунок 4.15 - Выбор симптомов

Рисунок 4.16 - Результат диагностики

На рисунке 4.17 можно видеть результаты той же диагностики для других симптомов с меньшей вероятностью.

Выберем 2 симптома (рисунок 4.19).

Результат представлен на рисунке 4.20.

Выберем фактор влияния, например «у ближайших родственников имеются проблемы с глазами». Результат диагностики можно увидеть на рисунке 4.21.

Рисунок 4.17 - Результат диагностики, заболевания с меньшей вероятностью, чем тестируемое

Рисунок 4.18 - Описание дальнозоркости

Рисунок 4.19 - Выбор симптомов

Рисунок 4.20 - Результат диагностики без выбора факторов

Рисунок 4.21 - Результат диагностики с выбором факторов

Выберем симптомы, не принадлежащие одному диагнозу (рисунок 4.22).

Рисунок 4.22 - Выбор симптомов

Предполагается, что вероятности болезней будут малы. Результат на рисунке 4.23.

Рисунок 4.23 - Результат диагностики

Была выведена всего одна болезнь. Как и предполагалось, её вероятность мала.

Заключение

Основным итогов выпускной квалификационной работы является разработка модели и реализация алгоритма для автоматической диагностики глазных заболеваний человека. В ходе выполнения ВКР было проведено исследование предметной области, также был проведен обзор существующих аналогов разрабатываемой системы и были найдены их существенные недостатки, которые привели к необходимости разработки приложения, удовлетворяющего всем рассмотренным требованиям.

Был разработан алгоритм построения модели для диагностирования. Для представления модели используется аппарат байесовских сетей. Сеть содержит три основных типа вершин: факторы, диагнозы и симптомы. Данный алгоритм может быть применен при разработке любой системы медицинской диагностики диалогового типа с подходящей трехуровневой моделью сети.

Была рассмотрена теория байесовских сетей и наивный байесовский метод, предложен метод диагностики (в основу вывода положен обратный вывод в байесовской сети), описаны схемы, позволившие реализовать данный метод.

Так как приложение хранит результаты вычислений, была разработана структура БД, благодаря которой данные не вычисляются каждый раз, а сохраняются на внешнем сервере.

Для создания данного ПО были выбраны инструментальные средства, обеспечивающие простоту и надежность разработки.

Для работы ПО необходимо выбрать параметры (симптомы и факторы), после чего ПО продолжает работу на сервере. Данная схема позволяет полностью исключить вычислительную нагрузку с компьютера пользователя.

Также было проведено тестирование, в рамках которого прошел вычислительный эксперимент, доказывающий эффективность использования байесовских сетей.

Разрабатываемый программный продукт может быть использован как дополнительное приложение к какому-либо сайту клиники или как самостоятельный сайт.

Данный продукт выглядит несерьёзно: пара страниц и простой метод с кратким описанием диагнозов и неактуальностью регистрации обычных пользователей. Перспективы развития подобного приложения огромны. Так как на сегодняшний день интернет заполонил жизнь обычного человека и такие интерактивные элементы как форумы, блоги, получение сертификатов, интеграция с социальными сетями, необходимы для сайта. Это привлечёт посетителей и даст рекламу в социальных сетях. А размещаемая на сайте реклама частично покроет расходы на поддержку и развитие сайта. Стоит так же рассмотреть возможность интеграции приложения в систему регистратуры конкретной больницы и записи к специалисту. Последние элементы можно сделать платными, присвоив приложению статус freeware, окупая тем самым часть расходов. Так приложение сможет стать конкурентоспособным среди аналогичных систем. Предлагаемый программный продукт сможет найти применение на рынке медицинских услуг.

Список литературы

1.Офтальмология: болезни и лечение глаз / 2011г.

2.Что такое офтальмология? - Глаза для меня. 2013г.

.МКБ-10 - Международная статистическая классификация болезней и проблем, связанных со здоровьем / О глазках [Интернет-портал].

.Образ жизни. Факторы, влияющие на здоровье глаз /Women's Eye Health.com. 2014г.

.Симптомы заболеваний глаз / Вся информация про глаза в доступной для Вас форме. 2015г.

.Что такое офтальмология? / - Посольство медицины

.Определение экспертных систем. Главное достоинство и назначение / - Конспекта.нет

.Область применения экспертных систем / - Студопедия.

.Области применения экспертных систем / - Научно-образовательный центр по фундаментальным проблемам приложений физики низкотемпературной плазмы

.Экспертные системы - интеллектуальные помощники специалистов / В. О. Сафонов ; О-во \"Знание\" России, С.-Петербург. орг. - Санкт-Петербург, 1992 . - 29, 2 c. - Перед загл. авт. В. О. Сафонов, д-р техн. наук. - Библиогр.: с. 30 . - На рус. яз. : 3.75 .

.Диагностика глазных заболеваний / - Расческоff

.Офтальмология Учебник / Под ред. Е.И. Сидоренко. - 2-е изд., испр. - М. ГЭОТАР-Медиа, 2006. - 408 с. ил.

.Кански, Д. Клиническая офтальмология: систематизированный подход. Пер. с англ. / Д. Кански. - М.: Логосфера, 2006. - 744 с.: ил.

.Д.И. Муромцев. Введение в технологию экспертных систем. - СПб: СПб ГУ ИТМО, 2005. - 93 с.

.Глухих И.Н. Интеллектуальные информационные системы : учеб. Пособие для высш. проф. образования / И.Н. Глухих. - М.: Издательский центр «Академия», 2010. - 112 с.

17.Дзюбан Юрий, Болдак Людмила. Анализ алгоритмов вывода в Байесовских сетях доверия. Міжнародна конференція "Високопродуктивні обчислення" HPC-UA2012 (Україна, Київ, 8-10 жовтня 2012 року). 167-169 с.

.Карпов В.Н. Юдин. Методы добычи данных при построении локальной метрики в системах вывода по прецедентам

19.Хлопотов М.В. Модели и алгоритмы интеллектуального анализа образовательных данных для поддержки принятия решений [Текст]: дис. на соиск. степ. канд. тех. наук. 15.12.2014. / Горлушкина Наталья Николаевна. - Санкт-Петербург, 2014. - 127с.

.Хлопотов М.В. Модели и алгоритмы интеллектуального анализа образовательных данных для поддержки принятия решений [Текст]: автореф. дис. на соиск. степ. канд. тех. наук. (05.13.06) / Горлушкина Наталья Николаевна; Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики. - Санкт-Петербург, 2014. - 18с.

.В. Ф. Мусина, Байесовские сети доверия как вероятностная графическая модель для оценки медицинских рисков, Тр. СПИИРАН, 2013, выпуск 24, 135-151

.Тулупьев А.Л., Николенко С.И., Сироткин А.В. Байесовские сети: Логико-вероятностный подход. - СПб.: Наука, 2006. - 607с.

.Концепция разработки web-приложений

24.PHP, Ruby, Python - краткая характеристика трёх языков программирования / <#"justify">Приложение А

Список использованных для тестирования симптомов, факторов и диагнозов

Диагнозы:

1.Амблиопия;

2.Астигматизм;

.Блефарит;

.Близорукость (миопия);

.Глаукома;

.Дальнозоркость;

.Катаракта;

.Кератоконус;

.Кератит;

.Компьютерный зрительный синдром;

.Конъюнктивит;

.Макулодистрофия (ВМД);

.Мушки в глазах;

.Отслойка сетчатки;

.Офтальморозацеа;

.Птеригиум;

.Синдром сухого глаза;

.Халязион;

.Химический ожог глаз;

.Электроофтальмия;

.Эндокринная офтальмопатия;

.Эписклерит;

.Ячмень (гордеолум).

Симптомы:

.ухудшение зрения одного или обоих глаз;

.затруднение восприятия объемных предметов и оценки расстояния до предметов, нарушение аккомодации и бинокулярного зрения;

.искажение или размытость, искривление очертаний предметов;

.двоение изображения;

.быстрая утомляемость глаз (астенопия);

.головная боль;

.необходимость прищуриваться, чтобы лучше рассмотреть какой-либо предмет;

.раздражение, отечность, припухлость и покраснение век;

.раздражение глаз;

.покраснение слизистой оболочки глазного яблока;

.шелушение краев век, корочки на ресницах по утрам, появление пенистого секрета, патологическое отделяемое в уголках глаз;

.ощущение инородного тела в глазу;

.жжение;

.зуд;

.выпадение ресниц;

.наличие слизистого или гнойного отделяемого;

.сухость в глазах;

.повышенная чувствительность к свету;

.слезотечение;

.боль в глазах;

.дискомфорт;

.резь в глазах;

.боли в области лба, висков, глазниц;

.ухудшение периферического зрения;

.«тёмное», непрозрачное пятно в поле зрения;

.затуманивание зрения;

.значительное ухудшение зрения в темное время суток;

.колебания остроты зрения;

.«радужные круги» перед глазами при взгляде на яркий свет;

.амблиопия или косоглазие;

.прогрессирующее снижение остроты зрения;

.снижение способности различать цвета;

.затруднения при чтении;

.появление ореолов вокруг ярких источников света;

.нарушение блеска и гладкости поверхности роговицы;

.блефароспазм (судорожное сжатие век);

.уменьшение зрительной работоспособности;

.чувство песка под веками;

.плавающие в поле зрения помутнения в виде пятен, нитей, мушек, которые лучше всего видны на светлом фоне и при хорошем освещении;

.появление молний и искр в глазах, темной пелены;

.перхоть на ресницах, жирные чешуйки у корня ресниц;

.периодические ячмени и халазионы, блефарит, рецидивирующие инфекции глаз;

.боль при закапывании индифферентных глазных капель;

.образование красного или серого пятна на обратной поверхности века;

.ретракция (подтянутость кверху) века или экзофтальм (выступание глазного яблока впереди), ограничение глазных движений;

.чувство сдавливания;

.хемоз (отек конъюнктивы);

.прозрачное отделяемое из конъюнктивальной полости;

.повышение температуры тела, общее недомогание.

Факторы:

.возраст с 9 до 40;

.возраст после 40;

.возраст после 55;

.у ближайших родственников имеются проблемы с глазами;

.долгое время проводится перед компьютером, планшетом, мобильным телефоном;

.долгое время проводится в запылённой (задымлённой, ветреной) окружающей среде;

.имеются заболевания щитовидки;

.имеется сахарный диабет;

.имеются аллергические заболевания;

.имеется сильная близорукость или дальнозоркость;

.курение;

.интенсивный источник света, воздействие ультрафиолета;

.стафилококковая инфекция.

Приложение Б

Код программы.php

<?phpclass Entity{$id;$name;$prior;$patiens;__construct($id, $name) {

$this->id = $id;

$this->name = $name;

}setPrior($prior){

$this->prior = $prior;

}setPatiens($patiens){

$this->patiens = $patiens;

}getId() {$this->id;

}getName() {$this->name;

}getPrior() {$this->prior;

}getPatiens() {$this->patiens;

}addPatien(){}

}.php

<?php_once "entity.php";Diagnosis extends Entity{$post;$description;$symptoms = array();$factors = array();__construct($id, $name, $prior, $patiens, $description) {::__construct($id, $name, $prior, $patiens);

$this->prior = $prior;

$this->patiens = $patiens;

$this->description = $description;

$this->post = 0;

}function setPost($post) {

$this->post = $post;

}function setSymptoms($symptoms) {

$this->symptoms = $symptoms;

}function setFactors($factors) {

$this->factors = $factors;

}getPost() {$this->post;

}getDescription() {$this->description;

}getSymptoms() {$this->symptoms;

}getFactors() {$this->factors;

}addSymptom($symptom){

$this->symptoms[$symptom->getId()] = $symptom;

}addFactor($factor){

$this->factors[$factor->getId()] = $factor;

}addPatien($sumpatiens) {

$this->patiens +=1;

$this->prior = $this->patiens / ($sumpatiens + 1);

}getExistSymptoms() {

$s = $this->getSymptoms();

$count = 0;($s as $i => $sim) {($sim->getExist()) {

$count++;

}

}$count;

}

}

?>.php

<?php_once "entity.php";EntityInfluence extends Entity{$exist;__construct($id, $name) {::__construct($id, $name);

$this->exist = false;

}setExist($exist){

$this->exist = $exist;

}getExist(){$this->exist;

}

}

?>.php

<?php_once "entityinfluence.php";Symptom extends EntityInfluence{ $non_prior;

protected $countpatiens; //количество больных с симптомом вне зависимости от диагноза

function __construct($id, $name, $countpatiens) {::__construct($id, $name);

$this->countpatiens = $countpatiens;

}setNon_prior($non_prior){

$this->non_prior = $non_prior;

}getNon_prior(){$this->non_prior;

}addPatien($d, $sums) {

$this->patiens += 1;

$this->non_prior = ($this->countpatiens - $this->patiens) / $sums;

$this->prior = $this->patiens / ($d->patiens + 1);

}

}

?>.php

<?php_once "entityinfluence.php";Factor extends EntityInfluence{addPatien($d, $pf) {

$this->patiens += 1;

$this->prior = (($this->patiens / ($pf + 1)) / count($d->getFactors()) ) * (1 - $d->getPrior());

}

}

?>_diagnosis.php

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

<title>Опрос и сбор жалоб</title>

<link href="style.css" rel="stylesheet">

</head>

<body>

<?php _once "menu.php";_once "get_from_bd.php";_once("class\symptom.php");_once("class\\factor.php");

$symptoms_array = getSymptoms(); ?>

<form method="get" action="end_diagnost.php">

<p>Выберите симптомы:</p>

<?php($symptoms_array as $id => $s) { ?>

<input type="checkbox" name="<?php echo $id; ?>" value="symptom"><?php echo $s->getName(); ?><br>

<?php }

$factors_array = getFactors(); ?>

<p>Выберите факторы:</p>

<?php foreach ($factors_array as $id => $f) { ?>

<input type="checkbox" name="<?php echo ($id+1000); /*помни об этом */ ?>" value="factor"><?php echo $f->getName();?><br>

<?php } ?>

<input type="submit">

</form>

</body>

</html>_diagnosis.php

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

<title>Список вероятных диагнозов</title>

<link href="style.css" rel="stylesheet">

</head>

<body>

<?php_once "menu.php";_once "calculate_probability.php";mySortDiagnosis($d1,$d2)

{($d1->getPrior() > $d2->getPrior()) return -1;($d1->getPrior() < $d2->getPrior()) return 1;return 0;

}

$symptoms_array = getSymptoms();

$factors_array = getFactors(); ($_GET as $id => $type) { ($type) {'symptom':

$symptoms_array[$id]->setExist(true);;'factor':

$id -= 1000; //помни об этом

$factors_array[$id]->setExist(true);;

default:

echo "Здесь творится что-то непонятное";

}

} ?>

<form method="get" action="selected_symptoms_and_factors.php">

<p>Выбранные симптомы:</p>

<ul>

<?php($symptoms_array as $s) { ($s->getExist())"<li>".$s->getName()."</li><br>";

} ?>

</ul>

<p>Выбранные факторы:</p>

<ul>

<?php($factors_array as $f) {($f->getExist())"<li>".$f->getName()."</li><br>";

}?>

</ul>

</form>

<?php

$diagnosis_array = getDiagnosises($symptoms_array, $factors_array);

//обработаем массив диагнозов, убрав те диагнозы, в которых нет заявленных симптомов

$count = count($diagnosis_array);($i = 1; $i <= $count; $i++) {($diagnosis_array[$i]->getExistSymptoms() == 0) {($diagnosis_array[$i]);

}{($diagnosis_array[$i]->getExistSymptoms()/count($diagnosis_array[$i]->getSymptoms()) < 0.2) {($diagnosis_array[$i]);

}

}

}_time_limit(300);($diagnosis_array as $d) {

$df = 0;($d->getFactors() as $f) {($f->getExist()) {

$df += $f->getPrior();

}

}

$d->setPrior($d->getPrior() + $df);

$p = calculate_post($d);

$d->setPost($p);

} ?>

<ol>

<?php($diagnosis_array,"mySortDiagnosis");($diagnosis_array as $d) { '<b>'.$d->getName().'</b> (с вероятностью '.number_format($d->getPost()*100,2).'%)<br>'.$d->getDescription(); ?>

<ul> Симптомы, которые могут появиться:

<?php ($d->getSymptoms() as $s) {

echo '<li>'.$s->getName();'</li>';

} ?>

</ul>

<ul> <?php

$a = $d->getFactors(); (!empty($a))

echo 'Факторы, усиливающие влияние болезни:';

foreach($a as $f) {'<li>'.$f->getName();

echo '</li>';

} ?>

</ul>

</li>

<!-- Для добавления в БД -->

<form method="post" action="add_diagnosis.php">

<?php foreach ($symptoms_array as $s) { ($s->getExist())"<input type='hidden' name='".$s->getId()."' value='symptom' hidden>";

}($factors_array as $f) {($f->getExist())"<input type='hidden' name='".($f->getId()+1000)."' value='factor' hidden>";

}"<input name='diagnosis' value='".$d->getId()."' hidden>"; ($_COOKIE['type'] == 1) {'<input type="submit" value="Добавить диагноз в таблицу">';

} ?>

</form>

<?php //if ($filtr > 4) break;

} ?>

</ol>

</body>

</html>_probability.php

<?php_once "get_from_bd.php";calculate_probability($d, $mas, $masnum, &$masmn){

$pmult = 1;

$pmulf = 1;

$i = 1;($d->getSymptoms() as $id => $s) {($mas[$i][2] == 1) {

$pmult *= $s->getPrior();

$pmulf *= $s->getNon_prior();

}{

$pmult *= 1 - $s->getPrior();

$pmulf *= 1 - $s->getNon_prior();

}

$i++;

}

$pmult *= $d->getPrior();

$pmulf *= (1 - $d->getPrior());array(0 => $pmulf, 1 =>$pmult);

}get_mas_num($d){

$mas_num = array();

$s = $d->getSymptoms();

foreach($s as $id => $simp) {

$mas_num[$id] = ($simp->getExist()) ? 1 : 0;

}$mas_num;

}calculate_post($d){

$mas_num = get_mas_num($d);

$mas = array();

$mas_d_tf = array(1 => 0, 1 => 0);

$i = 1;($d->getSymptoms() as $id => $s){

$mas[$i] = array (1 => $id, 2 => 0);

$i = $i+1;

}

$masmn = false;_post_probability_rec($d, 1, $mas, $mas_num, $mas_d_tf, $masmn);

$p = $mas_d_tf;$p[1] * $d->getPrior() / ($p[1] * $d->getPrior() + $p[0] * (1 - $d->getPrior()));

}calculate_post_probability_rec($d, $k, $mas, $mas_num, &$mas_d_tf, &$masmn){

$count = count($mas_num);($k > $count) {

$res = calculate_probability($d, $mas, $mas_num, $masmn);

return $res;

}{($i = $k; $i <= $count; $i++) {

if($mas_num[$mas[$i][1]] == 1) {

$mas[$i][2] = 1;

$res = calculate_post_probability_rec($d, $k+1, $mas, $mas_num, $mas_d_tf, $masmn);

}{($j = 0; $j < 2; $j++) {

$mas[$i][2] = j;

$res = calculate_post_probability_rec($d, $k+1, $mas, $mas_num, $mas_d_tf, $masmn);

}

}(!empty($res)) {

$mas_d_tf[0] += $res[0];

$mas_d_tf[1] += $res[1];

}

}

}

}

?

Похожие работы на - Интеллектуальная система диагностирования глазных заболеваний человека

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!