Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Помогите с разработкой программы


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

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

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

Автор: nworm 11.3.2013, 14:49
Это должна быть экспертная система.

Проще всего найти что-то отдалённо напоминающее Вашу задачу и купить готовую программу.
Но далеко не факт, что это лучший путь.

Автор: maks1313 12.3.2013, 04:46
спасибо за ответ...

про готовую программу я и сам уже думал.

буду двигаться в направлении ЭС

Автор: _Y_ 12.3.2013, 20:43
Я пытался сделать экспертную систему аналогичного типа. Столкнулся с общемедицинской проблемой - недостаточное количество данных для надежной статобработки. Все пациенты разные. Чтобы учитывать разницу, нужно учитывать чертову уйму параметров. А каждым новым параметром размер необходимой базы данных растет и куда-как быстрее, чем линейно.

Автор: nworm 12.3.2013, 21:11
Это большая, очень интересная задача. Многие любят её. У одного моего знакомого родители несколько лет занимались.

Автор: _Y_ 12.3.2013, 23:33
nworm, сколь я понял, если врач не сможет выделить небольшое количество основных параметров, программист может заниматься всю жизнь в свое удовольствие. smile 

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

Автор: mrgloom 13.3.2013, 10:14
а откуда вы знаете сколько параметров у модели? они же получаются как бы скрытыми.


п.с. почему обычно пишут ЭС на каких нибудь lisp'ах, почему нельзя написать просто на большой количестве if'ов?

Автор: _Y_ 13.3.2013, 16:05
Цитата(mrgloom @  13.3.2013,  10:14 Найти цитируемый пост)
откуда вы знаете сколько параметров у модели

Из долгих лет общения с медиками. И жил с ними, и работал smile 

Цитата(mrgloom @  13.3.2013,  10:14 Найти цитируемый пост)
ни же получаются как бы скрытыми

Можно, конечно, на входе подавать один параметр "скушал аспирин"/"не скушал аспирин", а на выходе считать статистику "как бы выздоровел"/"как бы умер". Но что толку от такой модели?



Цитата(mrgloom @  13.3.2013,  10:14 Найти цитируемый пост)
почему нельзя написать просто на большой количестве if'ов? 

Улыбнуло smile 

Автор: mrgloom 14.3.2013, 08:55
Цитата

Можно, конечно, на входе подавать один параметр "скушал аспирин"/"не скушал аспирин", а на выходе считать статистику "как бы выздоровел"/"как бы умер". Но что толку от такой модели?


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

Цитата

почему нельзя написать просто на большой количестве if'ов? 

ну я конечно подозреваю, что там есть какой то "решатель" , а на if'ах будет не так гибко, но всё же 
тут например 
http://ru.wikipedia.org/wiki/CLIPS
правило: если-тогда .

Автор: _Y_ 15.3.2013, 22:23
Цитата(mrgloom @  14.3.2013,  08:55 Найти цитируемый пост)
что на вход мы можем подавать много параметров, у самой модели свои параметры которые как то связаны с входными, а на выходе умер\не умер

Так я о том и говорю. Чем больше параметров - не важно на входе или на выходе - тем большая должна быть база данных. 

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

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

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

ИМХО реально только написать что-то для болезней/состояний, для которых врачи могут определить ограниченное количество входных параметров. Ну, типа, вес клиента + этаж + степень опьянения = сколько ног будет сломано при падении). Остальное - задачи научно-фантастические.

Автор: mrgloom 18.3.2013, 10:18
так по-моему задачи машинного обучения(типа нейросети) отличаются как раз от ЭС, т.е. тут именно идёт вывод из правил и тут как раз не обязательно иметь большую выборку.

Автор: _Y_ 18.3.2013, 21:29
mrgloom, именно нейросетями и пробовал. Нейросеть, понятное дело, строится по выборке весьма скромной. Но достоверность такой сети плюс-минус трамвайная остановка. 

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

Автор: Mirkes 4.5.2013, 20:55
Пара мелких советов/ответов
1. Размер базы для приличной статистики должен быть 2^n от числа параметров. Причем речь идет очисле полных записей.
2. Что делать, если записей много меньше (а в медицине в лучшем цлучае 10n:) Ответ простой - сокращать число параметров. На эту тему есть куча методик, начиная с метода главных компонент.
3. Нейронные цети это лишь один из вариантов непараметрической статистики, следовательно ограничений по количеству записей длз них никто не отменял smile Это я Вам как Нейросетевик со стажем говорю.

Автор: mrgloom 13.5.2013, 13:28
Так всё таки ЭС отличается от машинного обучения\статистических методов?

Автор: Mirkes 13.5.2013, 20:13
Конечно отличается.
В случае со статистикой любого вида (включая нейронные сети и все другие методы машинного обучения) ответственность за качество работы лежит на исполнителе (как правило на программисте).
В случае с экспертной системой ответственность по большей части лежит на экспертах, которые формулируют правила.
Это ключевое различие. Оттуда совершенно разный подход к тестированию и т.д.

Автор: mrgloom 14.5.2013, 09:29
как то вы странно определили различие.

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

Автор: Mirkes 14.5.2013, 10:38
могут они с числами работать. Например "если А+В>С то"
По сути и ЭС и статистика реализуют приблизительно одно и тоже. Но в ЭС вам ЭКСПЕРТ дает правила, а в статистических методах ВЫ эти правила "извлекаете из установленных закономерностей". При этом ВЫ должны статистически подтвердить правильность выводов (т-тест, хи-квадрат и т.п.), что фактически невозможно при малых объемах базы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)