2010-11-04 9 views
6

tengo un problema algorítmico que puede reducirse a esta tarea:Sistema Experto algoritmo

Supongamos que tenemos una lista de enfermedades y nm síntomas.
Para cada enfermedad d y síntomas s, tenemos una de tres opciones:

  • el síntoma se correlaciona positivamente con la enfermedad: s => d
  • el síntoma se correlaciona negativamente con la enfermedad: s => ~d
  • la el síntoma no está correlacionado con la enfermedad

El objetivo del algoritmo es crear una lista de preguntas sí/no con respecto a s síntomas (o incluso mejor - un árbol binario de preguntas), que puede deducir la enfermedad exacta de acuerdo con los síntomas.

Cualquier referencia a algoritmos específicos, herramientas de software relevantes e incluso jerga específica de dominio sería muy apreciada.

+0

Creo que es similar a 'problema mínima prueba Set' –

+0

No hay suficiente información en las opciones a descartar nada, a menos que las correlaciones positivas y negativas son absolutos. En la vida real, esto nunca sucede. –

Respuesta

5

caso de que utilice un árbol de decisión: http://en.wikipedia.org/wiki/Decision_tree_learning

encontrar Básicamente el árbol óptimo (es decir, lo que minimizará el número promedio de preguntas antes de poder identificar el desease) es NP-duro.

Puede usar un algoritmo codicioso y luego tratar de optimizarlo (si lo necesita).

En cada paso, quiere reducir lo más posible la cantidad de muertes que aún son "posibles".

Usted está en la parte superior de su árbol y lo que tiene tres opciones posibles para un determinado s, contar el número de enfermedades en cada opción: pcncuc.

Por un lado se tienen pc por otro nc y la uc no se puede decir nada (se puede ver en dos niveles de su árbol para tener algo de información, pero por ahora no hacerlo).

Así peor de los casos, usted tiene pc/o nc + ucpc + uc/nc, elegir el s que minimizan peor de los casos (es decir: de un lado mucho, sólo unos pocos en el otro).

Necesitas minimizar abs(pc - (nc + uc)) + abs ((pc+uc) - nc).

Ahora tiene su s para su primera pregunta y puede construir iterativamente su árbol.

2

¿Es su dominio realmente este 'binario' o, de hecho, lo más probable es que desee utilizar el coeficiente de correlación para cada par de síntomas/enfermedades como un valor numérico? Esto permitiría fuertes correlaciones para influir en el resultado más que correlaciones débiles.

Si es así, es posible que desee consultar Support Vector Machines que analizan datos y reconocen patrones.

0

Si solo necesita una referencia, eche un vistazo al libro Russel & Norvig.No tengo mi copia a mano ahora, pero puedo actualizar esta respuesta mañana con algunas sugerencias de capítulos.

1

El problema es muy similar a la cuestión de bacterias/antibióticos de Mycin, un precursor de la tecnología de sistemas expertos basada en reglas más generalizada de la década de 1980. Hubo otros programas de diagnóstico médico desarrollados con las herramientas resultantes.

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

Cuestiones relacionadas