Cómo construir un sistema de recomendación médica

He trabajado en un proyecto de 2 personas en algo increíblemente similar como parte de mi curso de IA en la escuela de posgrado.

Entradas : síntomas

Representaciones intermedias (IR) [1] : enfermedades potenciales

Salidas : medicación recomendada para los síntomas de entrada dados

Si todavía pudiera recordarlo correctamente, utilizamos el encadenamiento hacia adelante y el encadenamiento hacia atrás solo para aplicar nuestro conocimiento de ambos en el mismo proyecto. Puede usar cualquiera de ellos y Forward Chaining es un poco más sencillo.

Tanto Forward Chaining como Backward Chaining que implementamos fueron directamente del libro de IA que usamos en el curso. El libro fue Inteligencia artificial (un enfoque moderno) de Stuart J. Russell y Peter Norvig . Puede encontrar una edición anterior del libro en la versión pdf en línea aquí.

También puede encontrar útil este pdf en línea sobre Backward Chaining.

[1] Por falta de un término mejor, aquí se usa IR. Este es un término usado frecuentemente en el proceso de escribir compiladores. Lo que sale del escáner y el analizador de un compilador se llaman IR, que se encuentran en diferentes etapas de un compilador.

IBM (Watson) se ha interesado mucho en este tema y está trabajando estrechamente con varias compañías y profesionales de la salud para resolver este problema. Nuevas técnicas como la EBM (Medicina Basada en la Evidencia) también se están volviendo prominentes debido al Aprendizaje Automático. Construir este sistema es un gran ejercicio de aprendizaje, pero para usos monetarios no es estable, como se describe aquí. ¿Por qué el aprendizaje automático no se usa más para diagnósticos médicos?

Dado que sugirió Python, recomendaría buscar en las bibliotecas Scikit-learn, numpy y pandas, estas tres bibliotecas son esenciales para la ciencia de datos y el aprendizaje automático.

Habiendo dicho eso, comenzaría, dependiendo de su nivel de comprensión, con un modelo de aprendizaje automático supervisado simple. Antes de construir tal modelo, necesitamos encontrar un conjunto de datos. Después de una simple búsqueda en Google encontré este conjunto de datos: Clasificación práctica de diabetes de fusión. También en Scikit learn hay un conjunto de datos sobre diabetes: sklearn.datasets.load_diabetes – documentación de scikit-learn 0.18. Debería poder encontrar un conjunto de datos adecuado si busca más en línea.

Siguiente en la construcción de los algoritmos de aprendizaje automático. Recomendaría comenzar con Naive Bayes o SGD (con una pérdida de bisagra se convierte en un SVM), estos dos algoritmos son excelentes puntos de partida. Aquí hay un ejemplo en la documentación de sklearn sobre cómo usar SGD sklearn.linear_model.SGDClassifier – documentación de scikit-learn 0.18.

Además de implementar los algoritmos, debe buscar en K Fold Cross Validation para asegurarse de que los modelos no se ajusten demasiado. Aquí está la documentación para la validación cruzada: 3.1. Validación cruzada: evaluación del rendimiento del estimador.

Por último, es la evaluación de estos algoritmos, esto se puede hacer usando la biblioteca de métricas en Scikit learn. Puede evaluar la precisión, precisión, recuperación y F1 del modelo y así obtener el modelo de efectividad. Luego puede comparar la precisión de su modelo con la de los resultados en Kaggle


  • Conjuntos de datos
  • Practique la clasificación de diabetes por fusión.
  • sklearn.datasets.load_diabetes – documentación de scikit-learn 0.18.
  • Algoritmos
    • Naive Bayes: sklearn.naive_bayes.GaussianNB – documentación de scikit-learn 0.18
    • SGD: sklearn.linear_model.SGDClassifier – documentación de scikit-learn 0.18
  • Validación cruzada de K fold
    • 3.1. Validación cruzada: evaluación del rendimiento del estimador.
    • sklearn.cross_validation.KFold – documentación de scikit-learn 0.17.1

    Tenga en cuenta que la mayoría del aprendizaje automático ajusta los parámetros y selecciona las características correctas a mano o utilizando algún tipo de técnica de selección de características.

    Descubra cómo puede usar la API de Watson para el diagnóstico médico y escriba un programa para conectarse a ella. Esa es la forma más rápida.

    Una ruta alternativa es crear un algoritmo de coincidencia de casos y obtener el último ICD10 y convertir cada diagnóstico y síntomas en un “caso”, formando así una base de caso. Luego escriba un front-end para capturar un caso de cue (o sonda) y cotejarlo con todos los casos en su base de casos, y devolver las mejores coincidencias de N (para algún valor preconfigurado de N).

    La mejor de las suertes.

    More Interesting

    ¿Se necesita una base matemática / estadística sólida para aprender aprendizaje automático, big data o IA?

    ¿Es posible la inteligencia artificial? ¿Por qué?

    Si creamos 1000 robots verdaderamente pensantes y los dejamos en otro planeta y los revisamos después de 50 años, ¿qué veremos?

    ¿Cómo se compara Grok / Numenta con otros algoritmos de aprendizaje automático?

    Cómo utilizar mejor mis grados de informática y contabilidad, teniendo en cuenta el advenimiento de la inteligencia artificial, la automatización, etc.

    Los robots persiguen nuestros trabajos. ¿Qué podemos hacer?

    ¿La IA es capaz de una conciencia autónoma sin programación? ¿Puede un sistema arrancar su propia programación para autorregularse y ser sabiamente equivalente a una conciencia formadora de vida?

    ¿No es el examen de ciencias de cuarto u octavo grado una posibilidad demasiado remota para la IA actual? ¿Por qué no realizar primero tareas más simples como la comprensión básica del mundo a partir de videos?

    ¿Qué tan difícil es competir en competencias de Kaggle sin usar bibliotecas de aprendizaje profundo como Theano, Caffe o Torch?

    ¿Puede la inteligencia artificial estar en camino de automatizar cada trabajo, o es solo otra exageración de Silicon Valley?

    Entre China e India, ¿cuál es más avanzada en computación en la nube, IA, Internet de las cosas, robótica y tecnologías sin conductor?

    ¿La humanidad será robótica?

    ¿Qué lenguaje de programación usan los programadores de juegos de IA?

    ¿Se puede enseñar a una red neuronal a ignorar condicionalmente ciertas entradas?

    ¿Cuáles podrían ser las consecuencias para la sociedad económicamente, cuando los robots comienzan a tomar más trabajos?