| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Нужен совет по разработке экспертной системы... |
| Автор: kalexi 2.3.2012, 01:34 |
| Необходимо создать экспертную систему определяющую заболевание по наводящим вопросам. Реализация будет на языке НЕ специализированном под данные задачи. Как я понимаю на каждый вопрос есть 5 вариантов ответа: Нет, Скорее нет, Не знаю, Скорее да, Да. Я думаю, что, в конце опроса, необходимо дать несколько вариантов ответа по порядку вероятости, т.е. не один ответ. При этом хотелось бы отсеивать лишние вопросы, т.е. если насморк, то про зуд в одном месте уже спрашивать не стоит Первое, что пришло на ум: есть список заболеваний с симптомами и вопросы. При ответе на вопрос к вероятности каждого заболевания в котором числится симптом о которором идет речь в вопросе прибавляется значение ответа: Нет(-2), Наверное нет(-1), Не знаю(0), Наверное да(+1), Да(+2). Насколько работоспрособна эта схема? Может есть какие идеи по этому поводу? Спасибо! |
| Автор: Wolf1994 2.3.2012, 09:50 |
Ещё вариант. Составить дерево. Если выбор сделан, переходить к следующей ветви, если нет - раскрывать все вопросы следующего уровня. |
| Автор: Mirkes 2.3.2012, 18:07 |
| А можно узнать о каких заболеванях идет речь? Если например о гриппе, ангине и бронхите то можно и не начинать. Прежде чем начинать эту работу хорошо бы найти эксперта и попросить поставить диагноз по ответам на вопросы. Только в качестве эксперта брать не студента или интерна, а действительно эксперта. После многих лет работы с медиками такая простая система вызывает подозрение. Насколько я знаю, такие системы делают на нечеткой логике. Хотя я не встречал ХОРОШЕГО врача, который в нормальной ситуации поставит диагноз не УВИДЕВ больного (даже при наличии анализов, кардиограмм и т.д.) |
| Автор: _Y_ 2.3.2012, 23:12 |
| Я гробанул несколько месяцев, попробовав написать что-то подобное: самообучающуюся систему со статистикой симптомов на входе и статистикой диагнозов на выходе. Все по определенной группе заболеваний с достаточно специфическими симптомами. Получилось ерунда. Для того, чтобы достоверно научить такую систему, нужно ввести данные, наверное, по десяткам тысяч частных случаев. А у меня были только сотни. |
| Автор: Mirkes 5.3.2012, 18:22 | ||
Статистика утверждает простую оценку числа случаев. Если у нас n симптомов на входе, то нужно иметь порядка 2^n случаев. Это гроб для медицинских приложений. Поскольку при n порядка 100 (а обычно их примерно столько), то 2^n порядка 10^30, то есть бесконечность, поскольку население земного шара несколько меньше 10^10. Поэтому статистика в медицине обычно не работает. |
| Автор: _Y_ 5.3.2012, 21:57 |
| Mirkes, да нет. Статобработку влоб я отбросил сразу. Использовал Байесовскую сеть. Она позволяет на меньшем количестве данных выявить взаимосвязь между отдельными явлениями. Что-то типа вот этого http://www.hugin.com, если интересно. Но, при имеющемся количестве данный, связей нашлось мало и рванно. Так что пользы никакой этот труд не принес. |
| Автор: Pavia 6.3.2012, 07:38 |
| _Y_, А алгоритм один против всех использовали? |
| Автор: _Y_ 6.3.2012, 11:05 |
Что-то я не вкурсе. И гугл ничего компактного под это название не выдает. Не дадите ссылку на достойное краткое описание что за алгоритм? |
| Автор: Pavia 6.3.2012, 11:54 |
| _Y_, Я уже не помню где-то попадалось. Но суть в том что при обучение мы тренируем перспетрон на не только берём элементы из своего класса на который настраиваем. Но и на отрицательных результатах. В качестве отрицательных берём элементы из всех других классов. Тем самым алгоритм менее требователен к числу образцов. |
| Автор: mrgloom 11.3.2012, 15:12 |
| ну если не на специальном языке, то кто мешает написать на все на if'ах и у каждого вопроса проставить свой весовой коэффициент и у ответа проставить умножающий коэффициент, потом составить таблицу результатов каким "очкам" соответствует какое заболевание. но это будет плохая экспертная система. |
| Автор: Mirkes 11.3.2012, 17:04 | ||||
Идея хорошая и широко применяемая, однако в медицине она под большим вопросом по двум причинам. Одну четко указал
А вот вторая гораздо существенней - то, что человек болеет ангиной не означает, что он не болеет гастритом и еще десятком заболеваний. То есть если в базе указано, что данному пациенту поставили диагноз ангина, это не означает, что при обучении постановке диагноза гастрит его можно использовать как пример "здорового" пациента. |
| Автор: _Y_ 11.3.2012, 19:26 | ||
Мне кажется (могу и забыть - занимался этим лет несколько назад), что Байесовские сети учитывают именно такие "много-диагнозные" случаи. Но на практике, надо, видимо, выделять группу симптомов и диагнозов, достоверно "малосвязанных" с прочими (не входящими в модель) состояниями. Введение каждого дополнительного симптома или диагноза повышает мерность системы. Иначе можно прийти к ситуации, когда для постановки диагноза "вывих пятки" мы должны учесть кинетический момент каждой молекулы во вселенной |