Экспертная система (?) Алгоритм - PullRequest
6 голосов
/ 04 ноября 2010

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

Предположим, у нас есть список n болезней и m симптомов.
Для каждой болезни d и симптома s, у нас есть один из трех вариантов:

  • симптом положительно коррелирует с заболеванием: s => d
  • симптом отрицательно коррелирует с заболеванием: s => ~d
  • симптом не связан с болезнью

Цель алгоритма - создать список вопросов о симптомах «да / нет» (или даже лучше - бинарное дерево вопросов),который может вывести точное заболевание в соответствии с симптомами.

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

Ответы [ 5 ]

5 голосов
/ 04 ноября 2010

В вашем случае используется дерево решений: http://en.wikipedia.org/wiki/Decision_tree_learning

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

Вы можете использовать жадный алгоритм, а затем попытаться оптимизировать его (если вам это нужно).

На каждом шаге вы хотите максимально уменьшить количество смертей, которые все еще "возможны",

Вы находитесь на вершине своего дерева, поэтому у вас есть три возможных варианта для данного s, подсчитайте количество заболеваний в каждом из вариантов: pc nc uc.

С одной стороны у вас есть pc, с другой nc и uc, вы не можете ничего сказать (вы можете посмотреть на два уровня своего дерева, чтобы получить некоторую информацию, но пока мы не делаемчто).

В худшем случае, у вас есть pc / nc + uc или pc + uc / nc, выберите s, который минимизирует наихудший случай (то есть: только одна сторонанесколько на другом).

Вам нужно минимизировать abs( pc - (nc + uc)) + abs ( (pc+uc) - nc).

Теперь у вас есть s для вашего первого вопроса, и вы можете итеративно строить свое дерево.

2 голосов
/ 04 ноября 2010

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

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

1 голос
/ 18 ноября 2010

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

http://en.wikipedia.org/wiki/Mycin

0 голосов
/ 04 ноября 2010

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

http://en.wikipedia.org/wiki/Graphical_model

http://www.cs.ubc.ca/~murphyk/Software/bnsoft.html

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

0 голосов
/ 04 ноября 2010

Если вам просто нужен справочник, взгляните на книгу Russel & Norvig . У меня нет сейчас моей копии, но я могу дополнить этот ответ завтра некоторыми предложениями по главе.

...