REPÚBLICA BOLIVARIANA DE VENEZUELA UNIVERSIDAD NACIONAL ABIERTA ÁREA DE INGENIERÍA CARRERA INGENIERÍA DE SISTEMAS DIAGNÓSTICO ASISTIDO POR COMPUTADORA: UN SHELL PARA SISTEMAS EXPERTOS DIFUSOS. Autor: Claude E. Hendrick R., C.I. V-10.222.828 Tutor Académico: Ing. Fernando Medina, C.I. V-17.756.541 Asesor Empresarial: Ing. Edgar González, C.I. V-6.524.564 Caracas, Centro Local Metropolitano Noviembre, 2003 REPÚBLICA BOLIVARIANA DE VENEZUELA UNIVERSIDAD NACIONAL ABIERTA ÁREA DE INGENIERÍA CARRERA INGENIERÍA DE SISTEMAS DIAGNÓSTICO ASISTIDO POR COMPUTADORA: UN SHELL PARA SISTEMAS EXPERTOS DIFUSOS. Trabajo de Grado presentado ante la Universidad Nacional Abierta por Claude E. Hendrick R. del Centro Local Metropolitano para optar al título de Ingeniero de Sistemas Caracas, Noviembre de 2003 ii SUMARIO El presente Trabajo de Grado se fundamenta en el desarrollo de un shell que permite implementar sistemas expertos basados en la lógica difusa y destinados a facilitar los procesos de diagnóstico en situaciones complejas y de incertidumbre. Los problemas de diagnóstico tienden a volverse complejos por el incremento de la información que debe ser analizada, por la ausencia de relaciones precisas entre causas y efectos, y por la dificultad de verificar alteraciones en sistemas avanzados y en seres vivientes, por lo que es una necesidad creciente disponer de sistemas que provean soluciones eficientes para estos problemas, que son comunes a diversas ciencias, entre ellas las de la salud y la ingeniería. El énfasis de este Trabajo de Grado está en el diseño, programación e integración de las principales técnicas y métodos utilizados en el desarrollo de sistemas expertos y procesos de inferencia para razonamientos aproximados, por lo que se plantean situaciones propias de la Programación de Computadores, Análisis y Diseño de Sistemas, Bases de Datos, Probabilidades, Inferencia Estadísticas, Documentación de Sistemas, entre otras disciplinas relacionadas con la Ingeniería de Sistemas. Palabras Claves: Diagnóstico automatizado, problemas de diagnóstico, lógica difusa, reglas de inferencia, sistema experto difuso, shell para sistemas expertos. iv ÍNDICE Introducción .................................................................................................................... 12 1. El Problema................................................................................................................. 14 1.1. Planteamiento del Problema............................................................................ 14 1.2. Justificación de la Investigación ..................................................................... 15 1.3. Objetivo General ............................................................................................. 15 1.4. Objetivos Específicos...................................................................................... 15 1.5. Limitaciones y Alcance................................................................................... 16 2. Marco Teórico............................................................................................................. 18 2.1. La Necesidad de Diagnosticar......................................................................... 18 2.2. Técnicas Empleadas en la Automatización de Diagnósticos .......................... 21 2.2.1. Métodos Algorítmicos de Diagnóstico ................................................. 21 2.2.2. Diagnósticos Basados en el Teorema de Bayes.................................... 21 2.2.3. Diagnósticos Basados en Estadísticas Multivariantes .......................... 23 2.2.4. Razonamiento Basado en Reglas.......................................................... 25 2.2.5. Razonamiento Basado en Casos ........................................................... 25 2.2.6. Redes Neuronales Artificiales .............................................................. 25 2.3. Inteligencia Artificial y Sistemas Expertos..................................................... 28 2.3.1. Orígenes................................................................................................ 28 2.3.2. Aplicaciones ......................................................................................... 29 2.3.3. Ejemplos Clásicos de Sistemas Expertos ............................................. 29 2.4. Representación del Conocimiento .................................................................. 30 2.5. Causas de Incertidumbre ................................................................................. 35 2.6. Razonamientos Lógicos .................................................................................. 36 2.6.1. Lógica Bi-valuada................................................................................. 38 2.6.2. Lógica Multi-valuada ........................................................................... 39 v 2.6.3. Lógica Difusa ....................................................................................... 39 2.7. Sistemas Expertos ........................................................................................... 48 2.7.1. Definición de Sistema Experto ............................................................. 48 2.7.2. Componentes de los Sistemas Expertos ............................................... 49 2.7.3. Ventajas y Limitaciones de los Sistemas Basados en Reglas............... 50 2.7.4. Sistemas Expertos Difusos ................................................................... 51 3. Marco Metodológico................................................................................................... 52 3.1. Tipo de Investigación...................................................................................... 52 3.2. Técnicas de Recolección de Datos.................................................................. 52 3.3. Técnicas de Programación y Documentación ................................................. 53 3.4. Técnicas de Validación de Resultados............................................................ 54 4. Desarrollo de la Solución ............................................................................................ 56 4.1. Consideraciones de Diseño y Selección de Recursos ..................................... 56 4.2. Usuarios .......................................................................................................... 66 4.3. Parámetros de Cálculo e Inferencia................................................................. 67 4.3.1. Valores para la Activación de las Reglas ............................................. 66 4.3.2. Tipos de Intersección para Variables Difusas ...................................... 69 4.4. Información Estadística de los Casos.............................................................. 71 4.5. Categorías y Elementos de Diferenciación ..................................................... 71 4.6. Variables ......................................................................................................... 72 4.6.1. Variables Difusas.................................................................................. 72 4.6.2. Variables Lingüísticas Discretas .......................................................... 73 4.6.3. Variables Definidas por Series de Valores ........................................... 73 4.6.4. Variables No Difusas............................................................................ 74 4.7. Funciones de Pertenencia................................................................................ 74 4.7.1. Función de Pertenencia Triangular....................................................... 75 4.7.2. Función de Pertenencia Trapezoidal..................................................... 75 4.7.3. Función de Pertenencia Campana de Gauss ......................................... 76 4.7.4. Función de Pertenencia Campana de Gauss Combinada...................... 77 vi 4.7.5. Función de Pertenencia Campana Generalizada .................................. 77 4.7.6. Función de Pertenencia Curva Sigmoidal ............................................ 78 4.7.7. Función de Pertenencia Combinación Sigmoidal................................. 79 4.7.8. Función de Pertenencia Diferencia Sigmoidal ..................................... 79 4.7.9. Función de Pertenencia Curva en Forma de S...................................... 80 4.7.10. Función de Pertenencia Curva en Forma de Z ................................... 81 4.7.11. Función de Pertenencia Curva PI (SZ) ............................................... 81 4.8. Modificadores Difusos .................................................................................... 82 4.9. Tipos de Conclusión........................................................................................ 83 4.9.1. Conclusiones No Difusas...................................................................... 84 4.9.2. Conclusiones Difusas ........................................................................... 84 4.10. Tipos de Inferencia Difusa ............................................................................ 85 4.10.1. Inferencia Difusa Tipo Mamdani ....................................................... 85 4.10.2. Inferencia Difusa Tipo Sugeno........................................................... 86 4.11. Formas de Precisar las Salidas Difusas......................................................... 87 4.11.1. Centro de Gravedad ............................................................................ 87 4.11.2. Centro de las Sumas ........................................................................... 88 4.11.3. Primer Máximo................................................................................... 89 4.11.4. Último Máximo .................................................................................. 89 4.11.5. Medio Máximo ................................................................................... 89 4.11.6. Promedio Ponderado........................................................................... 89 4.12. Reglas de Inferencia...................................................................................... 90 4.12.1. Información Requerida para Definir Reglas....................................... 90 4.12.2. Antecedentes de las Reglas................................................................. 91 4.12.3. Conclusiones de las Reglas................................................................. 94 4.13. Cuestionarios................................................................................................. 94 4.14. Diagnosticar .................................................................................................. 95 4.15. Datos Históricos de los Casos ..................................................................... 102 vii 5. Pruebas a la Solución ................................................................................................ 103 Conclusiones y Recomendaciones ............................................................................ 108 Bibliografía .......................................................................................................... 112 Anexos ................................................................................................................. 120 viii ÍNDICE DE TABLAS Y FIGURAS Figuras 2.1. Esquema de un clasificador variable............................................................. 24 2.2. Representación gráfica de una red neuronal artificial................................... 27 2.3. Relaciones de designación y referencia de los conceptos............................. 31 2.4. Representación gráfica de la vaguedad intensional ...................................... 34 2.5. Representación gráfica de la vaguedad extensional...................................... 35 2.6. Representación gráfica de la convexidad de un conjunto difuso .................. 42 2.7. Componentes básicos de un sistema experto basado en reglas..................... 49 4.1. Opciones del shell ......................................................................................... 66 4.2. Función de pertenencia triangular................................................................. 75 4.3. Función de pertenencia trapezoidal............................................................... 76 4.4. Función de pertenencia campana de Gauss................................................... 76 4.5. Función de pertenencia campana de Gauss combinada ................................ 77 4.6. Función de pertenencia campana generalizada ............................................. 78 4.7. Función de pertenencia curva sigmoidal....................................................... 78 4.8 Función de pertenencia combinación sigmoidal ........................................... 79 4.9. Función de pertenencia diferencia sigmoidal................................................ 80 4.10. Función de pertenencia curva en forma de S ................................................ 80 4.11. Función de pertenencia curva en forma de Z ................................................ 81 4.12. Función de pertenencia curva PI (SZ)........................................................... 82 4.13. Pasos del método de inferencia de Mamdani................................................ 86 4.14. Pasos del método de inferencia de Sugeno ................................................... 87 4.15. Diagrama de flujo del proceso de diagnóstico ............................................ 101 4.16. Diagrama de pruebas y validaciones........................................................... 103 ix Tablas 4.1. Configuración disponible y requerimientos de los lenguajes ......................... 62 4.2. Tipos de intersección incorporadas en el shell para variables difusas ............ 70 4.3. Tipos de relaciones y valores disponibles para evaluar características........... 92 4.4. Tipos de relaciones y valores disponibles para registrar los hechos............... 96 INTRODUCCIÓN Las últimas décadas se han caracterizado por un creciente uso de la tecnología informática para la automatización de procesos que requieren toma de decisiones complejas, de allí que se les consideren como soluciones inteligentes. La masificación y evolución de la computación no se ha limitado al mejoramiento del software y del hardware en términos de facilidad de uso, eficiencia, reducción de costos o tamaños, más bien se trata del desarrollo simultáneo de nuevas tecnologías y de aplicaciones que la justifican, la hacen factible y rentable. Los sistemas expertos constituyen el área de investigación más fecunda de la Inteligencia Artificial. Sus logros han sido notables en diversas actividades del quehacer humano, sin embargo quedan muchas expectativas no satisfechas. Entre ésas, el disponer de herramientas que permitan la eficaz automatización de los procesos de diagnóstico, pues se trata del recurso fundamental para la solución de problemas que surgen en la ingeniería, la medicina, y la veterinaria, entre otras ciencias y disciplinas. Para resolver un problema, lo primordial es su identificación o diagnóstico. Esto puede requerir de conocimientos muy especializados, que sólo lo poseen un reducido grupo de profesionales por lo que su disponibilidad queda limitada a la ubicación y capacidad de trabajo de estos últimos. La implementación de sistemas expertos puede significar una mejora sustancial en la capacidad de resolver problemas, pues no presentan esas limitaciones de tiempo ni de espacio, además poseen gran capacidad para almacenar información y procesarla velozmente. La solución de algunos problemas, especialmente los que corresponden a las ciencias no exactas, depende de conocimientos incompletos e imprecisos, lo que ha motivado el desarrollado de varias teorías y métodos para el tratamiento de la 10 incertidumbre y la vaguedad conceptual. Una de estas teorías fue propuesta en el año 1965 por el Prof. Lotfi Zadeh, a la misma se le denominó Lógica Difusa (Fuzzy Logic), y su objetivo es formalizar el razonamiento aproximado a través de la definición de infinitos valores intermedios entre los extremos verdadero y falso, este criterio aplicado al concepto de pertenencia en la teoría de conjuntos dio origen a los conjuntos difusos. La lógica difusa se puede aplicar a los sistemas expertos para representar y procesar los conocimientos aproximados, en cuyo caso se habla de sistemas expertos difusos. En general se reconoce que el desarrollo de un sistema experto es una actividad compleja, que puede requerir importantes recursos en términos de tiempo y dinero, por eso se ha dado importancia a la programación de sistemas que puedan adaptarse a diversas necesidades. Ya que dichos sistemas no poseen conocimientos acerca de ninguna especialidad, se le denomina con el vocablo inglés shell para indicar que se trata de cascarones o estructuras con capacidad de inferencia, no de sistemas expertos. El objetivo principal de este Trabajo de Grado fue diseñar y programar un shell para implementar sistemas expertos basados en lógica difusa, para resolver problemas de diagnóstico. El shell fue desarrollado para usarse con el sistema operativo Windows®, su interfaz es fundamentalmente gráfica, y no es necesario aprender ningún lenguaje o reglas sintácticas para usarlo de forma eficiente. El shell aquí presentado ha sido dotado de una amplia variedad de funciones y características que lo convierten en una atractiva y poderosa herramienta que permite definir y utilizar fácilmente sistemas expertos para apoyar los procesos de diagnóstico, aun en casos de incertidumbre. Este desarrollo es el resultado de combinar y llevar a la práctica un importante número de conceptos y teorías relacionadas directamente con la Ingeniería de Sistemas. 11 Capítulo 1 EL PROBLEMA Muchos sistemas expertos han sido desarrollados para usos específicos, por lo que no es fácil su implementación en otras áreas de conocimiento, por el mismo hecho de tener un campo de aplicación muy restringido estos sistemas resultan costosos de adquirir, cuando están disponibles en forma comercial. Además, el uso de complejas reglas sintácticas, dificulta el aprendizaje y posterior uso de algunos de ellos. Los problemas de diagnóstico no se limitan a las ciencias exactas, por lo que es necesario que los sistemas empleados para facilitar la solución de ciertos problemas, sean capaces de funcionar con conocimiento aproximado o incompleto, característica que no está presente en buena parte de los sistemas expertos de diagnóstico. 1.1. Planteamiento del Problema En distintas ciencias y áreas de especialización existe una creciente necesidad de realizar diagnósticos precisos y oportunos, pues surgen problemas en los cuales se deben detectar fallas o alteraciones, para su posterior solución. Los sistemas expertos de diagnóstico ayudan a preservar y ampliar la disponibilidad del conocimiento especializado aplicable en esos casos. Se planteó el desarrollo de un shell que facilite la implementación de esos sistemas expertos, y se recurrió a la lógica difusa para hacer más efectiva la representación del conocimiento impreciso, que suele estar presente en los problemas de diagnóstico. Con la implementación de los sistemas expertos, se busca propiciar el trabajo ordenado y metódico, contribuyendo a la eficiencia de los procesos. Además, la sistematización del conocimiento facilita el análisis y comprensión de los problemas, y da la posibilidad de disponer de los recursos necesarios para su satisfactoria solución. 12 1.2. Justificación de la Investigación Los sistemas expertos constituyen una importante área de investigación dentro de las ciencias de la computación, generalmente, se orientan a resolver problemas complejos y/o de profundo impacto para la sociedad, constituyéndose en uno de los pilares fundamentales de la Inteligencia Artificial. Por su parte, la lógica difusa ha demostrado ser exitosa en la automatización de ciertos procesos, aun cuando su desarrollo ha estado acompañado de polémicas acerca de su originalidad, aplicabilidad e interdependencia de la probabilidad y las matemáticas en general. En ambos casos, se trata de temas vigentes y relevantes para la formación de los profesionales de la computación, tanto a nivel de pre-grado como de postgrado. La investigación aquí expuesta no se limita a la revisión de la literatura existente o al seguimiento de una metodología preestablecida para obtener un resultado, sino que conjuga aspectos teóricos y prácticos para ofrecer soluciones a problemas de la medicina, veterinaria, agricultura, e ingeniería entre otras ciencias. 1.3. Objetivo General Diseñar y programar un shell para implementar sistemas expertos basados en lógica difusa, para resolver problemas de diagnóstico. 1.4. Objetivos Específicos • Diseñar y programar los componentes del sistema o shell: o La base de conocimientos, para almacenar las reglas lógicas de decisión y el conocimiento expresado por los especialistas en procesos de diagnóstico. o La base de hechos, que contendrá las características de los problemas de diagnóstico introducidos a los sistemas, es decir, sus valores, signos, síntomas. 13 o El motor de inferencia, el cual debe relacionar de forma lógica antecedentes y consecuentes para encontrar soluciones que satisfagan las condiciones establecidas y el ordenamiento de posibles diagnósticos, incorporando mecanismos de inferencia basados en la lógica difusa. o Las rutinas para definir variables lingüísticas, etiquetas y funciones de pertenencia (según las fórmulas más usuales: triangular, trapezoidal, Gauss, campana generalizada) para las variables difusas. o Las rutinas para el control de acceso por usuario, manejo de errores, mantenimiento de la información, menú, diálogo con el usuario, etc. • Validar los resultados mediante la reproducción de procesos de diagnóstico comprobados, y verificar el funcionamiento general del sistema. • Documentar los programas que conforman el sistema, y redactar los manuales que faciliten su operación, mantenimiento y actualización. 1.5. Limitaciones y Alcance Seguidamente se exponen algunas características y limitaciones asociadas al shell propuesto y desarrollado: • El sistema produce sugerencias, cada usuario es responsable del uso que se haga de las mismas. El shell y los sistemas en él definidos deben ser entendidos como una ayuda para resolver problemas de diagnóstico, no como un reemplazo de las facultades humanas, ni como atenuante de la capacitación requerida para el desempeño de profesiones u oficios. • El sistema propuesto está pensado para encontrar soluciones en un conjunto limitado de posibilidades, y siempre en función de la información previamente registrada. • Se incluyen algunos datos a manera de ejemplo, para ilustrar el funcionamiento del shell, no pretendiéndose afirmar en ningún caso que el sistema cubre esas áreas de especialización o que el autor posee conocimientos sobre esos tópicos. 14 • El sistema sólo contempla la interacción manual y directa con los usuarios, es decir, no posee la capacidad de controlar mecanismos o dispositivos externos, ni de capturar datos en forma automática a través de ellos. • La utilidad del sistema depende de la cantidad y calidad de la información que le sea suministrada. La capacidad de funcionar con información aproximada o incompleta, no implica que la precisión de los resultados no se vea afectada, o que se acepten sin consecuencias, contradicciones y falsas vinculaciones. • El software está diseñado para ser utilizado en computadores dotados del sistema operativo Windows® de Microsoft, y en la versión inicial presentada con fines académicos y didácticos no se contempla su uso en redes. • La capacidad del shell para resolver problemas, se refiere a situaciones de diagnóstico de sencilla o mediana complejidad, en las cuales los criterios de decisión sean susceptibles de ser expresados por medio de reglas lógicas. • El tipo de funciones de pertenencia para caracterizar valores difusos, y las operaciones permitidas, se limitan a las formas más usuales pues se trata de buscar soluciones aproximadas. • El carácter general del sistema propuesto, se refiere a la capacidad de ser empleado en diferentes áreas del quehacer humano, al suministrársele los datos y parámetros correspondientes, no así a su idoneidad o aplicabilidad a cualquier tipo de problemas de identificación de fallas o diagnóstico. 15 Capítulo 2 MARCO TEÓRICO El capítulo comienza con una breve exposición de la necesidad e importancia de los procesos de diagnóstico, luego se hace una revisión de las principales técnicas empleadas en la automatización de dichos procesos. Se ha procurado mostrar las ventajas y desventajas de cada enfoque, así como un resumen de sus aspectos operativos. Se menciona el origen y evolución de la Inteligencia Artificial, los sistemas expertos y sus aplicaciones, mostrándose a manera de ejemplo algunos sistemas, que por razones históricas, de popularidad y difusión de uso, resultan importantes como referencia de la evolución y éxito de estas aplicaciones. Posteriormente, se exponen las bases conceptuales que sustentan el desarrollo de este Trabajo de Grado. Se define el tipo de conocimientos que se puede integrar en los sistemas expertos, se describen las causas de incertidumbre, y sus consecuencias. Se continúa con los aspectos lógicos del razonamiento, la lógica difusa, y se concluye con una descripción general de los sistemas expertos. 2.1. La Necesidad de Diagnosticar Diagnosis es una palabra derivada del vocablo griego di§gnwsi (conocimiento), y se refiere a identificar o reconocer una enfermedad a partir de sus signos, y a la descripción de las características diferenciales de una cierta clase, especie o género. Diagnóstico, palabra derivada del vocablo griego diagnwstikÕj, (distintivo) se refiere al acto de conocer la naturaleza de una enfermedad mediante la observación de sus síntomas y signos. La aplicación de estos conceptos se ha ampliado, y se usa el término diagnosticar para referirse a la identificación de alteraciones en el funcionamiento de un sistema o modelo a partir de un conjunto de manifestaciones, 16 signos y síntomas, es decir, es una forma de clasificación de ciertos grupos de conceptos. No se pretende aquí juzgar la capacidad del personal médico, hombres y mujeres, que generalmente hacen su mejor esfuerzo en pro de la comunidad, por el contrario, se desea destacar lo complejo de su actividad profesional y la necesidad de buscar posibles soluciones que hagan más efectiva su labor. Con respecto al diagnóstico en la práctica médica, resultan bastante elocuentes los siguientes extractos tomados del texto de Medicina Interna de los doctores Farreras y Rozman [Farreras, Rozman, 1996]. Comienza el Dr. Ciril Rozman la sección dedicada al diagnóstico y sus principios generales de la siguiente forma: Una de las facetas más importantes y difíciles del quehacer médico diario es el diagnóstico. Dicho proceso comienza por una cuidadosa recogida de la anamnesis o historia clínica, en la que junto a numerosos detalles que puedan ser de interés, ocuparán un lugar destacado las molestias subjetivas o síntomas que manifieste el paciente... Los distintos síntomas y signos se agrupan en los síndromes, que suelen traducir una alteración anatómica o funcional de un órgano o sistema. Por último, entre las distintas causas capaces de originar un síndrome concreto se llega a precisar con las exploraciones complementarias una posibilidad etiológica y se establece el diagnóstico de enfermedad o entidad nosológica. La anamnesis y la exploración física, durante las cuales el médico recoge con cuidado y siguiendo los principios expuestos los síntomas y signos de la afección que sufre el paciente, siguen siendo el pilar del ejercicio médico y del método clínico, a pesar de los espectaculares avances experimentados por las técnicas instrumentales y de laboratorio. Sin estos dos métodos clásicos y sin las consiguientes hipótesis diagnósticas más o menos aproximadas, la práctica clínica pierde el nombre de tal y se convierte en una búsqueda del diagnóstico al azar y sin dirección adecuada, consistente en la petición de numerosas pruebas de laboratorio y exploraciones instrumentales. En la práctica clínica auténtica hay que huir de este intento diagnóstico “por perdigonada” y seguir el método clínico, cuyas premisas insustituibles son la anamnesis y la exploración física. Una vez acabadas éstas, es preciso que el médico formule el diagnóstico o los diagnósticos provisionales o de presunción. Nada hay más criticable en nuestra profesión 17 que la llamada medicina adiagnóstica, practicada por desgracia con excesiva frecuencia ... es preciso que las exploraciones complementarias merezcan este calificativo y constituyan, no la actividad fundamental del quehacer médico, sino sólo el complemento de un proceso diagnóstico perfectamente estructurado... No prodigar la práctica de pruebas complementarias es algo muy conveniente por varias razones: en primer lugar, cabe mencionar los aspectos económicos. Es indudable que los costos de la medicina actual están creciendo en espiral y que muy pronto ninguna economía podrá contemplar impasiblemente este problema. .... Pero, aparte de las cuestiones económicas, evidentemente importantes, hay otras consideraciones de trascendencia aún mayor. Al decidir las exploraciones complementarias el médico debe atender, por encima de todo, al interés del enfermo. Así, es preciso tener en cuenta que el paciente experimenta ya un considerable grado de incomodidad física y psíquica por el hecho de estar enfermo y, por tanto, es imprescindible que el médico no añada nuevas incomodidades con la práctica de exploraciones complementarias que no sean estrictamente necesarias. En ocasiones, dichas exploraciones entrañan, además de la incomodidad un riesgo, acaso vital. Los procesos de diagnóstico pueden ser complejos, pues no siempre resultan evidentes las causas de los problemas. Siguiendo con el ejemplo médico, un paciente puede presentar un problema de salud que esté originado por el mal funcionamiento de un órgano, o puede estar intoxicado con alguna de las más de 13 millones de sustancias químicas naturales y sintéticas que se tienen identificadas, o puede estar contaminado por algún parásito o un microorganismo (virus, bacteria, hongo, etc.), igualmente las causas pueden ser de origen emocional, una combinación de varias de ellas, o simplemente desconocida para el momento. Adicionalmente, los problemas de diagnóstico en ocasiones deben ser resueltos en muy poco tiempo, pues en casos extremos sólo se dispone de algunos minutos para salvar la vida de un paciente. Como se indicaba al comienzo de esta sección, los problemas de diagnóstico no son exclusivos de las ciencias medicas, ni su importancia se vuelve secundaria cuando no se refiere directamente a la salud de los seres humanos, pues en otras aplicaciones sus impactos pueden ser aún mayores al afectar colectivamente a la sociedad, en 18 aspectos tan relevantes como el transporte público, la seguridad alimentaria, el suministro eléctrico, las telecomunicaciones, etc. 2.2. Técnicas Empleadas en la Automatización de Diagnósticos A continuación se mostrarán algunas técnicas que han sido empleadas reiteradamente en sistemas informáticos tendentes a automatizar y/o a facilitar la solución de problemas de diagnóstico. Es importante destacar que sólo se mencionan algunas técnicas, y que en muchos casos, los sistemas informáticos recurren simultáneamente a más de una de ellas para resolver un mismo tipo de problemas. Por lo tanto, no debe entenderse que se trata de una confrontación de métodos para seleccionar el mejor, especialmente cuando cada uno de ellos puede resultar apropiado para un tipo específico de problema. 2.2.1. Métodos Algorítmicos de Diagnóstico Consiste en la programación secuencial de instrucciones que representan las etapas del proceso de diagnóstico para desarrollar programas informáticos capaces de aplicar el algoritmo con nuevos datos. Esta forma de diagnosticar se puede aplicar principalmente para clasificaciones y diagnósticos diferenciales. Las posibilidades de respuesta son fijas, previsibles e invariables. Aunque estos programas han sido técnicamente superados, no deben menospreciarse, puesto que contribuyen a un análisis detallado del proceso diagnóstico y se utilizan como nexo entre distintos módulos de otros programas más complejos. También son útiles para la solución de problemas muy específicos y complejos. El análisis requerido para su programación es similar al empleado en la construcción de árboles de decisión. 2.2.2. Diagnósticos Basados en el Teorema de Bayes Se basa en el teorema de la probabilidad condicionada, propuesto en 1763 por el reverendo Bayes. Sean C1, C2, ... Cn, n sucesos mutuamente excluyentes que 19 representan las n posibles causas de un resultado R. P(Ci/R) es la probabilidad de que se haya dado Ci puesto que se dio R, es posible calcular dicha probabilidad a través de la siguiente fórmula: P(C i / R ) = P (C i ∩ R) P ( R / C i ).P(C i ) = n P( R) ∑ P( R / C i ).P(C i ) i =1 P(C) se denomina probabilidad a priori, y P(Ci/R) se denomina probabilidad a posteriori o condicionada. El teorema de Bayes aplicado a diagnósticos en medicina, se presenta en los siguientes términos: P ( E si S ) = P ( S si E ). P( E ) P(S ) Fórmula en la que se establece que la probabilidad de estar enfermo E, teniendo el síntoma S (expresión denominada predictividad del síntoma) es igual al producto de la probabilidad de tener el síntoma si se está enfermo (sensibilidad del síntoma) por el cociente entre las probabilidades de estar enfermo y de tener el síntoma (prevalencias de la enfermedad y del síntoma respectivamente). Cuando en vez de síntomas, o variables de dos categorías, se utilizan variables cuantitativas o continuas, como sería el caso de resultados de laboratorio, puede resultar que la distribución de los valores en la población sana se superponga con la correspondiente a la población enferma. La representación gráfica de la especificidad obtenidos empíricamente determina un conjunto de curvas que se conocen como curvas ROC (Receiver Operating Characteristic), por su analogía con las curvas similares de sensibilidad-especificidad de los receptores de radiofrecuencia. A partir de estas curvas, expresivas del rendimiento diagnóstico, se puede discriminar entre sanos y enfermos. Basados en estos supuestos teóricos, se han desarrollado programas para diagnóstico asistido por computadoras. Los éxitos de este tipo de programas se consideran más didácticos que prácticos. Los procedimientos bayesianos directos 20 tienden a ser hiperpredictivos, debido a que no siempre hay una independencia de probabilidad entre los diferentes síntomas, la cual es una de las condiciones de aplicación del teorema de Bayes. Se han ideado procedimientos para corregir la hiperpredictividad y en la actualidad la aproximación bayesiana al diagnóstico se utiliza conjuntamente con la Inteligencia Artificial, estadística multivariante y redes causales y otras técnicas. 2.2.3. Diagnósticos Basados en Estadísticas Multivariante La estadística multivariante se usa principalmente con fines de investigación teórica. Por lo general, se recurre al uso de programas comerciales como BMDP, SAS, SPSS, etc. Que permiten análisis de causalidad, métodos de selección de variables, y reconocimiento de patrones. El análisis de causalidad se basa en los siguientes aspectos: 1. Una secuencia temporal razonable, la cual implica que la causa haya actuado antes de producirse el efecto, y no después. 2. El concepto de causa suficiente, el cual implica que cuando la hipotética causa está presente se produce siempre el efecto. 3. El concepto de causa necesaria, implica que para que se produzca el efecto, la causa ha de estar presente y, si no lo está, el efecto no se produce. 4. Causa necesaria y suficiente, significa que la causa ha de estar presente y siempre que lo está se produce el efecto. La existencia de excepciones en los análisis de causalidad es origen de incertidumbre, especialmente en los problemas de diagnóstico, en los cuales los agentes causales suelen ser necesarios, pero raras veces suficientes, y a menudo presentan relaciones temporales variables y coexisten causas de muy diversa naturaleza para un mismo efecto. 21 Las técnicas de selección de variables son una consecuencia del análisis de la causalidad cuando son varios los posibles factores concurrentes. La aproximación estadística a los límites de la lógica no es sencilla y se suele acudir a los modelos matemáticos. Los modelos lineales, de tipo cartesiano, no ocurren frecuentemente en los problemas de diagnóstico, aun cuando son los más sencillos y el efecto esperado puede representarse por una ecuación de regresión múltiple o discriminante del tipo: y = a + b1 . X 1 + b2 . X 2 + ... + bn . X n El reconocimiento de patrones es el resultado de la aplicación de un conjunto de variables agrupadas según una función discriminante, logística, o de otro tipo, al que se denomina clasificador. Se trata de analizar estadísticamente las agrupaciones características de signos y síntomas en torno a diagnósticos. Los clasificadores pueden ser fijos o variables. Cuando se usan clasificadores variables el sistema es capaz de ir modificando la matriz de probabilidades original, es decir, se puede hablar de un proceso de actualización o aprendizaje. Cada clasificador estadístico representa un bloque evaluable con los mismos criterios de sensibilidad, especificidad y predictividad que se han descrito para un síntoma único. A continuación se muestra un diagrama general del funcionamiento de una rutina de detección de patrones usando un clasificador variable. Muestra de patrones controlados Diseño del clasificador Clasificador variable Patrón incognita Clasificación Modificación del clasificador Detector de errores Fig. 2.1. Esquema de un clasificador variable. 22 2.2.4. Razonamiento Basado en Reglas También conocido como razonamiento basado en el conocimiento. Los sistemas que utilizan este enfoque para realizar diagnósticos disponen de una base de datos que almacena el conocimiento relativo a una materia o especialidad. El conocimiento es suministrado por personas a las que se considera expertos en la materia, y queda expresado en forma de datos iniciales y reglas lógicas. Las reglas lógicas por lo general son de la forma “Si antecedentes Entonces conclusión”. Los sistemas basados en reglas son la forma más común de desarrollar sistemas expertos, constituyéndose en el segmento más conocido de la Inteligencia Artificial. (Ver la sección 2.7 para información adicional sobre los sistemas expertos). 2.2.5. Razonamiento Basado en Casos El razonamiento basado en casos (Case Based Reasoning, CBR) constituye un enfoque diferente del razonamiento basado en reglas o en el conocimiento. Como método fue desarrollado predominantemente en la Universidad de Yale por Schank, su desarrollo más notable se ubica en la segunda mitad de la década de los ochenta. Se basa en el análisis del razonamiento por analogía y en el hecho que cuando el hombre se encuentra frente a una situación nueva, busca en sus recuerdos una situación parecida para poder comparar. La presentación repetida de casos permite establecer las reglas que definen un paradigma: el caso ejemplo. Si el caso nuevo no muestra diferencias relevantes, queda integrado en el paradigma que guarda la memoria, lo que significa diagnóstico concluido. Si las diferencias son relevantes, el caso actual se mantiene activo en otro tipo de memoria más dinámica, en espera de nuevos casos parecidos para definir el respectivo caso ejemplo o paradigma. 2.2.6. Redes Neuronales Artificiales Las redes de neuronas artificiales tratan de representar el conocimiento replicando la estructura del cerebro humano. En ellas el conocimiento no se programa 23 de forma directa en la red sino que se adquiere de ejemplos por medio de reglas de aprendizaje, reconociendo patrones y ajustando parámetros. Es una forma de inducción muy diferente a la empleada en los sistemas expertos basados en reglas. El origen de las redes neuronales se encuentra en la representación de la neurona biológica por McCulloch y Pitts en 1943. Este modelo considera que una neurona puede ser representada por una unidad binaria. A cada instante su estado puede ser activo o inactivo. En otros modelos el estado de cada neurona es descrito por una variable continua. La interacción entre neuronas se denomina sinapsis, y puede ser controlada mediante pesos sinápticos, según el signo la sinapsis puede ser excitadora o inhibidora. La forma de red neuronal más simple, en la cual no existen capas ocultas, se denomina perceptron. El perceptron está constituido por las entradas provenientes de fuentes externas, las conexiones y la salida. Para cada posible entrada o estímulo la respuesta del perceptron obedece a la siguiente dinámica: se suman los potenciales sinápticos y se comparan con el umbral de activación, esta suma ponderada se llama también campo. Si el campo es mayor que el umbral la respuesta de la neurona es activa, en caso contrario la respuesta es inactiva. Una arquitectura simple como la del perceptron sólo es aplicable a funciones booleanas simples, llamadas linealmente separables. Para aumentar la capacidad de resolver problemas mediante redes neuronales, es necesario intercalar neuronas entre las capas de entrada y de salida, llamadas neuronas ocultas. Una red multicapas puede ser definida como un conjunto de perceptrones, ligados entre sí por sinapsis y dispuestos en capas siguiendo diversas arquitecturas. Una de las arquitecturas más comúnmente usada es llamada feedforward, con conexiones de la entrada a las capas ocultas y de éstas hacia la salida. El funcionamiento de una red neuronal es gobernado por reglas de propagación de actividades y de actualización de los estados. La mayor parte de las reglas de aprendizaje se basan en ajustes iterativos de las conexiones, sin embargo es posible 24 que ciertas reglas puedan modificar la estructura misma de la red. A continuación se muestra la representación gráfica de una red neuronal artificial: c1 Capa de Salida cj ... c1 cq ... cj w p1 w ... vn ... bi 1 pj w iq i1 b1 wpq w w 1j Capa Intermedia a1 vnp a1 Donde: ni v hp h1 ... FB v v v 1i bp v 1p vhi v11 Capa de Entrada FC w 1q wij w11 cq ah ah ... an FA an vab Indica los pesos asociados entre las neuronas a,b correspondientes a las capas de entrada e intermedia. wbc Indica los pesos asociados entre las neuronas b,c correspondientes a las capas intermedia y de salida. Fig. 2.2. Representación gráfica de una red neuronal artificial El aprendizaje con redes de neuronas se realiza actualmente siguiendo el enfoque de la retropropagación de gradientes (backpropagation) y el de los algoritmos constructivos. Este enfoque implica conocer previamente el número y conexiones de las neuronas ocultas, y determinar los pesos por minimización de un costo. La red así obtenida es eventualmente simplificada eliminando unidades y/o conexiones que parecen inútiles. El principal defecto de este enfoque consiste en la búsqueda de la mejor arquitectura mediante el ensayo-error. Con un enfoque constructivo se aprende al mismo tiempo el número de unidades y sus pesos, en el marco de una arquitectura que comienza generalmente con un perceptron, lo cual puede implicar un tiempo de respuesta bastante prolongado para problemas relativamente complejos. 25 Las redes neuronales no necesitan de construcciones o expresiones que representen el conocimiento especifico para resolver determinados problemas, sólo se requiere de un conjunto de ejemplos satisfactorios (casos de aprendizaje), y es la principal ventaja de las redes neuronales para resolver problemas de diagnóstico ya que no es necesario definir las posibles relaciones entre causas y efectos. Al mismo tiempo, esto puede ser su principal desventaja, ya que no siempre se dispone de suficiente información confiable para establecer los casos de aprendizaje requeridos. 2.3. Inteligencia Artificial y Sistemas Expertos Se han adaptado y desarrollado distintas tecnologías orientadas a proveer a los computadores de capacidades similares a las del cerebro humano, a éstas se les llama de manera amplia Inteligencia Artificial. Su rama más conocida es la de los sistemas expertos, en la cual se suelen emplear símbolos, reglas y normas para representar el conocimiento expresado por especialistas en una determinada materia. 2.3.1. Orígenes de los Sistemas Expertos Warren S. McCulloch y Walter Pitts, sugirieron, en 1.943, un modelo simplificado destinado a simular el comportamiento de las neuronas del cerebro humano. Claude Shannon, en 1.950, planteó la posibilidad de destinar computadores a juegos como el ajedrez. También en 1.950, Alain Turing, analizando la posibilidad de construir una máquina inteligente propuso su conocido Test de Turing, que consideraba que una máquina puede considerarse inteligente si es capaz de mantener una conversación a través de un teletipo, como si fuera un ser humano. El término “Inteligencia Artificial” propuesto en 1.956 por John McCarthy, durante la conferencia de Darmouth, basado en la conjetura de que todo aspecto del aprendizaje o cualquier otra característica de la inteligencia puede en principio describirse con tanta precisión que puede ser simulado mediante una máquina. 26 2.3.2. Aplicaciones de los Sistemas Expertos La Inteligencia Artificial se ha aplicado de manera exitosa en actividades muy diversas. Ejemplos de estas aplicaciones son: • Sistemas de visión artificial, que permiten a un robot decidir la ruta a seguir, evitando obstáculos. • Traducción automática entre idiomas. • Reconocimiento de palabras manuscritas o habladas. • Demostración automática de teoremas. • Sistemas expertos que ayudan a diagnosticar enfermedades. • Lavadoras de ropa que optimizan el proceso. • Cámaras fotográficas y de video que enfocan automáticamente las imágenes y corrigen los efectos de los movimientos bruscos. • Trenes y ascensores que ahorran tiempo y energía, al mismo tiempo que ofrecen un funcionamiento más confortable. 2.3.3. Ejemplos Clásicos de Sistemas Expertos Los sistemas expertos son la rama más conocida de la Inteligencia Artificial. Se reconoce a DENDRAL como el primer sistema experto, fue desarrollado en la Universidad de Stanford. Su origen se ubica en el año 1965, su objetivo era determinar la estructura de moléculas químicas. Resultó más efectivo que los expertos humanos en el logro de su objetivo. El sistema experto MACSYMA fue desarrollado en el MIT (Instituto Tecnológico de Massachusetts), en el año 1965 para realizar análisis matemáticos complejos. El sistema experto HEARSAY fue desarrollado en la Universidad Carnegie-Mellon, con el objetivo de interpretar en lenguaje natural un subconjunto del idioma. El sistema experto CADUCEUS fue desarrollado en la Universidad de Pittsburgh, en el año 1975, como herramienta de diagnóstico para medicina interna. 27 El sistema experto más conocido es MYCIN [Buchanan, Shortliffe, 1984], fue desarrollado en la Universidad de Stanford, y presentado por Shortliffe en 1977. Se diseñó para el diagnóstico y tratamiento de enfermedades infecciosas (bacterianas). Su base de conocimientos contiene unas 400 reglas, y su motor de inferencia utiliza encadenamiento hacia atrás; para el tratamiento de la incertidumbre recurre al uso de factores de certeza. Numerosos sistemas expertos fueron desarrollados a partir de MYCIN, entre ellos TEIRESIAS, CENTAUR, ONCOCIN, PUFF, PROSPECTOR. EMYCIN fue uno de los primeros shell de sistema experto desarrollado y puesto en funcionamiento, su nombre se deriva de Empty MYCIN, o MYCIN vacío, ya que en esencia se trataba de ese sistema experto sin los conocimientos iniciales de su base de datos. Otros sistemas expertos son: CASNET para el diagnóstico de glaucoma, PUFF para diagnósticos pulmonares, CAROUSEL para diagnóstico de los vértigos, SPHINX para diagnóstico de ictericias, y PROSPECTOR para exploraciones geológicas. 2.4. Representación del Conocimiento El conocimiento son las nociones e ideas que se tienen acerca de una entidad física o mental. Existen diversos criterios para clasificar los conocimientos. Según los métodos empleados para su obtención, y lo predecible que resulta su comprobación, los conocimientos pueden ser comunes o científicos. El conocimiento científico es predominantemente conceptual y se fundamenta en los sistemas de interrelaciones que establece entre dichas unidades de pensamiento. Los lenguajes son conjuntos de signos preestablecidos para la representación, expresión y comunicación de ideas. La palabra concepto, derivada del vocablo latín conceptus, se refiere a las ideas abstractas y generales que conciben o forman el entendimiento. Los signos o términos que conforman a un lenguaje no siempre están 28 asociados a un concepto, ni todo concepto refiere por sí mismo un rasgo de la realidad. Así, algunos términos pueden formar parte de expresiones significativas sin tener un significado propio, por ejemplo los signos de puntuación o el artículo indeterminado “lo”, en el caso concreto del idioma español. Al analizar las entidades del lenguaje se pueden diferenciar tres niveles: el lingüístico, el conceptual y el físico. Entre esos niveles se dan dos clases de relaciones: las relaciones de designación, y las relaciones de referencia [Bunge, 1983]. Las relaciones de designación se dan entre el nivel lingüístico y el nivel conceptual, son asimétricas y relacionan signos con ideas. Las relaciones de referencia son asimétricas y se pueden establecen entre miembros del nivel lingüístico o conceptual con miembros del nivel físico. A continuación se muestran en forma gráfica las relaciones que pueden establecerse entre estos niveles. Nivel Lingüístico : términos, frases, sentencias, lenguajes. RELACIONES DE DESIGNACIÓN Nivel Conceptual : conceptos, proposiciones, teorías. RELACIONES DE REFERENCIA Nivel Físico : cosas, hechos, propiedades, conexiones, etc. Fig. 2.3. Relaciones de designación y referencia en los conceptos. Todo concepto tienen una intensión o connotación, una referencia o denotación, y una extensión o dominio de aplicabilidad. La intensión I(C) de un concepto C es el conjunto de propiedades y relaciones Pi que se consideran sintetizadas en el mismo, es decir, los objetos que constituyen la referencia de C poseen todos ellos las propiedades Pi, lo cual se puede expresar de la siguiente forma: I(C) = {P1, P2, ... Pn}. La extensión o dominio de aplicabilidad se refiere al conjunto de entes que poseen las propiedades que caracterizan a un concepto. Así, la intensión de los conceptos se comporta 29 inversamente respecto de su extensión, por lo que a mayor numero de propiedades connotadas en un concepto, se reduce el número de entes a los que les es aplicable. Los conceptos no siempre requieren connotaciones exhaustivamente definidas, en tales casos, se debe recurrir a un nivel de precisión que asegure que el concepto no resultará ambiguo. Para ello basta la selección de características o propiedades peculiares suficientes para garantizar su determinación de forma inequívoca, a estas características esenciales se le denominan núcleo intensional. Se dice que un concepto C’ es más general que otro C, si y sólo si la intensión de C’ está incluida en la C o la extensión de C está incluida en la C’, es decir, con respecto a su extensión un concepto es más general que otro si posee menos características que restrinjan su dominio de aplicabilidad. Los conceptos, funcionalmente, establecen identidades y permiten la agrupación de elementos o entidades. Algunos conceptos establecen relaciones que hacen posible la comparación de entidades y su ordenamiento, otros conceptos tienen carácter cuantitativo y hacen posible la medición de algún atributo. Los conceptos individuales genéricos denotan elementos de algún género, en los cuales se han sustituido constantes específicas por variables, dando origen a la generalización o síntesis. La clasificación es el modo más simple de discriminar simultáneamente los elementos de un conjunto y agruparlos en subconjuntos según algún criterio. Lo clasificado se llama universo o dominio del discurso. El universo del discurso puede ser cualquier conjunto o clase de conjuntos discretos o continuos. La forma más elemental de clasificación es la división, y consiste en distribuir los elementos del universo del discurso entre cierto número de clases, disjuntos dos a dos. La división más simple es la dicotomía [Bunge, 1983], en la cual la división del universo del discurso se hace en dos clases, una asociada a un concepto definido y otra que no lo está. Una forma más compleja de clasificación es la ordenación del universo dado por 30 medio de alguna relación asimétrica y transitiva que existe entre dos miembros cualesquiera del universo del discurso. Las propiedades están representadas por conceptos, y las interrelaciones de un conjunto de propiedades se representan por relaciones lógicas entre los conceptos correspondientes; estas relaciones entre conceptos se formulan en proposiciones que, a su vez, se organizan en cuerpos de teoría. Un concepto se llamará teórico si y sólo si forma parte de alguna teoría. La especificación del significado de los términos teóricos requiere de la lógica que define la estructura del concepto, de la teoría especial de que se trate, la cual define su connotación, y de la experiencia científica que a través de la observación, medición y/o experimentación, determinará su dominio de aplicabilidad o extensión. Con el objeto de agrupar o clasificar elementos, se recurre a la teoría de conjuntos, en la cual se establecen clases o categorías, y cada elemento del universo del discurso puede o no pertenecer a las mismas; esto crea una clara división entre miembros y no miembros de una clase (dicotomía). En muchos casos los criterios para establecer la pertenencia a un conjunto no resultan evidentes, así por ejemplo las categorías: “personas altas”, “personas con fatiga severa”, “días nublados”, son expresiones de uso común, que expresan cualidades de sus elementos integrantes, en forma sencilla y práctica, sin obligar al uso de instrumentos o conocimientos especializados, es decir, son aproximaciones que resultan de utilidad cuando no se requiere mayor precisión o cuando no es posible obtenerla. Cuando la intensión o la extensión de un concepto no están definidas exhaustivamente, surge la vaguedad. La vaguedad intensional se refiere al conocimiento parcial de las propiedades connotadas por el concepto. Recurriendo a la notación de conjuntos es posible establecer la vaguedad intensional en los siguientes términos: sea I(C) el conjunto de propiedades conocidas y desconocida connotadas por 31 el concepto C, sea K(C) el subconjunto de propiedades conocidas de C, y además, sea N(C) el subconjunto de propiedades esenciales o núcleo intensional de C. La vaguedad intensional Vi(C) asociada al concepto C queda definida así Vi(C) = I(C) – K(C). En forma gráfica Propiedades connotadas por el concepto I(C) La vaguedad intensional aparece en la zona rayada. Propiedades conocidas K(C) Propiedades esenciales N(C) Núcleo Intensional Fig. 2.4. Representación gráfica de la vaguedad intensional. En la figura anterior aparece la vaguedad intensional, como la zona rayada en el diagrama de Venn, la cual también se puede definir con respecto a las propiedades esenciales, quedando la definición así Vi(C) = I(C) – N(C). De esta segunda forma se amplía la vaguedad asociada al concepto, situación que resulta reveladora de conceptos vagamente establecidos. La vaguedad extensional surge cuando no es posible determinar con absoluta precisión cuáles son los elementos que poseen ciertas propiedades y cuáles son aquellos que no las poseen. Existen casos limítrofes que pueden agruparse en ambas categorías simultáneamente, esto último, debido a la imprecisión asociada al concepto. De forma gráfica, la vaguedad extensional aparece en la zona central o de intersección en la siguiente figura 32 VAGUEDAD EXTENSIONAL () () E (C ) E (C ) ∩ E C Elementos que poseen las propiedades que definen al concepto C(x) Elementos que pueden ser clasificados en ambas categorías (Vaguedad Extensional) EC Elementos que no poseen las propiedades que definen al concepto C(x) Fig. 2.5. Representación gráfica de la vaguedad extensional. Si un concepto es extensionalmente vago, entonces lo es también intensionalmente, pero la afirmación inversa no es necesariamente cierta. A veces la vaguedad conceptual refleja una nebulosidad o indeterminación objetiva, no porque los hechos sean confusos, si no para poder expresar formas de transición no definidas. La vaguedad de los conceptos también se origina del crecimiento del conocimiento común o especializado, que a veces ocurre de manera espontánea, requiriendo de nuevos conceptos y/o modificando el significado de los existentes. 2.5. Causas de Incertidumbre Son muchos los motivos que pueden dar origen a la incertidumbre asociada al conocimiento. No se pretende acá hacer una lista exhaustiva de los mismos, en lugar de ello, se expondrán las principales fuentes de incertidumbre que condicionan el funcionamiento de los sistemas expertos diseñados para fines diagnósticos. La incertidumbre puede estar asociada a la naturaleza del problema, al conocimiento que se tenga del problema, o al modelo seleccionado para su solución. Entre esas causas están: • Problemas no deterministas: Los sistemas naturales y sociales, entre otros, no se rigen por leyes deterministas. En tal sentido, no se pueden establecer con precisión las relaciones que ocurren entre las causas y los efectos que se dan en esos sistemas. 33 • Información incompleta: Por lo general la información disponible para realizar los diagnósticos, se limita a un conjunto de observaciones y hechos que se consideran relevantes o notorios, quedando una serie de datos fuera de consideración. Esto ocurre porque la información no está disponible (las historias clínicas no son completas, los pacientes no logran recordar todos los síntomas experimentados, los encargados de realizar la evaluación no se percatan de la presencia y/o ausencia de ciertas características, etc.). • Información imprecisa: Hasta ahora no se han desarrollado los instrumentos, éstos no son lo suficientemente precisos, o no están disponibles en un momento dado para cuantificar ciertos hechos. Por ejemplo, para conocer la intensidad de un dolor de cabeza, el paciente expresa lo que siente, y esas sensaciones dependerán de la tolerancia al dolor y de factores psicológicos y sociales. • Información errónea: La información disponible de los casos a diagnosticar puede ser parcial o totalmente falsa. Esto se puede deber a falsas percepciones, fallos en equipos de medición, pruebas de laboratorio contaminadas o alteradas, falsos recuerdos en caso de los pacientes, y hasta falta de pericia en la observación de los hechos. • Deficiencias de los modelos: Por motivos prácticos, al modelar los sistemas se busca un equilibrio entre su eficiencia y el esfuerzo requerido para lograr su implementación. Los modelos suelen limitarse al manejo de la información prioritaria e incorporan factores sujetivos que afectan su operatividad. 2.6. Razonamientos Lógicos La lógica es la ciencia que estudia los métodos y principios del razonamiento en sus distintas formas. La lógica proposicional es la parte de la lógica que trata las 34 combinaciones de variables que representan proposiciones, esas variables se denominan variables lógicas o variables proposicionales. Uno de los principales objetivos de la lógica proposicional es el estudio de reglas que permiten la obtención de nuevas variables lógicas a partir de un conjunto de proposiciones dadas. Las operaciones que permiten obtener variables lógicas a partir de otras o por combinación de sus valores, se denominan funciones lógicas. Las variables lógicas y las combinaciones de ellas mediante las funciones negación, conjunción, y disyunción, en forma de expresiones algebraicas, se conocen como fórmulas lógicas. Cuando el valor de una fórmula lógica es siempre verdadero e independiente de los valores asignados a sus variables, se denomina una tautología. Ciertas tautologías pueden ser utilizadas para hacer inferencias deductivas, en tales casos se habla de reglas de inferencia. Las reglas de inferencia, son las que permiten, dada una teoría deductiva, llegar a la verdad de una proposición a partir de una o varias proposiciones tomadas como hipótesis. Una tautología permanece como tal cuando se reemplazan sus variables por fórmulas lógicas, esta propiedad se conoce como regla de sustitución y es muy importante en los procesos de inferencia. Cuando el valor de una fórmula es siempre falso, la misma se considera una contradicción. Silogismo (palabra derivada del vocablo latino Syllogĭsmus, y este del vocablo griego sullogismÕj) es un razonamiento que contiene tres proposiciones (mayor, menor y conclusión), tal que la conclusión es deducida de la mayor por medio de la menor. Por ejemplo: todos los hombres son mortales (proposición mayor); todo los griegos son hombres (proposición menor); luego todos los griegos son mortales (conclusión). El ejemplo anterior (silogismo hipotético) se puede escribir así, “si a implica b, y b implica c, entonces a implica c” o simbólicamente: ((a ⇒ b) ∧ (b ⇒ c)) ⇒ (a ⇒ c); donde ⇒ es una implicación, y ∧ una conjunción. 35 Dos formas de inferencia de uso muy común, son las denominadas modus ponens y modus tollens, que son tautologías usadas como reglas de inferencia. En el modus ponens, se examina la premisa de la regla, y si es cierta, entonces se infiere la conclusión. Así, las inferencias con esta regla son de la forma: si a es cierto, entonces b, y además se sabe que a es cierto, luego se puede concluir que b es cierto. En forma simbólica ((a ⇒ b) ∧ a) ⇒ b modus ponens En el modus tollens, se examina la conclusión y si es falsa, se concluye que la premisa también es falsa. Por ejemplo: se tiene la regla “si a es cierto, entonces b es cierto”, y se sabe que b es falso, por la aplicación del modus tollens, se concluye que a también debe ser falso, conclusión que no se puede obtener aplicando el modus ponens, ya que no se conocen los valores de la premisa. En forma simbólica ((a ⇒ b ) ∧ b ) ⇒ a modus tollens 2.6.1. Lógica Bi-valuada La lógica clásica o bi-valuada hace referencia a proposiciones que deben ser o completamente ciertas o completamente falsas, así cada proposición tiene una opuesta o negación de la misma. Como cada variable lógica representa a una proposición, ella puede asumir uno de dos valores (cierto o falso / 1 ó 0). Este tipo de lógica está ampliamente difundido en los sistemas informáticos digitales, especialmente por la aplicación del álgebra booleana, propuestas por el matemático británico George Boole (1815-1864), y consistente de un conjunto de reglas que sustentan la definición de los operadores AND, OR, NOT, NAND, NOR, XOR, directamente aplicables a los bits. 36 2.6.2. Lógica Multi-valuada Se atribuye al filósofo griego Platón (428 A.C. – 347 A.C.) una de las primeras manifestaciones sobre la insuficiencia de dos valores (verdadero y falso) para clasificar los hechos, sin embargo, fue el lógico polaco Jan Łukasiewicz (1878-1956) el primero en proponer (año 1900 y posteriores), de una forma sistemática, una alternativa a la lógica bi-valuada. Łukasiewicz inicialmente definió una lógica tri-valuada o trivalente, que consideraba los valores verdadero, falso y posible. Posteriormente, Łukasiewicz experimento con lógicas tetra-valuadas y penta-valuadas, concluyendo que no existían motivos para limitar, a priori, el número de posibles valores para un sistema lógico, Otros modelos de lógica trivalente son los propuestos por Bochvar, Kleene, Heyting, Reichenbach, etc. 2.6.3. Lógica Difusa En 1965 el profesor Lotfi Zadeh presentó una propuesta para formalizar el razonamiento aproximado (nociones como: pequeño, cerca, rápido, mucho, etc.), conocida como lógica difusa (fuzzy logic), que plantea una teoría de conjuntos en la cual los elementos pertenecen a un dominio en mayor o menor grado, sin fronteras definidas explícitamente (valores continuos entre 0 y 1). Las variables lingüísticas son aquellas que pueden asumir palabras por valores, como concepto, fue introducido por el Prof. Lotfi Zadeh en su publicación “Outline of a new approach to the analysis of complex systems and decision processes” de 1973. Las variables lingüísticas [Zadeh, Fellow, 2000] constituyen uno de los pilares fundamentales en el desarrollo de la lógica difusa y sus aplicaciones. Las variables lingüísticas son especialmente útiles para representar las percepciones y los conocimientos no exactos. 37 En los conjuntos difusos se asigna a cada elemento del universo del discurso un valor que representa su nivel de pertenencia a esa categoría, es decir, su similitud o compatibilidad con el concepto que representa el conjunto difuso. Normalmente, el grado de pertenencia a un conjunto difuso, es un número real comprendido en el intervalo cerrado entre 0 y 1, donde 0 indica “no pertenece al conjunto” y valores superiores expresan niveles crecientes de aproximación al concepto representado. Los conjuntos discretos pueden ser considerados como casos particulares de los conjuntos difusos, pues la absoluta pertenencia o no pertenencia al conjunto, se logra al asignar al grado de pertenencia los valores extremos del intervalo [0,1]. Un conjunto puede ser descrito enumerando los elementos que lo constituyen (método por extensión) o mediante la especificación de las propiedades que deben poseer sus elementos (método por comprensión). La definición de conjuntos a través del método por extensión sólo es aplicable a conjuntos finitos. El conjunto V, cuyos miembros son las letras vocales del alfabeto español, se suele representar de la siguiente forma: V={a,e,i,o,u} Según el método por extensión V={v | v es una vocal del alfabeto español} Según el método por comprensión donde el símbolo | denota “tal que” La pertenencia de cada elemento x del universo de discurso X ( x ∈ X ) a un determinado conjunto A, se puede expresar mediante una función característica μ. Para un conjunto discreto A, la función característica asigna un valor a cada elemento ( x ∈ X ) tal que: ⎧1 si y sólo si x ∈ A ⎫ ⎬, ⎩0 si y sólo si x ∉ A⎭ μ A ( x) = ⎨ Así μ A : X → {0, 1} 38 La función característica puede ser generalizada para los conjuntos difusos, ya no limitándose a asumir los valores extremos 0 y 1, y se denomina función de pertenencia. Para un universo de discurso X, la función de pertenencia μ asociada a un conjunto difuso A, generalmente es de la forma: μ A : X → [0, 1], donde [0, 1] denota el intervalode númerosrealesde 0 a 1, ambosinclusive Se define como soporte de un conjunto difuso (“support of a fuzzy set”) A en el universo de discurso X, a un conjunto no difuso que contiene todos los elementos de X con grado de pertenencia diferente de cero en A, es decir, supp A = {x ∈ X μ A ( X ) > 0} Para conjuntos difusos con soporte finito se usa frecuente la siguiente notación: Sea A un conjunto difuso, y xi un elemento del mismo con grado de pertenencia μ i > 0 , entonces A, dependiendo del número de elementos que lo integran y de su naturaleza, puede ser escrito así: A = μ1 / x1 + μ 2 / x 2 + L + μ n / x n n ó A = ∑ μ i / xi i =1 ó para X ∈ ℜ, A = ∫ μ A ( x) / x X donde: la barra “/” se usa para enlazar los elementos y sus grados de pertenencia al conjunto A, y la referencia a la suma se usa para agrupar los pares de elementos que definen conjuntamente a A, sin implicar ninguna operación algebraica o de cálculo. Un α-corte de un conjunto difuso A, es un conjunto no difuso Aα que contiene todos los elementos del universo de discurso X, tales que su grado de pertenencia al conjunto A sea mayor o igual que el valor especificado de α. Esta definición puede ser escrita como Aα = {x ∈ X μ A (x) ≥ α } 39 Un conjunto difuso A es convexo si y sólo si todos sus α-cortes son convexos, es decir, el mismo debe cumplir con la siguiente condición: μ A (λr + (1 − λ )s ) ≥ min[μ A (r), μ A (s)] , para todo r, s ∈ℜ , y para todo λ ∈ [0,1] En la siguiente figura se puede apreciar la representación gráfica de un conjunto difuso convexo (lado izquierdo), y de un conjunto difuso no convexo (lado derecho). 1 1 P e r t e n e n c i a 0 0 P e r t e n e n c i a 50 Conjunto Difuso Convexo Valor de la variable 0 Valor de la variable 0 50 Conjunto Difuso No Convexo Fig. 2.6. Representación gráfica de la convexidad de un conjunto difuso. Un conjunto difuso A se denomina normalizado cuando al menos uno de sus elementos asume el máximo grado de pertenencia definido (generalmente 1). Un conjunto difuso, convexo y normalizado, definido en ℜ y con función de pertenencia continua, se denomina un número difuso o intervalo difuso. Un número difuso es un subconjunto de valores reales pertenecientes en algún grado a un conjunto difuso, y caracteriza a una distribución de posibilidades en un universo de discurso. La distribución de posibilidades queda definida por la función de pertenencia utilizada. Algunas formas de distribución utilizadas para valores difusos son: triangular, trapezoidal, curvas π, campana generalizada, curvas de Gauss, etc. La teoría original de los conjuntos difusos fue formulada a partir de tres operaciones básicas: complemento, unión, e intersección. Cuando el grado de pertenencia corresponde al intervalo cerrado entre 0 y 1, estas operaciones se definen así 40 μ A ( x) = 1 − μ A ( x) Complemento μ A ∪ μ B ( x) = máx[μ A ( x), μ B ( x)] Unión μ A ∩ μ B ( x) = mín[μ A ( x), μ B ( x)] Intersección Estas tres operaciones poseen la importante cualidad de no incrementar el grado de error que puede estar asociado a la función de pertenencia para los conjuntos involucrados. Se han definido muchas operaciones aplicables a los conjuntos difusos, pero las tres anteriores se consideran como las operaciones estándares, y se afirma que ellas definen la teoría posibilística que justificaría el uso de la lógica difusa en lugar de recurrir a las probabilidades [Zadeh, Fu, Tanaka, et al., 1975], [Zadeh, 1978]. Estas operaciones básicas (complemento, unión e intersección) fueron definidas por el Prof. Zadeh en 1965 cuando expuso su teoría, sin embargo, necesidades posteriores motivaron la definición de funciones equivalentes con características adicionales. En tal sentido y dado su frecuente uso, es oportuno revisar los principios axiomáticos para la definición de esas funciones, más allá del estudio minucioso de cada una de ellas. El complemento de un conjunto difuso A es especificado por la función c : [0,1] → [0,1] la cual asigna un valor c(μ A ( x) a cada grado de pertenencia μ A (x) . Este valor asignado corresponde al grado de pertenencia a la negación del concepto representado por A, para el elemento x. Existen formas especiales de complemento para los conjuntos difusos, por ejemplo los complementos del tipo Sugeno, y los del tipo Yager, que se definen así cλ ( a ) = 1− a , donde λ ∈ ( −1, ∞ ) 1 + λa c w ( a ) = (1 − a w )1 / w , donde w ∈ ( 0, ∞ ) Complemento tipo Sugeno Complemento tipo Yager Cuando al aplicar dos veces consecutivas el complemento se obtiene el valor original, se dice que se trata de un complemento involutivo, es decir, 41 c(c(a)) = a, para todo a ∈ [0,1] . Los complemento tipo Sugeno y los del tipo Yager, poseen esta importante característica de ser involutivos. Existen otras formas de complemento para conjuntos difusos, pero en general las condiciones mínimas para que una función c sea considerada como un complemento difuso son: • c(0)=1 y c(1)=0, es decir, el comportamiento para valores límites debe coincidir con el de la definición para conjuntos no difusos. • La función debe ser monótona no creciente, es decir, si a<b , entonces c(a) ≥ c(b) para todo a,b ∈[0,1] . La unión de dos conjuntos difusos A y B es definida por una función que toma por argumento el grado de pertenencia de cada elemento x del conjunto universal X a los conjuntos A y B, y le calcula el grado de pertenencia a la unión de ambos. De manera general, esta función se escribe μ A∪B ( x) = u[μ A ( x), μ B ( x)] , siendo la función de la forma u : [0,1]× [0,1] → [0,1] La intersección entre dos conjuntos difusos A y B es definida por una función que toma por argumento el grado de pertenencia de cada elemento x del conjunto universal X a los conjuntos A y B, y le calcula el grado de pertenencia a la intersección de ambos. De manera general, esta función se escribe μ A∩B ( x) = i[μ A ( x), μ B ( x)] , siendo la función de la forma i : [0,1]× [0,1] → [0,1] Las condiciones mínimas que debe cumplir una función f, para que esta defina alguna forma de unión o intersección entre conjuntos difusos son: • f(a,b)=f(b,a); es decir, la función debe ser conmutativa. • f(f(a,b),c)= f(a,f(b,c)); es decir, la función debe ser asociativa. • Si a<b y c<d entonces f(a,c) ≤f(b,d); lo que implica que debe ser monótona. 42 Adicionalmente, toda función u que defina la unión de conjuntos difusos, y toda función i que defina intersección entre conjuntos difusos, en sus valores límites, respectivamente deben satisfacer: • u(0,0)=0; u(0,1)= u(1,0)= u(1,1)=1 • i(1,1)=1; i(0,1)= i(1,0)= i(0,0)=0 En general, las funciones que cumplen con las características anteriores asociadas a la intersección de conjuntos difusos, se conocen como operadores de T-norma o norma triangular. Las funciones que cumplen con las características exigidas para toda función de unión de conjuntos difusos, se denomina operador S-norma o T-conorma. Otras características convenientes en algunas aplicaciones son: que la función sea continua y que sea una idempotencia, es decir, f(a,a)=a. La operación unión de conjuntos corresponde a una disyunción (operador lógico “o”), en la cual se asume alguna forma de equivalencia o sustitución entre los elementos que se unen, mientras que la operación intersección se vincula con el operador lógico “y”. El grado de tolerancia aplicable a los operadores lógicos “o” e “y” se pueden ajustar en algunas funciones, mediante parámetros. El producto cartesiano de dos conjuntos X e Y, denotado por X × Y , es el conjunto de todos los pares ordenados tales que el primer elemento de cada par pertenece a X, y el segundo elemento pertenece a Y. Simbólicamente, el producto cartesiano se escribe X × Y = { (x, y ) x ∈ X , y ∈ Y } El concepto de producto se puede generalizar a más de dos conjuntos, en cuyo caso, lo importante es mantener el orden de los elementos involucrados. La presencia o ausencia de asociación, interacción o interconexión entre elementos de dos o más conjuntos se denomina una relación de conjuntos. Así, una relación difusa se define 43 como el producto cartesiano de conjuntos no difusos X1,X2,...,Xn, donde cada grupo de elementos (x1,x2,...,xn) puede tener distintos grados de pertenencia según la relación. La composición de dos relaciones binarias P(X,Y) y Q(Y,Z), se define como un subconjunto R(X,Z) de X × Z tal que ( x, z ) ∈ R si y sólo si existe por lo menos un y ∈ Y tal que (x, y ) ∈ P y ( y, z ) ∈ Q . Dadas las relaciones binarias P, Q, R, su composición ( o ) debe satisfacer las siguientes tres propiedades PoQ ≠ Qo R (P o Q )−1 = Q −1 o P −1 (P o Q) o R = P o (Q o R) Al igual que otras operaciones, la composición de conjuntos difusos es una generalización que puede ser establecida de diferentes formas, siendo la más común de ellas la composición máx-mín, que para las relaciones anteriores, se escribe así μ PoQ ( X , Z ) = max min[μ P ( x, y ), μ Q ( y, z )] y∈Y para todo x ∈ X y z ∈ Z Otra forma bastante común para la composición de conjuntos difusos es la máxprod, la cual es denotada por P ( X , Y ) • Q (Y , Z ) , y es definida por μ P•Q ( X , Z ) = max[μ P (x, y ) • μ Q ( y, z )] y∈Y para todo x ∈ X y z ∈ Z Una regla difusa simple es una estructura lógica de la forma “si x es A entonces y es B”, donde A y B son valores lingüísticos definidos por conjuntos difusos en sus rangos o universos de discurso X e Y respectivamente [Buchanan, Shorliffe, 1984], [Dubois, Prade, 1996]. Siendo “x es A” la premisa o antecedente, e “y es B” el consecuente o conclusión. Interpretar una de estas reglas implica dos pasos distintos, 44 lo primero es evaluar el antecedente, que incluye difuminar (fuzzifying) las entradas y aplicar los operadores necesarios. Lo segundo es la implicación o aplicar el resultado del antecedente al consecuente, lo que en esencia es evaluar la función de pertenencia. Al evaluar reglas no difusas sólo se alcanza la conclusión si se cumple estrictamente lo propuesto en el antecedente. En el caso difuso una regla se considera activada o disparada, si existe algún grado de similitud entre la premisa y el antecedente, luego la conclusión se puede cumplir en mayor o menor grado. Por lo general, no es mucho lo que se puede inferir a partir de reglas simples, por lo tanto surge la necesidad de usar composiciones y reglas complejas. Se puede dar importancia relativa a las reglas, mediante la asignación de valores o pesos. La forma de inferencia difusa más usada, es la conocida como el método de Mamdani o mín-implicación, la cual fue propuesta en 1975 por el Prof. Ebrahim Mamdani. Las principales bondades que se le reconocen al método de Mamdani son: ser de uso intuitivo, amplia aceptación, apropiado para ser usado con lenguajes naturales. Otra forma de inferencia que ha tenido bastante aceptación es el método de Sugeno o método Takagi-Sugeno-Kang, propuesto en 1985 por el Prof. Michio Sugeno, las principales ventajas del método son su eficiencia al realizar los cálculos y la continuidad de sus soluciones. Resulta apropiado para: técnicas lineales, técnicas de adaptación, optimización y análisis matemáticos. Los conjuntos difusos, que representan las salidas de reglas, pueden ser combinados para formar un solo conjunto, mediante un proceso conocido como agregación. Existen varias formas de agregación, por ejemplo tomar el máximo de cada categoría, el método “o probabilístico” (probabilistic or), o simplemente tomar la suma de cada conjunto de salida. 45 El proceso de convertir variables lingüísticas en valores difusos (difuminar) tiene su equivalente inverso o proceso de precisar (defuzzification), nuevamente, existen múltiples formas de efectuar este proceso, siendo la más popular el cálculo del centroide o centro de gravedad. Otras formas de bastante aceptación son: el medio de los máximos, el mayor de los máximos, el menor de los máximos. 2.7. Sistemas Expertos Como se ha mencionado anteriormente, los sistemas expertos son un campo de investigación de la Inteligencia Artificial. Su aplicabilidad se extiende a muy diversas áreas, y éstos han variado significativamente a través de los años y según los objetivos para los que son diseñados. 2.7.1. Definición de Sistema Experto Los sistemas expertos son programas informáticos, destinados a almacenar conocimientos relativos a alguna materia o especialidad, ese conocimiento se obtiene de personas a las que les considera expertos o especialistas en el tema. Las formas más usuales de representar y almacenar el conocimiento es a través de datos iniciales y reglas lógicas, conformando una base de conocimientos. Posteriormente, el sistema podrá utilizar la información almacenada para resolver problemas similares. Los conocimientos que pueden ser expresados mediante reglas lógicas, son aquéllos que establecen relaciones del tipo causa-efecto. En los problemas de diagnóstico las causas son las características, valores, síntomas, signos u otros atributos individuales o combinados, que son relevantes para establecer una conclusión o efecto. Un ejemplo de conocimiento expresado a través de una regla, y que podría ayudar en un problema de diagnóstico es: 46 SI [ fatiga = presente O disnea = severa ] Y [ fiebre = presente O fiebre = recurrente O infección = presente ] Y [ sangrado = patológico O propenso a contusiones = presente ] ENTONCES sospechar de insuficiencia de médula ósea. 2.7.2. Componentes de los Sistemas Expertos Los sistemas expertos pueden ser muy diferentes entre sí, variando su composición y complejidad, principalmente, en función del uso que se hará de los mismos. Existen sistemas expertos dotados de dispositivos especiales para obtener información de forma automatizada, o ejecutar acciones a través de equipos y máquinas, otros incluyen rutinas para generar explicaciones. De manera general, se puede decir que los componentes básicos de un sistema experto basado en reglas, son: el motor de inferencia o intérprete de reglas, la base de conocimientos, la base de hechos, la memoria de trabajo, y la interfaz sistema-usuario. En el siguiente diagrama se pueden observar los componentes básicos de un sistema experto basado en reglas: Reglas definidas por los expertos Base de Conocimientos Motor de Inferencia Características del problema a resolver Resultado de la consulta Base de Hechos Fig. 2.7. Componentes básicos de un sistema experto basado en reglas. Una vez definido un sistema experto basado en reglas, es posible suministrarle una serie de características observadas o conocidas, y el sistema buscará las reglas 47 cuyos antecedentes coincidan con los datos suministrados, generándose así conclusiones y nuevos hechos, que a su vez pueden generar nuevas conclusiones. En los sistemas expertos la función equivalente al razonamiento humano, corresponde a la mecánica inferencial, que cubre un conjunto de nociones (deducción, inferencia, planificación, prueba, búsqueda, etc.) y usan el conocimiento base como argumento para lograr sus conclusiones. El motor inferencial, o componente que aplica la mecánica inferencial, puede recurrir a diferentes técnicas para procesar los conocimientos disponibles. De esas técnicas, dos son de especial importancia para este Trabajo de Grado y guardan relación con los métodos clásicos conocidos como: análisis/síntesis o método resolutivo/método compositivo, etc. La distinción entre ambas técnicas se basa en la relación direccional entre datos y objetivos. Las referidas técnicas son: la técnica del encadenamiento hacia adelante (forward chaining), y la técnica del encadenamiento hacia atrás (backward chaining). En el encadenamiento hacia adelante, se comienza con los datos conocidos y se aplica el modus ponens sucesivamente hasta obtener los resultados correspondientes, suele ser útil cuando se dispone de una gran cantidad de datos que deben ser examinados. La técnica del encadenamiento hacia atrás toma un dato como consecuente y busca en la base de conocimientos los posibles antecedentes, es muy útil para verificar hipótesis. Ambas técnicas se pueden combinar, haciendo búsquedas hacia adelante y hacia atrás, con lo cual se logra inferir una conclusión y luego verificarla. 2.7.3. Ventajas y Limitaciones de los Sistemas Basados en Reglas La principal ventaja de los sistemas basados en reglas, es su capacidad para resolver problemas desde el mismo momento en que se definen las reglas respectivas, lo cual es muy útil para problemas cuya ocurrencia es poco probable. La principal desventaja de estos sistemas, es el esfuerzo inicial requerido para su implementación. 48 2.7.4. Sistemas Expertos Difusos Puesto que los sistemas expertos se basan en el conocimiento humano que almacenan, la lógica difusa resulta más apropiada que las formas rígidas de procesar esa porción vaga e imprecisa del conocimiento. El uso de variables lingüísticas permite que las reglas lógicas de decisión sean expresadas de manera sencilla y natural, tal como se usan en muchas disciplinas, además facilita la interpretación de los resultados obtenidos y mejora la confiabilidad de los mismos. Existen diversas formas de automatizar los procesos de diagnóstico haciendo uso de los sistemas expertos y de la lógica difusa, una es usar una composición del tipo máx-mín o método de Sanchez [Roy, Biswas, 1992], [Klir, Folger, 1988], donde se representan los conocimientos como una relación difusa entre causas y efectos. Este enfoque corresponde a condicionales difusos del tipo “Si C Entonces E por R”. Así, dado un conjunto H de causas observadas o hechos, un conjunto C de causas, un conjunto E de consecuencias o efectos (tipos de fallas, enfermedades, etc.), y una relación difusa R que vincule las causas en C con las consecuencias en E, es posible inferir un conjunto difuso D de posibles diagnósticos por medio de la siguiente composición de inferencia D= H oR o μ D (e) = max[min (μ H (C ), μ R (c, e )] c∈C para todo e ∈ E El uso combinado de probabilidades y lógica difusa ha resultado exitoso en la automatización de procesos de diagnóstico [Klir, Folger, 1988]. Un buen ejemplo de ello es el sistema CADIAG-2, al que se atribuye una precisión de hasta el 94.5% en el diagnóstico de enfermedades reumatológicas. 49 Capítulo 3 MARCO METODOLÓGICO A continuación se hace referencia a la forma en la cual se realizó la investigación y se enumeran las principales técnicas utilizadas para la obtención de la información, programación, documentación y validación de los resultados. 3.1. Tipo de Investigación Según la clasificación sugerida en el Manual de Trabajos de Grado de Especialización y Maestría y Tesis Doctorales de la UPEL [UPEL, 1998], el presente Trabajo de Grado corresponde a una Investigación Documental, pues implicó ampliar y profundizar conocimientos obtenidos fundamentalmente de las fuentes bibliográficas y documentales. Al mismo tiempo, corresponde a la clasificación de Proyecto Especial, pues la solución no se limitó a la formulación de una propuesta, sino que implicó el desarrollo de un software o aplicación para computadoras. Aunque no existe consenso sobre metodologías específicas para el desarrollo de sistemas expertos, se acepta que estos deben seguir etapas similares a las correspondientes al ciclo de vida en ingeniería del software [Rolston, 1992]. Estas etapas se conocen como: identificación del problema, construcción de un prototipo, formalización, implantación, evaluación, y evolución a largo plazo. O también: análisis, diseño, codificación, pruebas unitarias, pruebas de integración, pruebas de aceptación, y mantenimiento. 3.2. Técnicas de Recolección de Datos La principal fuente de información para la elaboración de este Trabajo de Grado, fue la revisión bibliográfica, también se recurrió a entrevistas directas, que fueron 50 especialmente útiles para definir los requerimientos del sistema. Estas entrevistas fueron de tipo no estructurada, y se basaron fundamentalmente en preguntas abiertas, es decir, se permitió que los participantes expresaran libremente los aspectos que ellos consideraban importantes acerca de los problemas de diagnóstico y del proceso de automatización sugerido. La revisión bibliográfica comenzó por la lectura de textos y documentos sugeridos por los Tutores, luego se procedió a la consulta de Bases de Datos, resultando especialmente útiles las de publicaciones periódicas, se realizaron búsquedas por Internet, y se detectaron artículos y publicaciones de interés, a través de referencias y reseñas bibliográficas de distintas organizaciones. Una vez detectadas las posibles fuentes bibliográficas, se procedió a la revisión de sus contenidos, resúmenes y conclusiones, seleccionándose aquéllas que aportaran nuevas explicaciones o información relativa a la investigación. En la selección de la bibliografía se dio prioridad a las publicaciones más frecuentemente citadas, por razones históricas y/o por la originalidad de lo propuesto por sus autores. Así como también se prefirieron aquellos trabajos que estuvieran respaldados por Universidades y organizaciones científicas de renombre, pues es conocida la existencia de artículos y publicaciones cuya validez y objetividad son cuestionables. 3.3. Técnicas de Programación y Documentación Resulta muy difícil establecer la totalidad de los requerimientos con el análisis inicial de un sistema, por eso, en cualquier etapa de su desarrollo se puede evidenciar la necesidad de modificar el sistema, y de allí su carácter cíclico, y la importancia de recurrir a un diseño modular, es decir, diseñar la totalidad del sistema a partir de elementos autónomos, organizados en arquitecturas sencillas y funcionalmente independientes. Para el desarrollo de la aplicación se seleccionó un lenguaje de alto nivel con programación orientada a objetos, se recurrió a un diseño modular, basado en procedimientos y funciones, de acuerdo a los criterios de acoplamiento y cohesión. El acoplamiento se refiere al grado de interdependencia de los procedimientos, lo que se 51 traduce en facilidad para efectuar modificaciones y mejoras. La cohesión se basa en la fortaleza de la relación funcional entre los elementos de un módulo o procedimiento. Así, se tiende a observar que al aumentar la cohesión disminuye el acoplamiento y viceversa. Se ha aplicado la normalización de las Bases de Datos, hasta la tercera forma normal, con el objeto de reducir las inconsistencias, eliminar las redundancias, además de minimizar el impacto de posibles cambios en el sistema y facilitar su mantenimiento. En la programación, se buscó eficiencia y minimización del código, sin permitir que estos objetivos comprometieran la claridad y facilidad de revisión de cada programa, se ha procurado mantener una programación estructurada y basada en estándares. Se elaboró un conjunto de diagramas y recursos gráficos que favorecen la compresión y mantenimiento de los programas. Igualmente, se provee abundante información del sistema a través de los manuales y de la ayuda en línea. 3.4. Técnicas de Validación de Resultados Aunque las estrategias de prueba no pueden garantizar la ausencia de defectos en una aplicación, estas forman parte de su ciclo de vida, y constituyen un esfuerzo, que en ocasiones representa hasta el 40 por ciento del trabajo total realizado [Pressman, 1996]. Durante las distintas etapas o fases del desarrollo de este Trabajo de Grado, se han aplicado pruebas y procesos de validación para detectar errores, verificar el cumplimiento de los objetivos propuestos, y en general, para garantizar la calidad del mismo. Específicamente se han aplicado las técnicas de prueba de la caja blanca o pruebas estructurales y las pruebas de la caja negra o pruebas funcionales. Las pruebas de la caja blanca examinan los detalles procedimentales, comprueban los caminos lógicos y examinan el estado de los programas en distintas etapas del ciclo de ejecución. Las pruebas de la caja negra no toman en cuenta la estructura lógica de los programas, orientándose a examinar si las entradas se aceptan de forma adecuada y si se produce el resultado correcto, además de otros aspectos fundamentales como la integridad de los archivos, funciones faltantes, deficiencias en la interfaz, etc. Las 52 pruebas del software están destinadas a detectar posibles errores en la programación, así, se considera que una buena prueba es aquélla que tiene altas probabilidades de detectar un nuevo error. Adicionalmente a estos aspectos, se han desarrollado pruebas de recuperación ante fallas, de seguridad y acceso al sistema, de resistencia y de rendimiento. La calidad del software se refiere al control de aspectos tanto internos como externos a los programas. Dos aspectos internos de los programas, especialmente considerados durante el desarrollo del shell son: • • Modularidad o independencia funcional de sus componentes, Legibilidad o facilidad de lectura e interpretación de los programas. Los principales factores externos evaluados que inciden en la calidad del producto final son: • Corrección o capacidad de los programas de lograr sus objetivos de acuerdo a las especificaciones y requerimientos del sistema. • Robustez o capacidad de funcionar aún después de situaciones anormales. • Modificabilidad o facilidad para adaptar los programas existentes a nuevos requerimientos. • Reusabilidad o posibilidad de aprovechar el esfuerzo realizado cuando se requiera una nueva aplicación de propósitos similares. • Compatibilidad con el entorno de trabajo y las aplicaciones más comunes. • Eficiencia en lo relativo al buen aprovechamiento de los recursos disponibles tanto de hardware como de software. • Portabilidad ante la posibilidad de futuros cambios en el lenguaje de programación y/o del sistema operativo. • Verificabilidad o capacidad de producir los resultados esperados. • Integridad de los datos y de los programas para evitar la pérdida o mala utilización de la información. • Facilidad de uso que se relaciona con el esfuerzo y el tiempo requerido para aprender a utilizar la aplicación. 53 Capítulo 4 DESARROLLO DE LA SOLUCIÓN En el contexto de los sistemas expertos, se usa el término shell, (palabra del idioma inglés, que significa: concha, cáscara, armazón) para significar que existe el potencial de un sistema experto o la capacidad para definirlo, pero la base de conocimientos no contiene la información necesaria para su uso. 4.1. Consideraciones de Diseño y Selección de Recursos Plantearse el desarrollo de un shell implica tomar algunas decisiones, una de ellas es seleccionar el o los tipos de computadoras para las cuales estará disponible: mainframes, computadores personales (Personal Computer), dispositivos de mano PDA (Personal Digital Assistants), etc. De las clasificaciones de computadoras según su arquitectura, los IBM PC® y compatibles constituyen el grupo más numeroso. Según información publicada por la empresa Red Sheriff (www.redsheriff.com/us/) el día 26 de septiembre de 2002, el sistema operativo Windows® es el más usado en los PC no corporativos a nivel mundial, correspondiendo 35.12% de ese total a la versión Windows 98®, 20.95% a la versión Windows 2000®, 16.17% a la versión Windows XP®, 9.71% a la versión Windows Me®, en tanto que los sistemas operativos de Apple Corporation representan el 2,21%. Otro sistema operativo que cobra importancia en ese segmento es Linux. Con base en el predominio del mercado y en la disponibilidad de los equipos, se optó por desarrollar el shell para ser utilizado con el sistema operativo Windows® en sus versiones de 32 bits (95, 98, NT 3.5, NT 4.0, 2000, Me, XP). 54 En cuanto a la selección de lenguajes y herramientas para programar sistemas expertos, existen muchas y muy diversas opiniones, en principio, son cientos los lenguajes o versiones de ellos que permiten desarrollar estos sistemas. La revisión de todos esos lenguajes en el marco de este Trabajo de Grado no resulta factible. Algunas de las herramientas y lenguajes de programación, específicamente asociadas al desarrollo de los sistemas expertos son: • Lisp(LISt Processing): Fue desarrollado por John Mccarthy del Instituto Tecnológico de Massachussets en 1958, se trata de un lenguaje para procesamiento simbólico. Esa capacidad de representar símbolos es lo que ha propiciado su uso en la Inteligencia Artificial, desde sus inicios. Las funciones y los programas en Lisp tienen estructura de listas, y no se distinguen sintácticamente de los datos. Lisp es un lenguaje funcional, y permite la redefinición recursiva de sus funciones y hasta del propio lenguaje. Existen distintas versiones tanto compiladas como interpretadas. • Prolog (PROgramming in LOGic): Fue desarrollado por Alain Colmenauer de la Universidad de Marsella en 1973. El lenguaje fue enriquecido por Robert Kowalski de la Universidad de Edimburgo, quien propuso una sintaxis basada en la teoría de la programación lógica. Su capacidad de representación simbólica ha motivado su uso en la Inteligencia Artificial. Se han desarrollado muchas versiones de este lenguaje, y se ha usado principalmente en Europa y Japón. • OPS5 (Official Production System 5): Es un lenguaje diseñado especialmente para facilitar la representación de los conocimientos en forma de reglas, incluye módulos de edición, inferencia, depuración, etc. Es el resultado de la evolución de otros lenguajes y fue desarrollado en la Universidad CarnegieMellon. Existen versiones comerciales de este lenguaje desarrollas por diferentes empresas. 55 • CLIPS® (C Language Integrated Production Systems): Es una herramienta para el desarrollo de sistemas expertos, programada en lenguaje ANSI C por la división de tecnología de software del centro espacial Lyndon B. Johnson de la NASA (USA). Fue presentado en 1986, y desde entonces ha sido objeto de continuas modificaciones. Es un producto de uso libre o gratuito, siempre que no sea destinado a fines comerciales. Puede ser utilizado como un producto independiente o en combinación con lenguajes como C, C++, o Ada. Permite la representación del conocimiento a través de reglas, posee mecanismos de inferencia y otros recursos para el desarrollo de sistemas expertos. Existe una versión para ser usada con la lógica difusa. • Jess® (Java Expert System Shell): Realmente no se trata de un lenguaje de programación, sino de un shell que se considera una reprogramación limitada de Clips® empleando el lenguaje Java®, este último lenguaje puede ser utilizado para desarrollar programas que aprovechen sus rutinas (applets). Fue programado por Ernest Friedman-Hill del Laboratorio Nacional Sandia para el Departamento de Energía de los Estados Unidos. • MatLab® (MATrix LABoratory): Fue escrito a finales de la década 1970, por Cleve Moler de la Universidad de New Mexico. El objetivo era evitar que los alumnos tuvieran que programar en Fortran para usar las librerías o rutinas Linkpack y Eispack que él y varios colegas habían escrito pocos años antes para resolver ecuaciones lineales y problemas de autovalores. El uso de MatLab® se hizo popular en ciertas Universidades. En 1983 el Ingeniero John Little de la Universidad de Stanford reconoció el potencial de MatLab® y junto a Cleve Moler y Steve Bangert encabezaron un grupo para desarrollar, en lenguaje C, una segunda y profesional versión con capacidades gráficas, así se fundó en 1984 MathWorks, Inc. MatLab® consta de un lenguaje de programación y un conjunto de rutinas (Toolboxes) que lo 56 convierten en una buena alternativa para desarrollar programas de uso científico y de ingeniería. • Otras opciones son: Kappa PC®, Scheme®, Nexpert Object®, Loops®, Flavors®, Egeria®, Art®, Goldworks®, Kee®, Snobol4®, Mathematica®. La principal ventaja que se obtendría de emplear un lenguaje o herramienta especializada para desarrollar el shell, sería aprovechar las facilidades para la representación del conocimiento y el uso de las funciones o procedimientos de inferencia ya desarrollados, sin embargo, esta alternativa implicaría el uso de rutinas cuyo funcionamiento exacto no sería conocido, de propiedad intelectual correspondiente a terceros, además de presentar por lo general serias deficiencias en el uso de Bases de Datos y/o capacidades limitadas para emplear interfaces gráficas y generar programas independientes, de libre uso y distribución. Si bien es cierto que la mayoría de estas deficiencias pueden ser subsanadas a través del uso simultáneo de otros lenguajes, también es cierto que adquirir uno de estos productos y aprender a utilizarlo eficientemente sólo para evitar programar algunas rutinas que ellos incorporan, no resulta conveniente para los objetivos y limitaciones tanto económicas como de tiempo que caracterizan a este Trabajo de Grado. De los lenguajes de propósito general para desarrollar aplicaciones compatibles con las versiones actuales del sistema operativo Windows®, destacan por su eficiencia, disponibilidad de información, solidez comprobada, y/o facilidad de uso: C++/C#, Java® y Visual Basic®. El lenguaje C fue desarrollado al comienzo de la década de 1970 por Brian Kernighan y Dennis Ritchie, ambos de Laboratorios Bell (USA), ante la necesidad de contar con un lenguaje de programación de rendimiento similar al lenguaje de máquina (Assembler), que soportara programación estructurada y la definición y uso de 57 diversos tipos de datos. El lenguaje C se hizo popular a partir del año 1978, cuando se publico un libro de programación para este lenguaje, originalmente se trataba de un compilador que reconocía 33 comandos diferentes. Los programas escritos en lenguaje C son altamente portables entre los distintos tipos de computadores, y como lenguaje ha sido el más utilizado para desarrollar aplicaciones comerciales, sistemas operativos e incluso otros lenguajes de programación. A partir de 1988 se comenzó a utilizar un nuevo estándar C++ (C plus plus) desarrollado por Bjarne Stroustrup de Laboratorios Bell, el cual incorporó la programación orientada a objetos. El lenguaje C# (C sharp) es una variante del lenguaje C++ que facilita la programación orientada a objetos y amplía el uso de los tipos de datos. En general se considera que la programación en lenguaje C y sus derivados, es compleja, susceptible a errores y requiere bastante tiempo de codificación y depuración. Aún así, suele considerarse la mejor alternativa para desarrollar programas de misión crítica o aquellos donde la velocidad de ejecución y el uso eficiente del hardware y el software son una prioridad. El lenguaje de programación Java® fue diseñado por James Gosling de Sun Microsystems en el año 1990. Fue diseñado para programar dispositivos electrónicos como calculadoras, microondas y televisores. El objetivo era reducir los costos y simplificar la programación con respecto a los lenguajes C o C++. Al crecer la popularidad de Internet, se pensó que Java® podría usarse con éxito para estas nuevas tecnologías, y esto motivó su desarrollo. El lenguaje Java® estuvo oficialmente disponible a partir de agosto de 1995. Los programas escritos en Java® no acceden directamente a la memoria del computador, y el uso de los recursos debe ser explícitamente autorizado, lo que redunda en ejecuciones seguras y controladas. Para resolver el problema de portabilidad Java® utiliza una tecnología de bytecodes que luego se traduce en el lenguaje de máquina del microprocesador, esto hace que su velocidad de ejecución sea hasta 20 veces más lento que un programa equivalente escrito en lenguaje C. La simplicidad del lenguaje Java® y el poco tiempo que se 58 requiere para desarrollar aplicaciones ha motivado su uso en diferentes áreas incluida la de los sistemas expertos. El lenguaje de programación Visual Basic® deriva de un prototipo denominado Tripod®, creado por Alan Cooper, que se concebía como un shell para el desarrollo de aplicaciones basado en las técnicas de arrastrar y colocar objetos con el mouse. La empresa Microsoft compró los derechos de Tripod® en marzo de 1988, le incorporó tecnologías de acceso a datos y lo fusionó con el lenguaje de programación QuickBasic®, de esa fusión surge en marzo de 1991 la primera versión de Visual Basic® para Windows®; en versiones posteriores se han incorporado distintas tecnologías y rutinas que lo convierten en una de las opciones favoritas para desarrollar aplicaciones para los sistemas operativos de Microsoft. La programación en Visual Basic® se fundamenta en la selección y asignación de propiedades a objetos gráficos y en el control de eventos (presionar una tecla, seleccionar un objeto con el mouse, etc.) Los programas escritos en Visual Basic® son compilados a una versión ejecutable, y éstos dependen de rutinas externas enlazadas dinámicamente. Para el desarrollo del shell propuesto en este Trabajo de Grado se optó por usar el lenguaje Visual Basic® 6.0 en su versión corporativa en español, pues la versión más moderna, Visual Basic.Net®, tiene requerimientos de hardware que exceden la capacidad del computador disponible. Ya que los programas desarrollados en Visual Basic® dependen de rutinas externas, se optó por desarrollar un programa en Visual C++® 6.0 que facilita la instalación inicial del shell y el copiado de los directorios de trabajo y datos de ejemplo. Otros aspectos considerados al seleccionar estos lenguajes fueron su disponibilidad y requerimientos, además de la experiencia del programador. En la siguiente tabla se muestra la configuración parcial del computador disponible para este desarrollo y los requerimientos de los lenguajes aquí considerados. 59 Tipo de Recurso CPU Memoria RAM Espacio en Disco Duro Sistema Operativo Configuración del Computador disponible para el desarrollo Requerimientos de: Visual Basic 6.0 Visual C++ 6.0 Requerimientos de: Visual Basic.Net Visual C#.Net Pentium II® 450 MHz PentiumIII® (Recomendado) Celeron® 333 MHz Pentium® o superior 64 MB 32 MB 192 MB 15 GB 35-345 MB 500 MB – 2 GB Windows 98® Windows 95® o superior Windows 2000® o Windows XP® P Tabla 4.1. Configuración disponible y requerimientos de los lenguajes preseleccionados. Para implementar la ayuda en línea de las aplicaciones actuales para Windows®, se utilizan fundamentalmente dos formatos: archivos de tipo HTML (HyperText Markup Language) que se leen a través de los programas de navegación por Internet (browser), y archivos compilados a través del programa Microsoft Help Workshop® u otro compatible, de lectura a través del sistema de ayuda estándar de Windows®. Para el desarrollo del shell se ha preferido adoptar el sistema de ayuda estándar de Windows®, pues los archivos pueden ser escritos en procesadores de palabras que soporten el formato RTF (Rich Text Format), y esta forma de trabajo se traduce en importantes ventajas como facilidades de búsqueda, rapidez de carga y ejecución, completa compatibilidad con los lenguajes de programación seleccionados, y mínimos requerimientos de hardware, por lo que se obtiene toda la funcionalidad requerida en este caso. Se juzgó conveniente dotar al shell de una opción que permita vincular archivos de referencia con las conclusiones de los sistemas expertos. Tales archivos de referencia pueden servir para que los usuarios verifiquen el cumplimiento de las condiciones que sustentan los posibles diagnósticos y/o para conocer las acciones que se deben acometer tanto con fines diagnósticos, como correctivos. El formato seleccionado para los archivos de referencia es PDF (Portable Document Format), el cual fue diseñado por la empresa Adobe System Incorporated. Los archivos PDF 60 pueden ser leidos desde programas como el Acrobat Reader® de uso libre y gratuito, son poco dependientes del sistema operativo o de los tipos de letra instalados en él, la información se guarda en formato comprimido por lo que se optimiza el espacio de almacenamiento y pueden contener índices, vínculos dinámicos, etc. Además, este formato permite crear archivos de sólo lectura y/o de acceso restringido mediante una contraseña, igualmente se puede limitar el uso de funciones como imprimir, seleccionar, copiar, guardar, etc. En la actualidad el formato PDF es muy popular para la distribución de versiones electrónicas de documentos y libros. Los archivos en formato PDF pueden ser creados de diferentes maneras, una de ellas es a través del uso de programas que hacen la conversión desde archivos de impresión PostScrip®, otra posibilidad es la instalación de un controlador que se define como una impresora, quedando disponible para las diferentes aplicaciones y cuya salida son archivos en este formato. Adicionalmente, existen programas especialmente diseñados para crear estos archivos, los cuales, por lo general, resultan la alternativa más eficiente pues incorporan facilidades para definir las tablas de contenido, los enlaces y vínculos, etc. En lo concerniente al diseño del shell se procuró que los aspectos estéticos y operativos fueran similares a las aplicaciones más populares para el sistema operativo Windows®, de manera que su uso resultara lo más intuitivo posible y se redujera la necesidad de capacitación y adiestramiento para los usuarios. El entorno de trabajo se basa en ventanas, y la interfaz del usuario es predominantemente de documentos múltiples o MDI (Multi Document Interface), así, se trata de una ventana principal que sirve de marco a otras en su interior o ventanas hijas, con esto se logra un mejor control de las opciones simultáneamente activas de la aplicación. Ya que el shell debe permitir la implementación de sistemas expertos, y estos pueden contener información que representa un esfuerzo significativo en términos de horas-hombre, además de los aspectos de confidencialidad y exactitud de los datos, se optó por restringir el acceso a la aplicación a través de la identificación y control de los 61 usuarios, para ellos se incorporaron rutinas de definición de usuarios, cambio de contraseñas y control de acceso. Por tratarse de un shell que ha de permitir la implementación de sistemas expertos, y éstos tienen sus propios requerimientos, se incluyeron opciones para definir y configurar dichos sistemas, específicamente se crearon opciones que permiten: definir sistemas expertos, abrir o seleccionar el sistema con el cual se desea trabajar, cerrar el sistema activo, definir categorías y elementos de diferenciación, definir datos estadísticos, y definir los parámetros de cálculo e inferencia. El shell permite la definición y control de hasta 999 sistemas expertos para diagnóstico por cada instalación. Los sistemas definidos en el shell son independientes entre sí. Al analizar el tipo de problemas para los cuales se deben realizar los diagnósticos, se determinó que la forma más conveniente para la representación del conocimiento es a través de reglas de inferencia, pues se desean sistemas capaces de producir diagnósticos basados en relaciones de causa y efecto explícitamente definidas y no en relaciones detectadas en problemas similares. Adicionalmente, la capacidad de diagnóstico no debe verse afectada por la cantidad de problemas previamente resueltos. Se encontró que las reglas de inferencia debían referirse a probabilidades o posibilidad de ocurrencia, así mismo, se evidenció la necesidad de mecanismos que reduzcan la ocurrencia de diagnósticos carentes de sentido, para lo cual se adoptó una estructura de reglas que permite definir las características mínimas o esenciales para su aplicabilidad, y/o aquéllas que les son incompatibles. Al definir las reglas se pueden crear grupos de antecedentes con diferentes posibilidades de ocurrencia, y dentro de ellos se puede asignar mayor o menor importancia relativa a cada característica, síntoma o signo evaluado. Se incorporó una opción que permite evaluar la idoneidad de las reglas mediante el análisis de los casos resueltos. 62 Para establecer un diagnóstico se evalúan los antecedentes de las reglas, y si éstos se cumplen entonces se infiere que su consecuente debe ser cierto. Se estableció que la forma más conveniente de representar los antecedentes de las reglas sería a través del uso de variables y conclusiones. Las variables no debían limitarse al caso difuso, pues su definición resulta relativamente compleja y son poco adecuadas para expresar ciertas condiciones, por lo tanto se incorporaron opciones que permiten definir variables: difusas, lingüísticas discretas, definidas por serie de valores, y no difusas. Similarmente, se dispuso la incorporación de conclusiones tanto difusas como no difusas. Para resolver los problemas de diagnóstico se incorporó una opción en la cual se define cada problema como un caso, se especifican los hechos y datos conocidos, y se puede solicitar al sistema que establezca los posibles diagnósticos, o se puede intentar verificar una hipótesis. Para facilitar la obtención y registro de los datos que definen a los casos, se incorporó una opción que permite la definición de cuestionario. El shell dispone de un menú tipo pull-down o de alternativas descendentes para la selección de las opciones. Las opciones del shell se agrupan en cinco categorías: sistema, diagnósticos, reglas, variables, y ayuda. A continuación se muestran de forma jerárquica las opciones que conforman al shell. 63 Shell Control de Acceso Sistema Diagnósticos Reglas Variables Ayuda Abrir / Seleccionar Diagnosticar Definición Difusas Temas de Ayuda Cerrar cuestionarios Datos Históricos Lingüísticas Discretas Acerca del Shell Salir Conclusiones No Difusas Serie de Valores Definir Usuarios Conclusiones Difusas No Difusas Cambio de Contraseña Definir Sistemas Categorías Datos Estadísticos Parámetros de Inferencia Fig. 4.1. Esquema jerárquico con las opciones del shell. Cada una de las opciones que conforman el shell serán analizadas individualmente en las subsiguientes secciones de este capítulo, para cada una de ellas se indica el propósito, los elementos constitutivos, posibles valores y otras explicaciones. Los aspectos operativos del shell y sus opciones deben ser consultados en el manual del usuario. 4.2. Usuarios El acceso al sistema es controlado por usuario. A cada usuario se le asigna un perfil, que indica el tipo de actividades que puede realizar dentro del shell. Los perfiles existentes son: 64 • Administrador: Se refiere a los usuarios que planifican y definen los sistemas de diagnóstico que se deben implementar. Tiene privilegios suficientes para crear, modificar y/o eliminar cualquier tipo de información. • Líder de grupo: Son los usuarios que colaboran en determinadas áreas de investigación. Pueden crear y modificar información de los sistemas previamente definidos. • Usuario final: Son los usuarios autorizados para consultar los sistemas, pero no pueden directamente alterar su funcionamiento. Desde el ingreso del usuario al sistema, se verifica el perfil, y sólo aparecen habilitadas las opciones que corresponden al tipo de actividades para las que ha sido autorizado. Cada usuario se identifica por un código alfanumérico único, de hasta 8 dígitos de longitud, vinculado a una contraseña, del mismo tipo y largo. Cada usuario puede cambiar sólo su propia contraseña, independientemente de sus privilegios. No existen restricciones con respecto al número de usuarios asignados a un perfil. Crear y eliminar usuarios está restringido a los administradores. 4.3. Parámetros de Cálculo e Inferencia El shell utiliza una tabla de parámetros para cálculos e inferencias, cada sistema posee sus propios valores, y estos son fundamentales para su funcionamiento. Estos parámetros se refieren a dos aspectos diferentes, primero a un grupo de valores que controlan la activación de las reglas, y segundo a la forma de intersección que se usa para determinar la compatibilidad de valores difusos. 4.3.1. Valores para la Activación de las Reglas Se refiere a valores porcentuales que condicionan la evaluación y activación de las reglas. El umbral de activación se refiere al porcentaje mínimo de certeza o grado 65 de pertenencia que se debe alcanzar para ejecutar una regla o subconjunto de ella. Estos parámetros son: • Tolerancia al comparar datos: se refiere al margen de error admitido o precisión requerida al evaluar operadores relacionales (=, <, >, ≠, ≤, ≥). De forma general se recomienda asignar a este parámetro un valor entre 1 y 10%, aun cuando el rango de valores admitidos está entre 0 y 100%. Un porcentaje de tolerancia muy bajo puede ocasionar que se dejen de activar reglas por errores de precisión en la representación de los valores o por errores de cálculo, en tanto que valores muy altos devienen en la pérdida de sentido y propósito de las reglas, pues se ejecutarán independientemente de los valores suministrados. • Umbral de activación para características esenciales: Las características esenciales definidas en una regla son una exigencia para la satisfacción de sus premisas, en tal sentido se espera que la probabilidad de su ocurrencia sea muy alta, sin embargo, es preferible otorgar al sistema un margen de flexibilidad que le permita evaluar un mayor número de reglas y que sea el conjunto de la evidencia lo que determine los diagnósticos más probables. De forma general, se recomienda, fijar inicialmente un valor de alrededor del 75%, e ir incrementando este porcentaje en la medida que se comprueba la idoneidad de las reglas que lo conforman. Esta recomendación obedece a la posibilidad de que no todas las reglas estén definidas con una precisión similar. • Umbral de activación para características probables: Este valor establece el grado de pertenencia o certeza mínima que se debe alcanzar para considerar que una característica probable está presente. La definición de este parámetro depende de la naturaleza del sistema y del grado de convicción que tengan los autores sobre la exactitud de las reglas definidas, no obstante es preferible asignar valores intermedios (alrededor de 50%), pues se trata de 66 características que se clasificaron como probables, lo que indica que su presencia no es definitoria del diagnóstico, aunque no por ello se debe menospreciar la evidencia que ellas aportan. • Umbral de activación para características incompatibles: La sola presencia de una característica definida como incompatible (con la conclusión) ocasiona que la regla sea descartada de inmediato, por lo tanto se debe ser cuidadoso(a) al definir las características incompatibles. Se recomienda asignar a este parámetro un valor elevado, aunque los criterios expresados para los parámetros anteriores también se cumplen para éste. 4.3.2. Tipo de Intersección para Variables Difusas La intersección para variables difusas se utiliza en los procesos de inferencia. Los hechos o características que se definen a través de una etiqueta lingüística difusa generan un cierto grado de presencia en las etiquetas próximas, es decir, al seleccionar una etiqueta se le asigna el máximo grado de pertenencia posible (1), a las otras etiquetas de la variable, se le calcula el grado de pertenencia según la intersección que formen con la etiqueta originalmente seleccionada. El cálculo de las intersecciones es muy importante para el razonamiento aproximado, pues permite que las reglas se activen a partir de la presencia de características compatibles. El shell está dotado de 12 tipos o formas de intersección, 6 de las cuales son ajustables por medio de parámetros. En la siguiente tabla se muestran los tipos de intersección incorporados, donde a y b corresponden a los grados de pertenencia para dos etiquetas: 67 Fórmula Rango del Parámetro mín(a, b) N/A a+b 2 N/A Tipo de Intersección Zadeh (1965) Promedio ⎛a+b⎞ ⎜ ⎟ ⎝ 2 ⎠ Cuadrado del promedio 2 N/A Raíz cuadrada del promedio a+b 2 N/A Producto a.b N/A máx[0, (a + b − 1)] N/A a.b máx (a, b, α ) α ∈ (0,1) Suma restringida Dubois y Prade (1980) ( w w 1−mín⎡1, (1 − a ) + (1 − b) ⎢⎣ 1 Yager (1980) ⎡⎛ 1 ⎞ 1 + ⎢⎜ ⎟ ⎣⎢ ⎝ a ⎠ Dombi (1982) λ ⎛ 1 ⎞ + ⎜ ⎟ ⎝ b ⎠ ) 1/ w λ ⎤ ⎥ ⎦⎥ Frank (1979) ⎡ (s a − 1)( . s b − 1)⎤ log s ⎢1 + ⎥ s −1 ⎣ ⎦ Schweizer y Sklar (1961) máx 0, (a − ρ + b − ρ − 1) −1 / ρ a.b γ + (1 − γ )( . a + b − a.b ) Hamacher (1978) Tabla 4.2 [ w ∈ (0, ∞) ⎤ ⎥⎦ 1 λ λ ∈ (0, ∞) s ∈ (0, ∞) ] ρ ∈ (− ∞, ∞) γ ∈ (0, ∞) Tipos de intersección incorporadas en el shell para variables difusas. La selección del tipo de intersección depende en buena medida de la experiencia y requerimientos de quienes definan el sistema experto. En general, se pueden obtener resultados satisfactorios recurriendo al uso de las formas más simples de intersección como Zadeh o promedio. 68 4.4. Información Estadística de los Casos Cada problema de diagnóstico que se plantea dentro de un sistema constituye un caso, y el shell asigna un número consecutivo de control para cada uno de ellos. Es posible definir hasta 20 elementos estadísticos asociados a los casos. Un caso se considera activo hasta que sea eliminado, o hasta alcanzar un diagnóstico definitivo y se decida guardarlo como información histórica. La información requerida para fines estadísticos es de carácter opcional, y en esencia se trata de una pregunta de libre redacción. Cada interrogante podrá tener una longitud de hasta 20 dígitos, y sus respuestas de hasta 30 dígitos. La información estadística no incide directamente en el proceso de establecer el diagnóstico para un caso, y se mantiene mientras exista el caso, tanto en su etapa activa como histórica. El shell no impone restricciones con respecto al número de casos que pueden estar activos en un momento dado, aun cuando no se recomienda la acumulación de los mismos, pues esto dificulta su selección y mantenimiento. Los casos activos se alojan en archivos independientes de la información histórica. Esta información permite mejorar la definición de las reglas, pues se traduce en estadísticas que indican la frecuencia de aparición de las características y manifestaciones presentes en los casos. 4.5. Categorías y Elementos de Diferenciación Para cada sistema de diagnóstico se pueden definir hasta 2 elementos de diferenciación, cada uno de ellos puede estar conformado por hasta 32 categorías. El uso de estas categorías es opcional, y su finalidad es restringir la aplicabilidad de las reglas. Las categorías pueden ser simples o compuestas, es decir, una categoría puede abarcar a otras. Al plantear un caso que debe ser diagnosticado, sólo se pueden seleccionar las categorías simples, al momento de hacer las inferencias el shell verifica las restricciones de aplicación con base en los elementos de diferenciación y sus categorías. Por ejemplo para un sistema de diagnóstico aplicable a la medicina, se 69 pueden definir los elementos de diferenciación “Sexo” y “Edad”. El elemento de diferenciación “Sexo” puede estar conformado por las categorías “Masculino” y “Femenino”. Para el elemento de diferenciación “Edad”, se pueden definir las categorías “Neonato”, “Infante”, “Adolescente”, “Adulto”, “Anciano”, y una categoría adicional denominada “Edades extremas” que comprendería a “Neonato”, “Infante” y “Anciano”. 4.6. Variables El shell permite definir distintos tipos de variables, su selección depende fundamentalmente de los posibles valores que éstas deben asumir y de la precisión con la cual se conoce la información que éstas representan. Las variables en el shell se identifican por códigos alfanuméricos de 8 dígitos, de los cuales los dos últimos se asignan automáticamente durante su definición, así el código de las variables termina en las letras “VL” o “VP”. Los tipos de variables admitidas son: • • • • Difusas Lingüísticas discretas Serie de valores No difusas o Presente/Ausente o Numéricas libres o Numéricas acotadas o Alfanuméricas libre o Alfanuméricas acotadas 4.6.1. Variables Difusas Las variables difusas asumen valores en un intervalo de números reales. Estos valores se agrupan en etiquetas facilitando la representación de los conocimientos en forma de reglas. El grado de pertenencia queda determinado por la función que se utilice para definir a la variable. En el shell estas variables establecen relaciones a partir de comparaciones con las etiquetas que la caracterizan. 70 El shell dispone de una opción para el control de las variables lingüísticas difusas, la misma registra la siguiente información para cada variable: código y descripción de la variable, tipo de función de pertenencia, número de etiquetas, rango de valores (desde-hasta), y la descripción y los parámetros correspondientes a cada una de sus etiquetas. Cada variable lingüística difusa puede poseer hasta 9 etiquetas. Para registrar los hechos, los usuarios pueden expresar los valores de estas variables seleccionando la etiqueta apropiada o escribiendo directamente el valor, cuando éste se conozca. 4.6.2. Variables Lingüísticas Discretas Las variables lingüísticas discretas han sido incorporadas en el shell, para evitar la definición de intervalos de números reales que pueden resultar confusos en ciertos contextos, y para obviar la necesidad de buscar funciones matemáticas que produzcan aproximaciones satisfactorias, según el modelo propuesto. Para este tipo de variables se especifican directamente las etiquetas, sus grados de pertenencia, y un porcentaje de compatibilidad entre ellas. Para cada variable lingüística se puede definir entre 1 y 9 etiquetas. Definir el grado de compatibilidad entre etiquetas es opcional, y dicha compatibilidad puede ser asimétrica. Al definir reglas o al expresar los hechos la asignación de valores se hace tomando como referencia una de las etiquetas previamente definidas. 4.6.3. Variables Definidas por Serie de Valores Las variables definidas por serie de valores, se asocian a etiquetas únicas, para las cuales se definen rangos de valores reales. El grado de pertenencia para cada valor del intervalo se define directamente o se calcula por interpolación a partir de valores próximos. Para cada variable de este tipo se pueden definir hasta 100 puntos o segmentos que definen el grado de pertenencia para sus posibles valores. 71 La aplicabilidad de este tipo de variables es limitada, aunque resultan útiles para asignar determinados grados de pertenencia. Las comparaciones que se pueden establecer para este tipo de variables en la definición de reglas se refieren tanto a su propio valor como al grado de pertenencia asociado. Durante la definición de hechos, los usuarios suministran directamente los valores, a partir de ellos y de la definición de las variables, se establecen los grados de pertenencia que pueden ser utilizados para evaluar las reglas. 4.6.4. Variables No Difusas El shell permite la definición de variables que no están asociadas a grados de pertenencia. Su evaluación se refiere exclusivamente a los valores asumidos. Estas variables pueden ser: de tipo presente/ausente, numéricas acotadas, numéricas libres, alfanuméricas acotadas, y alfanuméricas libres. Todas ellas pueden almacenar valores de hasta 8 dígitos de longitud independientemente de la unidad o sistema de medición utilizado. 4.7. Funciones de Pertenencia Las funciones de pertenencia se utilizan para calcular la correspondencia entre los valores de las variables difusas y sus etiquetas lingüísticas. Por lo general, el nombre de la función de pertenencia está asociado a la forma del gráfico que se obtiene para cada etiqueta. El shell admite 11 tipos de funciones para definir variables difusas, las mismas son: Triangular, Trapezoidal, Campana de Gauss, Campana de Gauss combinada, Campana generalizada, Curva sigmoidal, Combinación sigmoidal, Diferencia sigmoidal, Curva en forma de S, Curva en forma de Z, y Curva PI (SZ). 72 4.7.1. Función de Pertenencia Triangular Este tipo de función es muy utilizada para representar conceptos aproximados, su comportamiento es fácilmente predecible, es decir, al definir los parámetros se puede anticipar el gráfico que se obtendrá y las áreas solapadas entre etiquetas. Utiliza 3 parámetros que definen un triángulo, la cúspide del mismo tiene grado de pertenencia igual a uno, y sus otros vértices tienen grado de pertenencia igual a cero. La fórmula general de esta función y su forma típica son: Fórmula general ⎧0 ⎪x − a ⎪ ⎪ μ = ⎨b − a ⎪c − x ⎪c − b ⎪0 ⎩ Forma típica cuando x ≤ a cuando a < x ≤ b cuando b < x ≤ c cuando c < x Fig. 4.2. Función de pertenencia: Triangular 4.7.2. Función de Pertenencia Trapezoidal Este tipo de función se puede considerar como una generalización de la función triangular, ampliándose sus posibilidades de uso al incorporar un cuarto elemento que permite definir un intervalo en el cual la etiqueta alcanza el grado de pertenencia máximo (1). Las ventajas de usar funciones de pertenencia triangular, también son aplicables para esta función. Los parámetros indican: el punto inicial en el cual el grado de pertenencia deja de ser cero (0), el comienzo de un intervalo con grado de pertenencia igual a uno (1), el final de dicho intervalo, y el punto en el cual el grado de pertenencia vuelve a ser igual a cero. Su fórmula general y forma típica son: 73 Fórmula general ⎧0 ⎪x − a ⎪ ⎪b − a ⎪ μ = ⎨1 ⎪d − x ⎪ ⎪d − c ⎪⎩0 Forma típica cuando x ≤ a cuando a < x ≤ b cuando b < x ≤ c cuando c < x ≤ d cuando d < x Fig. 4.3. Función de pertenencia: Trapezoidal 4.7.3. Función de Pertenencia Campana de Gauss Este tipo de función también se denomina exponencial, constituye una buena representación de procesos naturales que impliquen variaciones progresivas, se adapta con precisión a la noción de números difusos, aun cuando su uso no resulta intuitivo, y puede requerir varios ensayos hasta obtenerse los parámetros que produzcan el comportamiento esperado. Utiliza 2 parámetros, el primero define la pendiente y forma de la curva, el segundo el centro de la base. Su fórmula general y forma típica son: Forma típica Fórmula general μ =e ⎛ − ( X −b )2 ⎞ ⎜ ⎟ ⎜ 2.a 2 ⎟ ⎝ ⎠ Fig. 4.4. Función de pertenencia: Campana de Gauss 74 4.7.4. Función de Pertenencia Campana de Gauss Combinada Se trata de una variante de la función campana de Gauss. Utiliza 4 parámetros para definir por separado el lado izquierdo y lado derecho de la curva. Esto le permite adaptarse mejor al comportamiento de ciertos procesos, aun cuando dificulta su uso. El primer parámetro define la pendiente y forma del lado izquierdo de la curva, el segundo y el tercero de los parámetros definen un intervalo en el cual el grado de pertenencia es igual a 1, el cuarto parámetro define la pendiente y forma del lado derecho de la curva. La fórmula general y forma típica son: Fórmula general ⎧ ⎛⎜⎜ −( X −2b )2 ⎞⎟⎟ ⎪e ⎝ 2.a ⎠ ⎪ μ = ⎨1 ⎪ ⎛ −( X − d ) 2 ⎞ ⎪ ⎜⎜⎝ 2.c2 ⎟⎟⎠ ⎩e Forma típica cuando x≤b cuando b<x<d cuando x≥d Fig. 4.5. Función de pertenencia: Campana de Gauss combinada 4.7.5. Función de Pertenencia Campana Generalizada Esta función produce valores que se distribuyen a partir de un punto central, dando origen a figuras con forma de campana. Su implementación resulta relativamente sencilla, y sus parámetros permiten adaptar la función a un gran número de requerimientos. Utiliza 3 parámetros que determinan el ancho, la pendiente en el punto de inflexión y el centro respectivamente de la curva. Su fórmula general y forma típica son: 75 Fórmula general μ= Forma típica 1 ⎛ X −c⎞ 1+ ⎜ ⎟ ⎝ a ⎠ 2.b Fig. 4.6. Función de pertenencia: Campana generalizada 4.7.6. Función de Pertenencia Curva Sigmoidal Este tipo de función corresponde a variaciones (incrementos o decrementos) progresivos de valores no lineales. Se trata de variaciones del grado de pertenencia de un extremo al otro. El punto de inflexión del gráfico se ubica en el valor que alcanza el 50% del grado máximo de pertenencia. Esta función utiliza dos parámetros, el primero de ellos determina el sentido (+/-) y la pendiente de la curva en el punto de inflexión, el segundo determina el punto de inflexión cuando se alcanza el 50% del grado de pertenencia máximo (0,5). Su fórmula general y forma típica son: Fórmula general μ= Forma típica 1 1+ e − a ( X −b ) 76 Fig. 4.7. Función de pertenencia: Curva sigmoidal 4.7.7. Función de Pertenencia Combinación Sigmoidal Se trata de una función que se deriva del producto de dos curvas sigmoidales, que pueden definir una parte creciente y otra decreciente, una vez alcanzado el grado máximo de pertenencia de la función. Utiliza 4 parámetros, los dos primeros definen el lado izquierdo de la curva, los otros dos el lado derecho (ver función de pertenencia sigmoidal). Se debe tener especial cuidado al definir funciones de este tipo, para garantizar que la misma esté normalizada (ver definición II.16). Su fórmula general y forma típica son: Fórmula general μ= 1 1+ e − a ( X −b ) Forma típica × 1 1+ e −c ( X − d ) Fig. 4.8. Función de pertenencia: Combinación sigmoidal 4.7.8. Función de Pertenencia Diferencia Sigmoidal Esta función queda definida por la diferencia de dos curvas sigmoidales. Esta función guarda estrecha relación con la función combinación sigmoidal, la diferencia fundamental está dada por la posibilidad de definir la pendiente positiva y negativa de la curva, sólo utilizando parámetros positivos. Ver las características y limitaciones señaladas en la sección anterior (sección 4.7.7). A continuación está la fórmula general y forma típica de esta función: 77 Fórmula general μ= 1 1+ e − a ( X −b ) Forma típica − 1 1+ e −c ( X − d ) Fig. 4.9. Función de pertenencia: Diferencia sigmoidal 4.7.9. Función de Pertenencia Curva en Forma de S Este tipo de función se vincula a distribuciones acumulativas de probabilidad. Utiliza 2 parámetros, el primero indica el punto en cual el grado de pertenencia comienza a crecer (deja de ser cero), y se mantiene el crecimiento progresivo hasta alcanzar el segundo parámetro, a partir de dicho valor permanece constante e igual a uno. Su fórmula general y forma típica son: Fórmula general Forma típica cuando ⎧0 ⎪ 2 ⎪2⎛ x − a ⎞ cuando ⎪ ⎜⎝ b − a ⎟⎠ ⎪ μ=⎨ 2 ⎪1 − ⎛⎜ 2⎛ b − x ⎞ ⎞⎟ cuando ⎪ ⎜ ⎜⎝ b − a ⎟⎠ ⎟ ⎠ ⎪ ⎝ ⎪⎩1 cuando x≤a a<x≤ a+b 2 a+b < x≤b 2 x>b Fig. 4.10. Función de pertenencia: Curva en forma de S 78 4.7.10. Función de Pertenencia Curva en Forma de Z Esta función es similar a la “curva en forma de S” pero de sentido inverso. Utiliza dos parámetros, el primero indica el punto en cual el grado de pertenencia comienza a decrecer (deja de ser uno), y se mantiene disminuyendo, progresivamente, hasta alcanzar el segundo parámetro, a partir de dicho valor, permanece constante e igual a cero. Su fórmula general y forma típica son: Fórmula general ⎧1 ⎪ 2 ⎪1 − 2⎛ x − a ⎞ ⎜ ⎟ ⎪⎪ ⎝b−a ⎠ μ=⎨ 2 ⎪ ⎛b−x⎞ ⎪2⎜⎝ b − a ⎟⎠ ⎪ ⎪⎩0 Forma típica cuando x ≤ a cuando a < x ≤ a+b 2 a+b < x≤b 2 cuando x > b cuando Fig. 4.11. Función de pertenencia: Curva en forma de Z 4.7.11. Función de Pertenencia Curva PI (SZ) Esta función surge de la combinación de una curva en forma “S” y de otra en forma de “Z”, lo cual proporciona variaciones suaves e independientes para ambos lados de la gráfica. Su uso es frecuente para representar valores difusos, en general permite plasmar los conceptos de forma bastante precisa, y su uso resulta práctico e intuitivo. Se define a través de 4 parámetros, el primero indica el punto en cual el grado de pertenencia comienza a crecer (deja de ser cero), y se mantiene el crecimiento progresivo hasta alcanzar el segundo parámetro, a partir de dicho valor el grado de pertenencia es máximo (igual a uno), hasta el punto especificado por el tercer parámetro, a partir de allí el grado de pertenencia comienza a decrecer y se mantiene 79 disminuyendo, progresivamente, hasta alcanzar el cuarto parámetro, para luego hacerse constante e igual a cero. Su fórmula general y forma típica son: Fórmula general ⎧0 ⎪ 2 ⎪2⎛ x − a ⎞ ⎪ ⎜⎝ b − a ⎟⎠ ⎪ ⎪ ⎛ ⎛ b − x ⎞2 ⎞ ⎟ ⎟⎟ ⎪1 − ⎜⎜ 2⎜ ⎪ ⎝ ⎝b−a⎠ ⎠ ⎪ μ = ⎨1 ⎪ 2 ⎪1 − 2⎛⎜ x − c ⎞⎟ ⎪ ⎝d −c ⎠ ⎪ 2 ⎪ ⎛d −x⎞ 2 ⎪ ⎜ d −c⎟ ⎠ ⎪ ⎝ ⎪0 ⎩ Forma típica cuando x ≤ a cuando a < x ≤ cuando a+b 2 a+b < x≤b 2 cuando b < x ≤ c cuando c < x ≤ c+d 2 c+d < x≤b 2 cuando x > d cuando Fig. 4.12. Función de pertenencia: Curva PI (S.Z) 4.8. Modificadores Difusos El uso de modificadores o prefijos (hedges) en los sistemas difusos, se refiere a la definición de elementos lingüísticos que alteran el grado de pertenencia de la variable difusa a su correspondiente conjunto. Ejemplo de estos prefijos son: (“algo”, “muy”, “bastante”, “extremadamente”, etc.). El uso de estos prefijos, es similar al empleo de adjetivos y adverbios en oraciones de idiomas como el español o el inglés. El Prof. Lotfi Zadeh, definió el prefijo “muy” (“very”) [Zadeh, et al., 1975], para intensificar el valor de una variable, modificando su grado de pertenencia, que sería igual al cuadrado del valor original. Similarmente consideró el Prof. Zadeh, que el prefijo “algo” (“somewhat”), que reduce la intensidad del concepto expresado debía ser igual a la raíz cuadrada del valor original. 80 Teóricamente no existe restricción en cuanto al número de prefijos que se pueden utilizar para modificar el valor de una variable lingüística. Sin embargo el orden y cantidad de prefijos utilizados puede hacer variar significativamente el resultado de su evaluación. El uso de modificadores difusos puede dar origen a situaciones como la siguiente: Sea A={Bajo, Promedio, Alto} un conjunto difuso que define la estatura de una persona, y B={Algo, Muy} los posibles prefijos definidos. Podría decirse que alguien es “Muy Muy Alto”, en cambio no resulta tan claro definir a otra persona como “Algo Algo Promedio”, aun cuando en ambos casos sean correctos los cálculos que de esas expresiones se deriven. Para evitar situaciones como ésas y en aras de reducir la imprecisión asociada a los conceptos y sus posibles interpretaciones, se optó por no incorporar el uso de modificadores en el shell desarrollado. Se consideró preferible que cada variable lingüística tenga explícitamente definidos sus posibles valores, esto debe ser tomado en cuenta al momento de definir las variables y sus etiquetas. 4.9. Tipos de Conclusión Los diagnósticos que pueden obtenerse de los sistemas controlados por el shell se restringen a las conclusiones en ellos definidas. Las conclusiones sirven para expresar el consecuente de las reglas, al mismo tiempo que pueden formar parte de sus antecedentes, generándose así conclusiones conexas, dependientes o excluyentes. Cada conclusión está identificada por un código único alfanumérico de 8 dígitos de largo, de los cuales los dos últimos son fijos y corresponden a las letras “CN”. Cada conclusión posee una descripción de hasta 30 dígitos de longitud. Dos conclusiones cualesquiera no pueden poseer una misma descripción. Esta restricción no se aplica entre variables y conclusiones, en ese caso la diferenciación se realiza a partir de las letras finales de sus códigos (“VL” y “CN” respectivamente). 81 La definición de conclusiones es un paso previo al registro de reglas que hagan referencia a las mismas. En el shell es posible definir conclusiones de dos tipos: difusas y no difusas, ambas pueden coexistir en un mismo sistema, y hasta definir un mismo diagnóstico. La creación y control de conclusiones se realiza por sendas opciones disponibles desde el menú de la aplicación. 4.9.1. Conclusiones No Difusas Para definir una conclusión no difusa sólo se requiere asignar un código y una descripción. Las conclusiones directas sólo pueden asumir los valores “Presente” o “Ausente” e implican evaluaciones simples e independientes de las reglas que las definen. Una vez alcanzado el final del proceso de inferencia se selecciona cada posible conclusión a partir de la regla que presente mayor grado de evidencia o posibilidad de ocurrencia. Cuando más de una regla o grupo de evidencias compartan la máxima posibilidad de ocurrencia para una misma conclusión, el criterio de selección se rige por el orden de ocurrencia. 4.9.2. Conclusiones Difusas Este tipo de conclusiones sólo es posible definirlo para variables lingüísticas difusas, previamente registradas. Las mismas conservan la descripción original de la variable difusa, y los seis primeros dígitos de su código. Para cada conclusión se establece el tipo de inferencia que se utilizará (Mamdani o Sugeno), así como la forma de precisar sus salidas, esto permite diseñar sistemas expertos que utilicen simultáneamente ambas formas de inferencia. Estas conclusiones son especialmente útiles para diagnósticos que pueden asumir diferentes valores referidos a un mismo concepto, enfermedad o problema. El espectro de posibles valores para estas conclusiones lo definen las etiquetas de las variables difusas asociadas. Cuando los consecuentes de varias reglas se refieren a una misma 82 conclusión difusa con diferentes valores, la conclusión definitiva se obtiene combinando todas esas conclusiones parciales y sus respectivas evidencias. 4.10. Inferencia Difusa Cuando el consecuente de una regla corresponde a una conclusión difusa, se está indicando que esa regla debe ser evaluada aplicando el método de inferencia seleccionado para la conclusión. El shell desarrollado incorpora dos métodos alternos para el proceso de inferencia aplicable a las conclusiones difusas, esos métodos se conocen por los apellidos de sus autores, ellos son: Mamdani y Sugeno. De manera general estos procesos se desarrollan en cuatro pasos: 1. El primer paso es difuminar (fuzzifying) las entradas o calcular valores difusos para las entradas precisas, lo que implica determinar su grado de pertenencia a las etiquetas de las variables lingüísticas. 2. El segundo paso es evaluar las reglas, esto comprende la verificación de los antecedentes de las reglas, la aplicación de los operadores difusos y realizar las implicaciones correspondientes para determinar consecuentes a partir de los antecedentes. 3. El tercer paso es agregar las salidas de las reglas activadas (Aggregation), aquí se combinan las conclusiones parciales o salidas generadas durante la etapa previa del proceso. 4. El cuarto paso es precisar las salidas agregadas (defuzzification), esto consiste en calcular un valor específico y representativo de las conclusiones parciales. 4.10.1. Inferencia Difusa Tipo Mamdani Este método de inferencia (ver definición II.29) se aplica a la evaluación de reglas con conclusiones difusas. Cada conclusión puede tomar el valor de una determinada etiqueta de la variable, así su salida se corresponde con los valores de la 83 etiqueta hasta el grado de pertenencia alcanzado según la evaluación de los antecedentes. La agregación de las salidas para este método, consiste en la unión de todas las etiquetas referidas a una misma conclusión tomadas con su mayor grado de pertenencia. Las salidas agregadas sirven para calcular la salida precisa de la conclusión, para ello se aplica una de las cinco fórmulas incorporadas en el shell (ver sección 4.11). En la siguiente figura se ilustran los pasos o etapas del proceso de inferencia según el método de Mamdani. Fig. 4.13. Pasos del método de inferencia de Mamdani. 4.10.2. Inferencia Difusa Tipo Sugeno El método de Sugeno o método de inferencia de Takagi-Sugeno-Kang (ver definición II.30) es una variante del método de Mamdani, que simplifica el proceso al definir las salidas de las reglas como una función de sus antecedentes. En el caso específico del shell desarrollado, las salidas serán valores constantes de las variables (singletons) definidos por los usuarios. La agregación de las salidas para este método consiste en la unión o combinación de los valores especificados como consecuentes de las reglas activadas, luego se precisa el valor de la conclusión determinando su promedio ponderado (ver sección 4.11) según el grado de pertenencia correspondiente a cada salida o conclusión parcial. En la siguiente figura se ilustran los pasos o etapas del proceso de inferencia según el método de Sugeno. 84 Fig. 4.14. Pasos del método de inferencia de Sugeno. 4.11. Formas de Precisar las Salidas Difusas Como se ha expuesto en la sección 4.10, la última etapa del proceso de inferencia difusa está destinada a generar resultados precisos y representativos de las conclusiones parciales que se pudiesen haber inferido. Las conclusiones parciales pueden contener cierto grado de ambigüedad, por lo que las salidas precisas determinan las conclusiones según su posibilidad de ocurrencia a partir de la evidencia suministrada. En el shell se han incorporado seis técnicas para precisar las salidas difusas, de las cuales cinco son aplicables con el método de Mamdani, y una con el método de Sugeno. Las formas incorporadas para precisar las salidas difusas son: • • • • • • Centro de Gravedad (CoG) Centro de las Sumas (CoS) Primer Máximo (FoM) Último Máximo (LoM) Medio Máximo (MoM) Promedio Ponderado 4.11.1. Centro de Gravedad Esta forma de precisar las salidas difusas se aplica con el método de Mamdani, también se le denomina técnica del centroide, y se suele identificar por sus siglas en inglés (CoG, Center of Gravity). La técnica consiste en determinar el punto donde una línea vertical puede dividir a la región difusa determinada por las salidas agregadas de 85 las reglas, en dos de igual masa, es decir, el centro de gravedad. Esta técnica es ampliamente utilizada por producir salidas muy representativas de las conclusiones parciales. El cálculo de las salidas precisas se determina a partir de la siguiente fórmula: u= ∫ u.μ (u )du ∫ u.μ (u )du u u u Dada la dificultad de programar las rutinas necesarias para resolver esas integrales, se suele recurrir a la aproximación que se obtiene al calcular el centro de gravedad empleando la fórmula: l u= ∑u k =1 l k .μ u (u k ) ∑μ k =1 , donde l es la cantidad de reglas activadas para esa conclusión. u (u k ) 4.11.2. Centro de las Sumas Esta técnica suele identificarse en la literatura, por sus siglas en inglés (CoS, Center of Sums). Se aplica con el método de Mamdani. Este método es similar al del centroide, pero su implementación puede resultar mucho más eficiente ya que no se descartan las áreas solapadas al evaluar las salidas agregadas, por lo que es posible que estas se consideren más de una vez. Su fórmula para valores continuos es: n u= ∫ u.∑ μui (u ).du u i =1 n ∫ ∑ μu (u ).du u , donde n es la cantidad de reglas activadas para esa conclusión. i i =1 En caso de valores discretos o por la dificultad de calcular las integrales, se puede aplicar la fórmula: l u= n ∑ u k .∑ ui (u k ) k =1 l i =1 , donde l es la cantidad de reglas activadas para esa conclusión. n ∑∑ μu (u k =1 i =1 i k ) 86 4.11.3. Primer Máximo Esta forma de precisar las salidas se basa en seleccionar el menor valor en el dominio del universo de discurso U, que alcance el máximo grado de pertenencia en el conjunto difuso. Sus siglas en inglés son (FoM, First of Maxima). Se aplica con el método de Mamdani. La fórmula aplicable para esta técnica es: u = mín{u ∈U μ u (u) = máxU} 4.11.4. Último Máximo La aplicación de esta técnica corresponde al método de Mamdani, y consiste en seleccionar el mayor valor en el dominio del universo de discurso U, que alcance el máximo grado de pertenencia en el conjunto difuso. La técnica también es conocida por sus siglas en inglés (LoM, Last of Maxima). Su fórmula es: u = máx{u ∈ U μ u (u) = máxU} 4.11.5. Medio Máximo Esta forma de precisar las salidas corresponde a un promedio de las dos técnicas anteriores (FoM, LoM). El resultado se calcula al promediar los valores extremos del dominio del universo de discurso U, que alcancen grados de pertenencia máximo, en el conjunto difuso. La técnica es aplicable para los procesos de inferencia tipo Mamdani. Sus siglas en inglés son el acrónimo de (Middle of Maxima). La fórmula aplicable para esta técnica es: u= mín{u ∈ U μ u (u ) = máxU } + máx{u ∈ U μ u (u ) = máxU } 2 4.11.6. Promedio Ponderado El promedio ponderado es equivalente a calcular el centro de gravedad para valores discretos. En el shell desarrollado, esta técnica constituye la forma de precisar 87 las salidas para conclusiones de tipo Sugeno. En idioma inglés esta técnica se denomina Weighted Average (WA). Los cálculos se realizan aplicando la fórmula: n u= ∑ μu .u i =1 n i ∑ μu i =1 i , donde n es la cantidad de reglas activadas para la conclusión. i 4.12. Reglas de Inferencia En los sistemas expertos se acostumbra utilizar estructuras condicionales para representar los conocimientos, estas estructuras se denominan reglas de producción, reglas de inferencia o simplemente reglas si el contexto así lo permite. Cuando en las reglas los antecedentes, los consecuentes, o ambas partes, contienen variables difusas se habla de reglas difusas (ver definición II.5). En el shell desarrollado se dispone de una opción para la definición y control de las reglas. Cada regla permite alcanzar una única conclusión. Es posible definir hasta 99 reglas para una misma conclusión, aun cuando se espera que cada conclusión sea definida empleando una sola regla. El consecuente de las reglas puede referirse a conclusiones difusas y no difusas (ver sección 4.9), en tanto que sus antecedentes se constituyen de variables de cualquiera de los tipos incorporados (ver sección 4.6), de otras conclusiones y/o de combinaciones de estos elementos. 4.12.1. Información Requerida para Definir Reglas La definición de una regla requiere de la siguiente información: una conclusión y un valor relacionado que conforman el consecuente, además de un conjunto de características, valores y relaciones que definen los antecedentes de la regla. Adicionalmente el shell puede utilizar los siguientes datos para completar la definición de las reglas: 88 • Un código alfanumérico de 8 dígitos, de los cuales los 6 primeros corresponden a los del código de la conclusión, y los 2 subsiguientes sirven de correlativo numérico para diferenciar las reglas referidas a una misma conclusión. • El nombre del autor o responsable de definir la regla. El shell por defecto utiliza el nombre del usuario activo, sin embargo es posible modificar este campo y colocar otro valor cuya longitud no supere los 30 dígitos. • La fecha de última actualización, es un campo que asigna automáticamente el shell, y se establece a partir del reloj interno del computador. • Hasta dos campos de restricción según las categorías y elementos de diferenciación definidos para el sistema en uso. El uso de estos campos es opcional y sólo se deben emplear cuando las reglas son aplicables a determinadas categorías. Las restricciones aquí especificadas son independientes entre sí. Para cada elemento de diferenciación que se desee restringir se puede seleccionar una categoría simple o compuesta (ver sección 4.5). • Las características, los operadores relacionales, los elementos de comparación, la importancia relativa y la posibilidad de ocurrencia de los grupos de antecedentes definidos. 4.12.2. Antecedentes de las Reglas El objetivo de definir reglas en los sistemas implementados en el shell, es establecer posibles diagnósticos mediante la verificación de coincidencias entre síntomas, signos, o características esperadas y encontradas. Las características a las que se puede hacer referencia en un sistema deben estar previamente definidas en forma de variables y/o de conclusiones. Cada característica usada como antecedente en una regla va acompañada de una relación y de un valor, que en conjunto definen la condición que debe ser evaluada. Dependiendo de la forma usada para definir las características, varían sus posibles relaciones y valores. En la siguiente tabla se 89 muestra un resumen de las características según la forma en que fueron definidas, y el tipo de evaluaciones soportadas. Forma en cual se definió la característica Conclusión Variable difusa Variable lingüística discreta Variable por serie de valores Posibles relaciones de comparación ESTÁ ES ES > ES < ES >= ES <= NO ES ES ES > ES < ES >= ES <= NO ES VALOR = VALOR > VALOR < VALOR >= VALOR <= VALOR <> Posibles valores de referencia PRESENTE AUSENTE Propósito de la evaluación Verificar la presencia de la característica. Comparar el valor de la Las etiquetas definidas variable vs. el valor de para la variable referencia. Comparar el valor de la Las etiquetas definidas variable vs. el valor de para la variable referencia. Números reales dentro Comparar el valor de la del intervalo para el variable vs. el valor de cual se definió a la referencia. variable. PERT. = PERT. > Comparar el grado de Números reales PERT. < pertenencia de la pertenecientes al variable vs. el valor de PERT. >= intervalo [0,1] PERT. <= referencia. PERT. <> VALOR = VALOR > Valores alfanuméricos Comparar el valor de la libres o restringidos VALOR < Variable no difusa variable vs. el valor de VALOR >= según la definición de referencia. VALOR <= la variable VALOR <> Tabla 4.3. Tipos de relaciones y valores, disponibles para evaluar características. Las características que pueden formar parte de los antecedentes de las reglas han sido clasificadas en tres categorías: esenciales, probables, e incompatibles. Cada regla puede contener hasta 32600 características distribuidas libremente en las tres categorías señaladas. 90 Las características esenciales son aquéllas que siempre están presentes para un determinado tipo de problema, es decir, se espera que aparezcan en el conjunto de hechos para todos los casos cuyo diagnóstico definitivo corresponda a la referida regla, su probabilidad de ocurrencia se estima en 100%. Las características probables son las de uso más frecuente, permiten conformar grupos de antecedentes que reflejan la relación causa-efecto. Los grupos se evalúan individualmente luego de verificarse las características no compatibles y las esenciales, cada característica probable contribuye a determinar la validez de la conclusión. Las características no compatibles se evalúan individualmente y la presencia de cualquiera de ellas en un problema de diagnóstico indica que no se continúe evaluando la regla, pues su conclusión carece de sentido en ese caso. La probabilidad de ocurrencia para las características no compatibles es nula; su incorporación resulta útil para el establecimiento de diagnósticos diferenciales y para reducir el número de reglas que se activan durante los procesos de consulta. Los diagnósticos diferenciales se requieren cuando los síntomas, signos y características son comunes a dos o más diagnósticos y sólo unos pocos elementos aportan evidencia que permiten su identificación. En la categoría de características probables se considera que se está definiendo un nuevo grupo al seleccionar el operador “O” para una característica, y este se mantiene hasta la aparición de otro operador del mismo tipo. Las características de un mismo grupo se vinculan por el operador “Y”, aun cuando este no se haya seleccionado explícitamente. Al finalizar de definir las reglas se completan los operadores requeridos y se eliminan los innecesarios. Los posibles valores para el campo operador son: “Y”, “O”, y Nulo. A cada grupo de características probables se le puede asignar una posibilidad de ocurrencia que representa el nivel de certeza que se tiene acerca del diagnóstico en función de la coincidencia con los hechos. En los grupos es posible asignar un porcentaje de importancia relativa a las características, esto permite valorar el nivel de 91 evidencia que aporta cada característica en la determinación del diagnóstico. El total de importancia relativa asignado en un grupo no puede ser superior a 100%, la importancia relativa no asignada se distribuye equitativamente entre las características del grupo para las que no se especificó este parámetro. 4.12.3. Conclusiones de las Reglas Cuando se satisfacen las condiciones que constituyen los antecedentes de una regla, se concluye que el consecuente de la misma es cierto; dicho consecuente es el diagnóstico, definido en forma de conclusión más un valor que se asigna a la misma. Los valores admitidos para las conclusiones no difusas son: “Presente” y “Ausente”, para las conclusiones difusas de tipo Mamdani los posibles valores son las etiquetas definidas para la variable lingüística asociada, en tanto que, para las conclusiones difusas tipo Sugeno, los posibles valores son números reales pertenecientes al intervalo para el cual se definió la variable difusa asociada. 4.13. Cuestionarios Los cuestionarios son listas de características que se definen para facilitar el registro de los hechos durante la fase de diagnóstico y pueden servir de guía con respecto al tipo de revisión y exámenes que se deben practicar para lograr determinado tipo de diagnóstico. Cada sistema puede contener hasta 9999 cuestionarios. Los cuestionarios se componen de los siguientes elementos: • Un código numérico consecutivo de 4 dígitos de longitud. • Una definición o descripción que puede contener hasta 30 caracteres alfanuméricos. • El nombre del autor del cuestionario. El shell asigna inicialmente el nombre del usuario pero esta información puede ser cambiada para registrar cualquier valor alfanumérico de hasta 30 dígitos. 92 • La fecha de última actualización, este dato es asignado automáticamente por el shell a partir del reloj interno del computador. • El conjunto de características que lo integran. Un cuestionario puede contener hasta 32600 características, y estas mantienen el orden en el cual fueron definidas. El uso de cuestionarios es opcional, los usuarios pueden seleccionar tantos de ellos como se requieran para cada consulta, las características comunes de los cuestionarios seleccionados no aparecen duplicadas, es decir, sólo se incluyen una vez en la lista de hechos y datos durante el registro del caso en los procesos de diagnóstico. 4.14. Diagnosticar El shell incorpora una opción para realizar los diagnósticos, en ella los usuarios registran los hechos o datos correspondientes al caso. A cada nuevo planteamiento o problema se le asigna un número de caso, el usuario debe suministrar la información del sujeto y de los hechos que caracterizan al problema, esta información se refiere a: • Una descripción o identificación del sujeto para el cual se requiere el diagnóstico. Este campo puede contener valores alfanuméricos de hasta 30 dígitos de longitud. • Una selección de los cuestionarios que se deben aplicar para facilitar la incorporación de los síntomas, signos o características correspondientes al problema. Cada cuestionario se selecciona de una lista desplegable, los ya seleccionados aparecen marcados con una flecha “Å”. • Por cada elemento de diferenciación definido en el sistema se puede seleccionar la categoría a la cual pertenece el sujeto. Aquí sólo se permite la selección de categorías simples, es decir, de aquéllas que no incluyen a otras. 93 • La información estadística que se haya definido. Por cada sistema se pueden definir hasta 20 datos que se consideran de utilidad para fines estadísticos posteriores. • El conjunto de características, síntomas, y signos identificados o conocidos del caso, sus relaciones y valores. Del recuadro de hechos y datos sólo se consideran para fines diagnósticos aquellas características provistas de sus respectivas relaciones y valores. Cada síntoma, signo o característica se incorpora al sistema a través de las conclusiones y variables definidas en el sistema. En la siguiente tabla se muestra un resumen del tipo de valores y relaciones permitidas para registrar los hechos en un problema de diagnóstico: Tipo de característica Posibles relaciones Posibles valores PRESENTE Conclusión ESTÁ AUSENTE ES Las etiquetas definidas para la variable Variable difusa Números reales dentro del intervalo para VALOR = el cual se definió a la variable. Variable lingüística discreta ES Las etiquetas definidas para la variable Números reales dentro del intervalo para Variable por serie de valores VALOR = el cual se definió a la variable. Valores alfanuméricos libres o VALOR = Variable no difusa restringidos según la definición de la ESTÁ variable Tabla 4.4. Tipos de relaciones y valores, disponibles para registrar los hechos. La lista de hechos y datos puede contener hasta 32600 ítems, cada uno conformado por una identificación (código y descripción), una relación, y un valor. Cuando se utilizan cuestionarios, el usuario debe seleccionar la relación y el valor que complete la información disponible. Para incorporar nuevos hechos se selecciona la variable o conclusión apropiada con su respectiva relación y valor. Cuando no se puede establecer el vínculo característica-relación-valor, el sistema hace caso de esos datos. 94 Una vez ingresada la información que define al caso se puede solicitar al sistema que realice el diagnóstico o se puede intentar verificar una hipótesis, se pueden realizar modificaciones y solicitar nuevas respuestas. Los casos registrados en un sistema se mantienen activos hasta que el usuario decida eliminarlo o asignarle el diagnóstico definitivo y convertirlo en un caso histórico. Si al solicitar un diagnóstico el sistema no encuentra coincidencias y compatibilidad entre los datos del caso y la información contenida en las bases de conocimientos, se informará que no fue posible encontrar un diagnóstico y se sugerirá el ingreso de información adicional y/o el ajuste de los parámetros empleados. Las conclusiones encontradas al evaluar un caso se muestran en una tabla ordenadas según sus posibilidades de ocurrencia, que son factores acumulativos de certidumbre para cada diagnóstico, en cada regla se considera el producto de la importancia relativa de las características coincidentes por la posibilidad de ocurrencia del diagnóstico. Así los diagnósticos aparecen en el orden preferencial en que deben ser considerados, pero no se debe interpretar ese valor como la probabilidad que se trate del diagnóstico correcto. Para los diagnósticos que surgen de conclusiones difusas agregadas se pueden visualizar las conclusiones intermedias. Para cada diagnóstico se muestra un nivel de inferencia, este valor indica el número máximo de reglas que se encadenaron para su inferencia. Cada vez que la conclusión de una regla implica la incorporación de otra por formar parte de sus antecedentes se incrementa en 1 el nivel de inferencia. Los diagnósticos con nivel de inferencia igual a 1 son producto de la evaluación directa de una regla. A medida que aumenta el nivel de inferencia asociado a un diagnóstico se debe tener menor confianza en el mismo, pues es producto de sucesivos procesos de inferencia que pueden incorporar y acumular errores. 95 Para cada diagnóstico se muestra la regla que permitió su inferencia con mayor grado de certeza, y de esta el grupo probabilístico con mayor posibilidad de ocurrencia, el porcentaje de satisfacción alcanzado al comparar las características del caso con las de la regla, el código de la conclusión alcanzada y un enlace al archivo de referencia vinculado a ella que muestra un archivo en formato PDF. El proceso de diagnóstico en el shell se realiza de la siguiente forma: 1. El usuario registra los hechos y datos del caso, proporciona una identificación y selecciona las categorías correspondientes, luego, utiliza las variables y conclusiones para representar los signos, síntomas o características conocidas del problema. 2. Se crean archivos temporales para registrar las reglas a aplicar, los hechos y las conclusiones o posibles diagnósticos. 3. Se leen los parámetros de cálculo e inferencia que serán usados al comparar valores, y se establece la forma de intersección para variables difusas. 4. Si la opción seleccionada es la de diagnosticar, se buscan todas las reglas aplicables según las categorías y elementos de diferenciación compatibles con el caso. Si la opción seleccionada es la verificar una hipótesis, sólo se buscan las reglas cuyo consecuente coincide con la hipótesis o aquellas que pudieron dar origen a la misma. Todas las reglas aquí seleccionadas son copiadas a un archivo temporal de reglas a aplicar o evaluar. 5. Se selecciona la próxima regla que debe ser evaluada. 6. Para las características probables de la regla, se distribuye equitativamente la importancia relativa no asignada. 7. Se selecciona la próxima característica que debe ser evaluada de la regla (una variable o una conclusión) y se consulta en la base de datos la información que la define, es decir, su tipo, cantidad de etiquetas y rango de valores. 8. Si la característica que está evaluando es una variable definida por una serie de valores, se calcula su grado de pertenencia. 96 9. Si la característica que está evaluando es una variable difusa y no se ha seleccionado una etiqueta, sino que se ha suministrado un valor, se buscan las etiquetas correspondientes. 10. Si la característica que está evaluando es una variable, se buscan las etiquetas compatibles. En el caso de las variables difusas, se aplica la fórmula de intersección definida en la tabla de parámetros de cálculo e inferencia. Para las variables lingüísticas discretas, se lee tabla de compatibilidad asociada. 11. Se selecciona del archivo temporal el próximo hecho y se compara con la característica que se está evaluando de la regla. 12. Si se cumplen las condiciones establecidas para la característica en la regla y se trata de una característica definida como incompatible, entonces se descarta la evaluación de dicha regla (ir a paso 18). 13. Si se cumplen las condiciones establecidas para la característica en la regla y se trata de una característica definida como esencial, entonces se acumula la evidencia del hallazgo y se continúa evaluando los hechos (paso 15). 14. Si se cumplen las condiciones establecidas para la característica en la regla y se trata de una característica definida como probable, entonces se acumula la evidencia del hallazgo según la importancia relativa de la característica y el grado de posibilidad asignado a su grupo. 15. Si existen más hechos por evaluar para la característica actual, se continúa con el próximo (paso 11). 16. Si faltan características por evaluar de la regla actual, se selecciona la próxima (paso 7). 17. Cuando se ha terminado de evaluar la regla actual, se verifica si existe suficiente evidencia para sustentar la conclusión, de ser así, se incorpora la conclusión como un nuevo hecho en el caso, y/o se actualiza el archivo de posibles diagnósticos y el nivel de inferencia para la conclusión. 18. Si faltan reglas por evaluar o existen nuevos hechos para el caso, entonces se selecciona la próxima regla que debe ser evaluada (paso 5). 97 19. Una vez establecidos los posibles diagnósticos, se buscan las conclusiones difusas relacionadas entre sí, y se aplica el método de Mamdani o Sugeno según corresponda para buscar una conclusión definitiva y representativa de todas ellas, esto último se logra aplicando la forma de agregación y de precisar las salidas que fueron especificadas en la definición de la conclusión. 20. Los posibles diagnósticos o conclusiones se muestran ordenados en una tabla según su posibilidad de ocurrencia. Las conclusiones difusas agregadas se pueden visualizar junto a las conclusiones intermedias que le dieron origen. El proceso de diagnóstico que se acaba de describir está representado gráficamente en el siguiente diagrama de flujo (ver Fig. 4.15 en la siguiente página). 98 PROCESO DE DIAGNÓSTICO EN EL SHELL Diagrama de Flujo Comienzo A Base de Datos El usuario registra los datos y hechos del caso Hechos Copia a archivos temporales los datos y hechos inciales Arch. Temporal Hechos Selecciona para evaluar: próximo hecho o hecho compatible Compara: antecedente de la regla vs hecho seleccionado D Base de Datos Lee parámetros de cálculo e inferencia SI Parámetros de Cálculo e Inferencia ¿cumple condiciones y es incompatible? NO Base de Datos Selecciona reglas aplicables según categorías y elementos de diferenciación ¿cumple condiciones y es esencial? Reglas SI NO C Arch. Temporal Selecciona regla para su evaluación ¿cumple condiciones y es probable? Reglas a aplicar Acumula evidencia SI NO B Selecciona antecedente de la regla para su evaluación ¿existen más hechos compatibles? SI A NO B NO Determina importancia relativa no asignada para características probables ¿ha finalizado evaluación de la regla? SI Lee información adicional de la característica (tipo, desde, hasta) Base de Datos ¿se trata de una nueva conclusión? Variables y Conclusiones SI Incorpora nuevos hechos en el sistema NO ¿Es una variable de tipo serie? SI Calcula grado de pertenencia NO ¿Es una variable difusa y se tiene su valor? C SI ¿faltan reglas por evaluar o hay nuevos hechos? D NO SI Busca etiquetas Calcula salidas agregadas y precisas según método de inferencia Arch. Temporal Conclusiones NO ¿Es una variable? SI Busca etiquetas compatibles Muestra conclusiones según posibilidad de ocurrencia NO Final A Fig. 4.15. Diagrama de Flujo del proceso de diagnóstico. 99 4.15. Datos Históricos de los Casos Se dispone de una opción que permite el análisis estadístico de los casos históricos a partir de las reglas que permiten su diagnóstico, con esta opción se puede evaluar la idoneidad y exactitud de las reglas, a través de la evaluación individual de sus antecedentes. Para cada regla se muestran los criterios de aplicabilidad y sus antecedentes agrupados en tres categorías: características esenciales, características probables, y características incompatibles. Adicionalmente se muestra la categoría “otras características observadas” que incluye a los hechos registrados en los casos y que no están presentes en la definición de la regla. Para cada característica, independientemente de la categoría a la que pertenezca, se muestra el número de casos en los cuales se ha verificado su presencia y el porcentaje de ocurrencia. La revisión periódica de esta información sirve de base para realizar ajustes a las reglas o comprobar su eficiencia. 100 5. Pruebas de la Solución Desde la planificación misma de este Trabajo de Grado, se han realizado un conjunto de pruebas y validaciones tendentes a garantizar la calidad del software desarrollado. Las revisiones preliminares se centraron en el análisis de los requerimientos y las particularidades de los problemas de diagnóstico. Las sucesivas etapas del desarrollo fueron objeto de evaluaciones cíclicas y permanentes, por lo que la validación del shell no debe entenderse como un hecho posterior e independiente de su creación. En el siguiente diagrama se sintetizan las etapas del desarrollo y los aspectos validados. Problemas de Diagnóstico Explotación del Sistema Análisis y Diseño Validación Conceptual Validación Operacional Validación de Resultados Sistemas Expertos Modelo Conceptual Validación Lógica Validación Experimental Desarrollo de la solución Implementación Shell Fig. 4.16. Diagrama de pruebas y validaciones. Fuente: Elaboración Propia La revisión de los problemas de diagnóstico fue fundamental para establecer las necesidades y expectativas que definen los requerimientos del sistema. Esto implicó contrastar aspectos del mundo real con las posibilidades que la arquitectura del software ofrece. Los problemas de diagnóstico, en general, se deben considerar complejos de allí la necesidad de limitar la forma y precisión de su representación, para luego proceder a su solución. El modelo conceptual es el diseño propuesto a partir las percepciones y juicios de valores de los involucrados en el desarrollo, allí se 101 terminaron de definir los objetivos que se debían lograr. Para alcanzar el diseño final del modelo conceptual se requirió un proceso iterativo de validación, evaluándose principalmente los siguientes aspectos: • Consistencia de la estructura de datos con los requerimientos de información y los objetivos propuestos. • Adecuación a los estándares y normas para el diseño de Bases de Datos. Se verificó el cumplimiento de la primera, segunda y tercera forma normal, es decir, se evitó la información duplicada en las Bases de Datos y se comprobó que cada atributo dependa completa y únicamente de su clave. Al mismo tiempo se consideraron los factores velocidad para la consulta y actualización de la información, además del factor facilidad de mantenimiento para los archivos. • Distribución modular de los algoritmos y componentes de la aplicación, según su especificación por función e interfaz. En la definición de los módulos se procuró el equilibrio entre los factores de acoplamiento y cohesión, esto implica la independencia entre ellos, sin perder de vista el ideal de tener módulos con elementos que requieran pocas relaciones con elementos de otros módulos. • Utilidad real de los algoritmos, esto es la capacidad y eficiencia para producir los resultados esperados, la lógica aplicada y la complejidad de su implementación, además del oportuno tratamiento de los errores. • Adecuación de los aspectos funcionales y estéticos de los algoritmos, rutinas e interfaces al entorno de trabajo y a las estructuras de datos. El desarrollo de la solución implicó la codificación o programación de las rutinas y módulos que conforman al shell. La validación lógica [Landry, Malouin, Oral, 1983] se refiere a las comprobaciones que determinan la precisión y adecuación del desarrollo al modelo conceptual. La técnica de la caja blanca se refiere al conjunto de 102 pruebas destinadas a la validación lógica de los programas, es decir a la revisión de sus detalles procedimentales, para verificar que su funcionamiento interno corresponde a las especificaciones del diseño [Pressman, 1996]. Para la aplicación de esta técnica se seleccionaron conjuntos de datos que pusieron a prueba los distintos caminos lógicos en los programas, cada estructura condicional que implicará una bifurcación en la ejecución fue probada en todas sus vertientes. Los ciclos o bucles fueron probados tanto con valores probables como en sus extremos operacionales; se probaron los ciclos simples y anidados. Se colocaron interrupciones en distintas partes de los programas para realizar inspecciones y cotejar los valores de variables y acumuladores con cálculos manuales realizados en paralelo. Se probaron las distintas estructuras de datos, se examinó el contenido de las bases datos para las distintas operaciones. Se utilizaron las herramientas de depuración del entorno de programación para detectar errores. Los distintos módulos fueron probados individualmente, en la medida en que se iban desarrollando, luego se integraron en la aplicación y se probaron en conjunto. Durante la fase de codificación el énfasis de estas pruebas estuvo en: • Verificar la correspondencia del código escrito con el diseño de la aplicación. • Revisión de errores que pudieran surgir producto de la transcripción. • Seguimiento de los estándares de programación sugeridos para el lenguaje, esto incluye márgenes, estilo de letras, identificación de los objetos, técnicas de programación. • Conveniencia de los comentarios. • Uso apropiado de las variables, su declaración de tipo y alcance (local o global). Las pruebas de la caja negra son aquellas revisiones que se hacen empleando la interfaz de los programas, están destinadas a comprobar la operatividad de la aplicación, la existencia de las validaciones apropiadas, y la exactitud de las salidas entre otros aspectos. Estas pruebas también se denominan pruebas funcionales. Una 103 vez desarrollado el shell se procedió a su validación en forma experimental, según sus requisitos funcionales, se buscaron opciones faltantes o defectuosas, errores relativos a las interfaces, y errores en la integridad de los datos. Se crearon sistemas expertos de prueba, se definieron elementos para todas las categorías: variables, conclusiones, reglas, usuarios, cuestionarios, etc. Se sometió a prueba cada una de las opciones disponibles en el shell, se realizaron comprobaciones para los diferentes niveles de seguridad, se intentó el uso de opciones no permitidas y acciones que provocaron errores en la aplicación o prueba de malicia. Otros aspectos evaluados durante estas pruebas fueron: rendimiento, tolerancia a fallas, y adecuación de los manuales. Durante la validación experimental del shell, se realizaron pruebas especificas para comprobar los siguientes aspectos: • Posibilidad de representar los distintos hechos y datos que caracterizan a los problemas de diagnóstico mediante los tipos de variables y conclusiones incorporadas. • Capacidad de representar el conocimiento necesario para alcanzar los diagnósticos a través de la estructura de reglas definidas. • Capacidad de sugerir posibles diagnósticos cuando se suministran los datos apropiados y suficientes. • Capacidad de verificar hipótesis. • Encadenamiento de conclusiones durante los procesos de inferencia (hacia adelante en los procesos de diagnóstico, y hacia atrás durante la verificación de hipótesis). • Adaptabilidad de los sistemas mediante el uso de los parámetros definibles por los usuarios. • Acumulación de evidencia para ordenar los diagnósticos según su posibilidad de ocurrencia. • Exactitud de la información estadística acumulada en los sistemas. 104 Una vez completado el desarrollo del shell, se sometió a pruebas mediante la implementación de sistemas expertos simplificados para procesos de diagnóstico, también se diseño e implementó un sistema experto, que se podría considerar de mediana complejidad, para el diagnóstico de neumopatías o afecciones del sistema respiratorio humano (especialidad médica de neumología). La información utilizada para definir este sistema y para validar los resultados, fue obtenida de textos de la especialidad y/o suministrada por los médicos consultados. Resulta prematuro asignar un nivel de eficiencia al shell o a los sistemas implementados, sin embargo, las pruebas hasta ahora realizadas han sido satisfactorias. 105 CONCLUSIONES Con el presente Trabajo de Grado se planteó el diseño y programación de un shell, destinado a permitir la implementación de sistemas expertos para ayudar en los procesos de diagnóstico requeridos en diferentes disciplinas y ciencias. En tal sentido y procurando dar cumplimiento a los objetivos inicialmente planteados, se desarrollaron un conjunto de actividades de las cuales se extraen las siguientes consideraciones. Para el diseño del shell se analizaron diferentes alternativas para la representación, almacenamiento y procesamiento de los conocimientos aplicables en la solución de los problemas de diagnóstico, encontrándose que en este caso en particular la forma más conveniente para expresar dichos conocimientos es a través de reglas de inferencia. En consecuencia, se estructuró una Base de Datos que permite la definición y uso de sistemas expertos, cada uno de ellos con información y parámetros operativos independientes. La estructura de datos fue dotada de índices que optimizan la búsqueda y procesamiento de la información contenida en ella, es decir, el conjunto de reglas que contienen los conocimientos específicos de cada materia, así como los valores, signos, y síntomas que caracterizan a los problemas que se desean resolver. Luego de haber analizado la naturaleza de los problemas que motivaron el desarrollo de este shell, se evidenció la necesidad de incorporar mecanismos que facilitaran la representación de porciones vagas e imprecisas de los conocimientos que forman parte de los procesos de diagnóstico, a tal fin se recurrió a la lógica difusa, sin limitar la solución a esta forma de trabajo, pues la utilización de elementos difusos representa un esfuerzo adicional que no siempre está justificado y hasta puede resultar contraproducente. Así, el diseño del shell combina el procesamiento de la información precisa y de aquélla que contiene elementos de incertidumbre. Para permitir el 106 apropiado procesamiento de los hechos y datos de los problemas a resolver, se programó un conjunto de rutinas que permiten la definición y control de variables de los siguientes tipos: difusas, lingüísticas discretas, definidas por series de valores, presente/ausente, numéricas libres, numéricas acotadas, alfanuméricas libres y alfanuméricas acotadas. Para definir las etiquetas lingüísticas en las variables difusas, se incorporaron las funciones de pertenencia más usuales: triangular, trapezoidal, campana de Gauss, campana de Gauss combinada, campana generalizada, curva sigmoidal, combinación sigmoidal, diferencia sigmoidal, curva en forma de S, curva en forma de Z, y curva PI. El diseño del shell permite la implementación de sistemas expertos que utilicen concurrentemente procesos de inferencia tanto difusos como no difusos. Para las conclusiones difusas se han incorporado los dos principales métodos de inferencia: el método de Mamdani, y el método de Sugeno. Para determinar la compatibilidad entre los conceptos aproximados o difusos se dispone de 12 alternativas o fórmulas que se emplean para el cálculo de intersección entre las etiquetas lingüísticas. Para cada conclusión difusa en la cual se deba precisar las salidas del proceso de inferencia, se puede elegir una de las siguientes técnicas: centro de gravedad, centro de las sumas, primer máximo, último máximo, medio máximo, y promedio ponderado. El diseño del shell se basa en una interfaz gráfica, de funcionamiento sencillo y similar a las principales aplicaciones comerciales para el sistema operativo Windows®. Para controlar y limitar el acceso al shell y a la información en él contenida, se implementó una estructura jerárquica de usuarios que restringe las opciones disponibles en cada caso. Se simplificó el proceso de instalación del shell y de otros componentes necesarios para su uso mediante el desarrollo de un programa de instalación. Se documentó profusamente los aspectos técnicos y operativos del shell, incluyéndose comentarios en los módulos y programas, además de elaborarse un detallado manual del usuario y su equivalente en una versión de ayuda en línea 107 disponible desde la misma aplicación. La ayuda en línea corresponde a los estándares de Windows® e incluye facilidades de búsqueda. Para garantizar la calidad y operatividad del shell desarrollado, se aplicaron pruebas correspondientes a las técnicas de la caja blanca y de la caja negra. Algunas pruebas específicas se refirieron a la tolerancia a fallos, rendimiento del sistema en las condiciones esperadas de uso, y adecuación de la documentación. La capacidad operativa y utilidad práctica del shell se comprobó mediante la reproducción de diversas situaciones en las que se puede utilizar un sistema experto para ayudar en los procesos de diagnóstico. Se consultó a profesionales que realizan habitualmente diagnósticos en su desempeño laboral, y las opiniones recibidas a cerca del shell fueron mayoritariamente satisfactorias. Se definió y verificó el funcionamiento de un sistema experto, relativamente complejo, para realizar diagnósticos en la especialidad de neumología. Los resultados obtenidos durante las pruebas de este sistema experto fueron contrastados con criterios médicos, encontrándose que los mismos se ajustaban a la realidad de los casos, aunque esto no sea suficiente para establecer la idoneidad o eficiencia del sistema experto implementado y menos aún del funcionamiento general del shell. Por todo lo antes expuesto, se estima que se han cumplido tanto los Objetivos Específicos como el Objetivo General inicialmente planteado, es decir, se diseñó y programó un conjunto de rutinas que conforman un shell, el cual permite implementar sistemas expertos basados en lógica difusa, y destinados a ayudar en la solución de problemas de diagnóstico, aún en casos de incertidumbre, situaciones que se presentan en diversas ciencias y actividades del quehacer humano. Se puede considerar que el principal aporte de este Trabajo de Grado ha sido mostrar la conveniencia de recurrir a los Sistemas Expertos y la Lógica Difusa como forma práctica y eficiente de abordar la solución de ciertos problemas. 108 RECOMENDACIONES Los sistemas expertos de diagnóstico deben convertirse en una ayuda para que los profesionales logren un mejor desempeño de sus funciones, deben contribuir a sistematizar y profundizar los conocimientos de las disciplinas en las cuales se utilizan, en tal sentido se recomienda su utilización asumiendo una actitud crítica y amplia, sin permitir que las primeras respuestas fallidas de un sistema sean suficientes para descartar su uso sin mayores indagaciones, así mismo, no debe el usuario aceptar por válido ningún diagnóstico sugerido por el sistema, bajo el supuesto que el sistema ha sido probado y las computadoras no se equivocan, en efecto, cada respuesta del sistema debe ser entendida como una oportunidad de evaluar su funcionamiento y mejorarlo en la medida de lo posible. La Inteligencia Artificial constituye un importante y creciente campo de investigación para las ciencias de la computación, por eso se recomienda su estudio, aun cuando debe tenerse presente que ese nombre, más o menos genérico, se refiere a temas muy diversos, que pueden ser extensos e incluso sobrepasar los niveles académicos de exigencia para los estudiantes de pre-grado. La Universidad Nacional Abierta por ofrecer una alternativa de educación a distancia, constituye una extraordinaria oportunidad de formar profesionalmente a personas que se encuentran inmersas en el campo laboral, cada una de ellas con intereses y motivaciones diferentes, de allí que las Pasantías y Proyectos de Grado pueden servir para conjugar dos importantes factores, conocimiento y experiencia, que pueden ser orientados a la búsqueda de soluciones para problemas trascendentes de nuestra sociedad. 109 BIBLIOGRAFÍA Akdag H., Khoukhi F., Secroun C. (1993), Approximate Reasoning using Linguistic Valuations, The eight International Symposium on Computer and Information, Estambul, Turquía. (9). __________ (1994), Approximate Reasoning using Logic-Symbolic Valuations, IUT de Reims Leri, Reims, Francia, (6). Ayoubi M., Isermann R. (1997), Neuro-fuzzy systems for diagnosis, Fuzzy Sets and Systems, vol. 98, North-Holland, (19) pp. 289-307. Babuška, R., Fanuzzi C., Kaymak U., Verbruggen H. (1996), Improved Inference for Takagi- Sugeno Models, Fifth IEEE International Conference on Fuzzy Systems, New Orleans (Louisiana), IEEE 0-7803-3645-3/96, The Institute of Electrical and Electronics Engineers Inc., (6) pp.701-706. Barr A., Feigenbaun E. (1981), The Handbook of Artificial Intelligence, AddisonWesley Publishing, USA. Beers M., Berkow R. (1999), El Manual Merck de Diagnóstico y Tratamiento, 10ma. Ed., Ediciones Harcourt S.A., Madrid. Berner E., Webster G., Shugerman A., et al. (1994), Performance of four computerbased diagnostic systems, The New England Journal of Medicine, Junio 23, (5) pp. 1792-1799. Buchanan B., Shortliffe E. (1984), Rule-Based Expert Systems, Addison-Wesley Publishing Company, Massachusetts, USA. Buckley J., Siler W., Tucker D. (1986), A Fuzzy Expert System, Fuzzy Sets and Systems, vol 20, North-Holland, (16) pp. 1-16. Bunge M. (1983), La investigación científica, 2da Ed., Ariel Methodos, Barcelona. Carlsson C., Fullér R. (1998), Optimization with linguistic variables, TUCS Techinical Report 157, Turku Centre for Computer Science, (14) pp. Castillo E., Álvarez E. (1989), Sistemas Expertos aprendizaje e incertidumbre, Paraninfo, Madrid. Castro J., Zurita J. (1995), An Inductive Learning Algorithm in Fuzzy Systems, Technical Report 950116, Departamento de Ciencias de la Computación e Inteligencia Artificial, Universidad de Granada, España. Cayrac D., Dubois D., Prade H. (1996), Handling Uncertainty with Possibility Theory and Fuzzy Sets in a Satellite Fault Diagnosis Applications, IEEE 110 Transaction on Fuzzy System, vol 4 nro 3, The Institute of Electrical and Electronics Engineers Inc., (19) pp. 251-269 Chiclana F., Herrera F., Herrera E. (1996), Integrating Three Representation Models in Fuzzy Multipurpose Decision Making Based on Fuzzy Preference Relations, Technical Report 96106, Departamento de Ciencias de la Computación e Inteligencia Artificial, Universidad de Granada, España. Chiclana F., Herrera F., Herrera E., Poyatos M. (1995), A classification method of alternatives for multiple preference ordering criteria based on fuzzy majority, Technical Report 95115, Departamento de Ciencias de la Computación e Inteligencia Artificial, Universidad de Granada, España. Console L., Torasso P. (1988), A Logical Approach to Deal with Incomplete Causal Models In Diagnostic Problem Solving, 2nd International Conference on Information Processing and Management of Uncertainly in Knowledge-Based Systems, Urbino, Italia, (10) pp. 255-264 Cordón O., Del Jesús M., Herrera F. (1997), A Proposal on Reasoning Methods in Fuzzy Rule-Based Classification Systems, Technical Report 970126, Departamento de Ciencias de la Computación e Inteligencia Artificial, Universidad de Granada, España. Davis R., Buchanan B., Shortliffe E. (1977), Production Rules as a Representation for a Knowledge-Based Consultation Program, Artificial Intelligence, vol. 8, North-Holland Publishing, (31) pp. 15-45. Delgado M., Herrera F., Herrera E., Martínez L. (1996), Combining Numerical and Linguistic Information in Group Decision Making, Technical Report 96115, Departamento de Ciencias de la Computación e Inteligencia Artificial, Universidad de Granada, España. Dorffner G., Prem E., Mackinger M. et al. (en imprenta), Experiences with Neural Networks as a Diagnostic Tool in Medical Image Processing, Department of Medical Cybernetics and Artificial Intelligence, University of Vienna, (6). Dubois D., Prade H. (1995), Towards Possibilistic Decision Theory, Lecture Notes in Artificial Intelligence (LNAI), vol. 1188, Springer, (12) pp. 240-251. __________ (1996), What are fuzzy rules and how to use them, Fuzzy Sets and Systems, vol. 84, North-Holland, (17) pp. 169-185. __________ (1999a), Fuzzy sets in approximate reasoning, part 1: Inference with possibility distributions, Fuzzy Sets and Systems, vol. 100 supplement, NorthHolland, (60) pp. 73-132. __________ (1999b), A selection of the most cited papers in Fuzzy Sets and Systems, Fuzzy Sets and Systems, vol. 100 supplement, North-Holland. 111 Dussauchoy A., Chatain J. (1988), Sistemas Expertos: Métodos y Herramientas, Paraninfo, Madrid. Esogbue A. (1999), Fuzzy Dynamic Programming, Fuzzy Adaptive Neuro Control, and the General Medical Diagnosis Problem, Computer and Mathematics with Applications, vol. 37, Pergamon, (9) pp. 37-45. Farggi D., LeBlanc M., Crowley J. (2001), Understanding neural networks using regression trees: an application to multiple myeloma survival data, Statistics in Medicine, vol. 20, John Wiley & Sons Ltd., (12) pp. 2965-2976. Farrell J., Kandell A. (1997), A Fuzzy rule-based expert systems for marine bioassessment, Fuzzy Sets and Systems, vol. 89, North-Holland, (8) pp. 27-34. Farreras P., Rozman C. (1996), Medicina Interna, 13ava Ed., Mosby-Doyma libros S.A., Barcelona, España. Fernández-Bujarrabal J., García F. (2001), Asma, Ediciones Doyma S.L., Barcelona, España. Fullér R. (1991), On the generalized method-of-case inference rule, Annales Univ. Sci. Budapest, Sectio Computatorica, (7) pp. 107-113. Fullér R., Werners B. (1991), The Compositional Rule of Inference: Introduction, theoretical considerations, and exact calculation formulas, Institut für Wirtschaftswissenschaften, Alemania. __________ (1992), The Compositional Rule of Inference with Several Relations, Math. Inst. Slovak Academy of Sciences, (5) pp. 39-44. Fullér R., Zimmermann H. (1992), On computation of the compositional rule of inference under triangular norms, Fuzzy Sets and Systems, vol. 51, NorthHolland, (9) pp. 267-275. __________ (1993), On Zadeh´s Compositional Rule of Inference, Fuzzy Logic: State of the Art, Kluwer Academic Publisher, (8) pp. 193-200. Gamberger D., Lavrač N., Jovanoski V. (1999), High confidence association rules for medical diagnosis, Annual Symposium of the American Medical Informatics Association (AMIA), Washington D.C., (10) pp. 42-51. Gierl, Pollwein, Schmidt (1999), Experiences with Case-Based Reasoning Methods and Prototypes for Medical Knowledge-Based Systems, Springer-Verlag Berlin Heidelberg. Goldenberg K., Verdain H., Redding M. (1991), Manual de Pruebas de Diagnostico, Salvat Editores S.A., España. 112 Goldman L., Cook F., Johnson P., et al. (1996), Prediction of the need for intensive care in patients who come to emergency departments with acute chest pain, The New England Journal of Medicine, June 6, (7) pp. 1498-1504. Gorman G. (1998), A review of Fuzzy logic and its Applications, Information Technology Centre NUIG, Israel. Graham I. (1991), Fuzzy logic in commercial expert systems: Results and Prospects, Fuzzy Sets and Systems, vol. 40, North-Holland, (22) pp. 451-472. Gyenesei A. (2000), Mining Weighted Association Rules for Fuzzy Quantitative Items, Technical Reports 346, Turku Centre for Computer Science, Turku, Finlandia.. Haack S. (1980), Lógica divergente, Paraninfo S.A., Madrid, España. Hernández R., Fernández C., Baptista P. (1991), Metodología de la Investigación, 2da Ed., Mc Graw Hill, México. Herrera E. (1995), Sistemas Clasificadores de Aprendizaje: Aproximaciones Difusas, Trabajo de Doctorado, Departamento de Ciencias de la Computación e Inteligencia Artificial, Universidad de Granada, España. Herrera F., Herrera E. (1998), Linguistic Decision Analysis: Steps for Solving Decision Problems under Linguistic Information, Technical Report 98104, Departamento de Ciencias de la Computación e Inteligencia Artificial, Universidad de Granada, España. Herrera F., Herrera E., Verdegay J. (1994), A Model of Consensus in Group Decision Making under Linguistic Assessments, Technical Report 94109, Departamento de Ciencias de la Computación e Inteligencia Artificial, Universidad de Granada, España. __________ (1995), Consensus Based on Fuzzy Coincidence for Group Decision Making in Linguistic Setting, Technical Report 95143, Departamento de Ciencias de la Computación e Inteligencia Artificial, Universidad de Granada, España. Herrera F., Martínez L. (1999), A 2-tuple Fuzzy Linguistic Representation Model for Computing with Words, Technical Report 99102, Departamento de Ciencias de la Computación e Inteligencia Artificial, Universidad de Granada, España. Herrera F., Verdegay J. (1995), On Group Decision Making under Linguistic Preferences and Fuzzy Linguistic Quantifiers, Technical Report 95133, Departamento de Ciencias de la Computación e Inteligencia Artificial, Universidad de Granada, España. IEEE Std 829 (1998), IEEE Standard for Software Test Documentation, Software Engineering Standards Committee of the IEEE Computer Society, The Institute of Electrical and Electronics Engineers Inc., New York. 113 IEEE Std 830 (1998), IEEE Recommended Practice for Software Requirements Specifications, Software Engineering Standards Committee of the IEEE Computer Society, The Institute of Electrical and Electronics Engineers Inc., New York. Kandel A. (1986), Fuzzy Mathematical Techniques with Applications, AddisonWesley Publishing Company, USA. Kaufmann A. (1975a), Introduction a La Théorie des Sous-Ensembles Flous a L’Usaqe des Ingénieurs, Masson et Cie Éditeurs, Paris. __________ (1975b), Introduction to the Theory of Fuzzy Subsets, Academic Press, New York. Kernighan B., Plauger P. (1980), Elementos de estilo de programación, Editorial Diana S.A., México. Klir G., Folger T. (1988), Fuzzy Sets, Uncertainty, and Information, Prentice-Hall International Editions, Londres. Kock P. (1991), PC-range expert systems shells: Advantages and Problems, Fuzzy Sets and Systems, vol. 41, North-Holland, (5) pp. 127-131. Kuncheva L., Steimann F. (1999), Fuzzy Diagnosis (Editorial), Artificial Intelligence in Medicine, vol. 16, Springer-Verlag, (8) pp. 121-128. Landry M., Malouin J., Oral M. (1983), Model validation in operations research, European Journal of Operational Research, vol. 14, (12) pp. 207-220. Lazzerini B., Reynery L., Chiaberge M. (1999), A Neuro-Fuzzy Approach to Hibrid Intelligent Control, IEEE Transactions on Industry Applications, vol. 35 nro. 2, The Institute of Electrical and Electronics Engineers Inc., (6) pp. 413-418. Lucas P. (1975), Introduction to the theory of fuzzy subsets, Academic Press, New York. __________ (1997), A Theory of Medical Diagnosis as Hypothesis Refinement, Artificial Intelligence in Medicine, vol.1211, Springer-Verlag, (12) pp. 169-181 Mamdani E., Gaines B. (1981), Fuzzy Reasoning and its Applications, Academic Press Inc., London. Marín R. (en imprenta), La Abducción y los Factores Temporales en el Razonamiento Médico, Dpto. Informática Inteligencia Artificial y Electrónica, Universidad de Murcia, (22). Marín R., Mira J. (1991), On knowledge-based fuzzy classifiers: A medical case study, Fuzzy Sets and Systems, vol. 44, North-Holland, (10) pp. 421-430. Martín P., Viejo J. (1998), Neumoclínica, Luzán 5 S.A de Ediciones, Madrid. Mozetic I. (1990), Diagnostic efficiency of deep and surface knowledge in KARDIO, Artificial Intelligence in Medicine, vol. 2, (17) pp. 67-83. 114 __________ (1991), Hierarchical Model-Based Diagnosis, International Journal of Man-Machine Studies, vol. 35 nro. 3, (34) pp. 329-362. Nauck D., Kruse R. (1997), A neuro-fuzzy method to learn fuzzy classification rules from data, Fuzzy Sets and Systems, vol. 89, North-Holland, (12) pp. 277-288. Negoita V. (1985), Expert Systems and Fuzzy Systems, The Benjamin/Cummings Publishing Company Inc., Menlo Park, California. Negrete J. (1991), Inteligencia Experimental en Computadores, 2da Ed., Editorial Limusa S.A., México. Neumomadrid (2003a), Revista de Patología Respiratoria, vol. 6, nro. 2, Ergon, Madrid. Neumomadrid (2003b), Revista de Patología Respiratoria, vol. 6, nro. 3, Ergon, Madrid. O’Leary D. (1988), Methods of Validating Expert Systems, Interfaces, vol. 18 nro. 6, The Institute of Management Sciences, (8) pp. 72-79. Pan J., DeSouza G., Kak A. (1998), Fuzzy Shell: A Large-Scale Expert System Shell Using Fuzzy Logic for Uncertainty Reasoning, IEEE Transactions on Fuzzy Systems, vol 6. nro. 4, The Institute of Electrical and Electronics Engineers Inc., (19) pp. 563-581. Patil R., Szolovits P., Schwartz W. (1981), Causal Understanding of Patient Illness in Medical Diagnosis, Seventh International Joint Conference on Artificial Intelligence, Vancouver, Columbia Británica, (7) pp. 893-899. Pauker S., Gorry A., Kassirer J., Schwartz W. (1976), Towards the Simulation of Clinical Cognition: Taking a Present Illness by Computer, The American Journal of Medicine, vol. 60, Boston, Massachusetts. Peña C., Sipper M. (2000), Evolutionary computation in medicine: an overview, Artificial Intelligence in Medicine, vol.19, Springer-Verlag, (23) pp. 1-23. Pressman R. (1996), Ingeniería del Software Un enfoque Práctico, 3era Ed., Mc Graw Hill, México. Puppe B. (1995), Reflections on Building Medical Decision Support Systems and Corresponding Implementation in Diagnostics Shells D3, University of Wuerzburg, Department of Medicine, Germany. Quine W. (1973), Filosofía de la lógica, Alianza Universidad, Madrid. Reggia J., Nau D., Wang P. (1983), Diagnostic Expert Systems Based on a Set Covering Model, International Journal of Man-Machine Studies, vol. 19, (24) pp. 437-460. 115 Roadknight C., Palmer D., Mills G. (1997), The Analysis of Artificial Neural Network Data Models, Advances in Intelligent Data Analysis, vol. 1280, SpringerVerlag Berlin Heidelberg, (10) pp. 337-346. Rolston D. (1992), Principios de Inteligencia Artificial y Sistemas Expertos, Mc Graw Hill, México. Roy M., Biswas R. (1992), I-v fuzzy relations and Sanchez´s approach for medical diagnosis, Fuzzy Sets and Systems, vol. 47, North-Holland, (4) pp. 35-38. Russell S., Norvig P. (1996), Inteligencia Artificial Un Enfoque Moderno, Prentice Hall, México. Sabino C. (1994), Cómo hacer una tesis, 3era Ed., Editorial Panapo, Caracas. __________ (2002), El proceso de investigación, 2da Ed., Editorial Panapo de Venezuela, Caracas. Sánchez B., Guarisma J. (1985), Métodos de Investigación, Ediciones Universidad Bicentenaria de Aragua, Maracay. Schmidt R., Pollwein B., Gierl L. (1999), Experiences with Case-Based Reasoning Methods and Prototypes for Medical Knowledge-Based Systems, AIMDM, vol. 1620, Springer-Verlag Berlin Heidelberg, (8) pp. 124-132 Shimura, Tanaka, Zadeh (1975), Fuzzy sets and theirs applications to cognitive and decision processes, Academic Press, New York. Shoham Y. (1988), Reasoning about change, The MIT Press, Londres. Steimann F. (2001), On the use and usefulness of fuzzy sets in medical AI, Artificial Intelligence in Medicine, vol. 21, (7) pp. 131-137. Steimann F., Adlassnig K. (en imprenta), Fuzzy Medical Diagnosis, Institut für Rechnergestüstzte Wissensverarbeitung, Universität Hannover, (16). Sun R. (1996), Commonsense reasoning with rules, cases, and connectionist models: A paradigmatic comparison, Fuzzy Sets Systems, vol. 82, North-Holland, (14) pp.187-200. Szolovits P., Pauker S. (1978), Categorical and Probabilistic Reasoning in Medical Diagnosis, Artificial Intelligence, vol. 11, North-Holland Publishing, (30) pp. 115144. Tanimoto S. (1990), The Elements of Artificial Intelligence using Common Lisp, Computer Science Press, USA. Tecuci G. (1998), Building Intelligent Agents, Academic Press Inc., San Diego California. Turksen I., Tian Y. (1993), Combination of rules or their consequences in fuzzy expert systems, Fussy Sets and Systems, vol. 58, North-Holland, (38) pp. 3-40. 116 Ulieru M., Isermann R. (1993), Design of fuzzy-logic based diagnostic model for technical processes, Fuzzy Sets and Systems, vol. 58, North-Holland, (23) pp. 249-271. UNA (1983), Análisis y Diseño de Sistemas, 4ta. Reimpresión, Universidad Nacional Abierta, Caracas, Cohen C. __________ (1995), Documentación de Sistemas, 4ta. Reimpresión, Universidad Nacional Abierta, Caracas, Cohen C. __________ (2000), Manual de Proyecto de Grado (319), 3era Reimpresión, Universidad Nacional Abierta, Caracas, Márquez L. UPEL (1998), Manual de Trabajos de Grado de Especialización y Maestría y Tesis Doctorales, Universidad Nacional Pedagógica Experimental Libertador, Caracas. Widmer G., Horn W., Nagele B. (1993), Automatic Knowledge Base Refinement: Learning from Examples and Deep Knowledge in Rheumatology, Artificial Intelligence in Medicine, vol. 5 nro. 3, (19) pp. 225-243. Witte R. (en imprenta), Fuzzy Belief Revision, Institute for Program Structures and Data Organization, Faculty of Informatics, University of Karlsruhe, Alemania, (10). Wu T. (1988), Efficient Diagnosis of Multiple Disorders Based on a Symptom Clustering Approach, Commonsense Reasoning, (8) pp. 357-364. Yager R. (1997), Fuzzy logics and artificial intelligence, Fuzzy Sets Systems, vol. 90, North-Holland, (6) pp.193-198. Yeung D., Tsang E. (1997), Weighted fuzzy production rules, Fuzzy Sets and Systems, vol. 88, North-Holland, (15) pp. 299-313. Yourdon E. (1993), Análisis Estructurado Moderno, Prentice Hall Hispanoamericana S.A., México. Yue Z., Fengchi L., Fen S., Shounan B., Yunxiang P. (1991), A fuzzy production rule expert system, Fuzzy Sets and Systems, vol. 44, North-Holland, (13) pp. 391403. Zadeh L. (1978), Fuzzy sets as a basis for a theory of possibility, Fuzzy Sets and Systems, vol. 1, North-Holland, (26) pp. 3-28. Zadeh L. Fellow L. (2000), From Computing with Numbers to Computing with Words–From Manipulation of Measurements to Manipulation of Perceptions, Intelligent Systems and Soft Computing, Springer-Verlag Berlin Heidelberg, (38) pp. 3-40. Zadeh L., Fu K., Tanaka K., et al. (1975), Fuzzy Sets and their Applications to Cognitive and Decision Processes, Academic Press Inc., New York. 117 ANEXOS ANEXO A DEFINICIONES Y CONCEPTOS BÁSICOS Este anexo se incorporó para facilitar la lectura del informe, en él se incluyen, ordenadas alfabéticamente, las principales definiciones que aparecen en diversos capítulos. Se recomienda la revisión de estas definiciones cuando se haga referencia a ellas, o cuando queden dudas sobre el significado que estas puedan expresar en el contexto dado. Definición II.14. (α-corte). Un α-corte de un conjunto difuso A, es un conjunto no difuso Aα que contiene todos los elementos del universo de discurso X, tales que su grado de pertenencia al conjunto A sea mayor o igual al valor especificado de α. Esta definición puede ser escrita como Aα = {x ∈ X μ A (x) ≥ α } Definición II.31. (Agregación). Es un proceso que permite combinar los conjuntos difusos, que representan las salidas de reglas, para formar un solo conjunto. Existen varias formas de agregación, por ejemplo tomar el máximo de cada categoría, el método “o probabilístico”, o simplemente tomar la suma de cada conjunto de salida. Definición II.1. (Ambigüedad). Se refiere a lo que puede entenderse de varios modos o admitir distintas interpretaciones y dar por consiguiente motivo a dudas, incertidumbre o confusión. Lo ambiguo es: Incierto, dudoso o poco claro. En lo concerniente a la lógica difusa, ambiguo y difuso no son términos equivalentes. 1 Definición II.28. (Antecedente). Es una condición que precede al estado actual de un modelo. En los sistemas basados en reglas, se refiere a las premisas o variables que se evalúan para tomar una decisión. Es el primero de dos términos de una relación de implicación, por oposición a consecuente. Definición II.19. (Complemento de un número difuso). El complemento de un conjunto difuso A es especificado por la función c : [0,1] → [0,1] la cual asigna un valor c(μ A ( x) a cada grado de pertenencia μ A (x) . Este valor asignado corresponde al grado de pertenencia a la negación del concepto representado por A, para el elemento x. Existen formas especiales de complemento para los conjuntos difusos, por ejemplo los complementos del tipo Sugeno, y los del tipo Yager, que se definen así: cλ ( a ) = 1− a , donde λ ∈ ( −1, ∞ ) 1 + λa c w ( a ) = (1 − a w )1 / w , donde w ∈ ( 0, ∞ ) Complemento tipo Sugeno Complemento tipo Yager Definición II.26. (Composición). La composición de dos relaciones binarias P(X,Y) y Q(Y,Z), se define como un subconjunto R(X,Z) de X × Z tal que ( x, z ) ∈ R si y sólo si existe por lo menos un y ∈ Y tal que (x, y ) ∈ P y ( y, z ) ∈ Q . Dadas las relaciones binarias P, Q, R, su composición ( o ) debe satisfacer las siguientes tres propiedades: PoQ ≠ Qo R (P o Q )−1 = Q −1 o P −1 (P o Q) o R = P o (Q o R) Definición II.10. (Conjunto difuso). Son conjuntos en los que se asigna a cada elemento del universo del discurso un valor que representa su nivel de pertenencia a esa categoría, es decir, su similitud o compatibilidad con el concepto que representa 2 el conjunto difuso. Normalmente, el grado de pertenencia a un conjunto difuso es un número real comprendido en el intervalo cerrado entre 0 y 1, donde 0 indica “no pertenece al conjunto” y valores superiores expresan niveles crecientes de aproximación al concepto representado. Los conjuntos discretos pueden ser considerados como casos particulares de los conjuntos difusos, pues la absoluta pertenencia o no pertenencia al conjunto, se logra al asignar al grado de pertenencia los valores extremos del intervalo [0,1]. Definición II.15. (Conjunto difuso convexo). Un conjunto difuso A es convexo si y sólo si todos sus α-cortes son convexos, es decir, el mismo debe cumplir con la siguiente condición: μ A (λr + (1 − λ )s ) ≥ min[μ A (r), μ A (s)] , para todo r, s ∈ℜ , y para todo λ ∈ [0,1] Definición II.16. (Conjunto difuso normalizado). Un conjunto difuso se denomina normalizado, cuando al menos uno de sus elementos tiene el mayor grado de pertenencia posible, normalmente igual a 1. Definición II.11. (Elementos de un conjunto). Un conjunto puede ser descrito enumerando los elementos que lo constituyen (método por extensión) o mediante la especificación de las propiedades que deben poseer sus elementos (método por comprensión). La definición de conjuntos a través del método por extensión sólo es aplicable a conjuntos finitos. El conjunto V, cuyos miembros son las letras vocales del alfabeto español, se suele representar de la siguiente forma: V={a,e,i,o,u} Según el método por extensión V={v | v es una vocal del alfabeto español} donde el símbolo | denota “tal que” Según el método por comprensión Definición II.33. (Encadenamiento hacia atrás). El encadenamiento hacia atrás (Backward Chaining), es una técnica usada en procesos de inferencia. Consiste 3 en tomar un dato como consecuente y buscar en la base de conocimientos los posibles antecedentes, es muy útil para verificar hipótesis. Definición II.34. (Encadenamiento hacia adelante). El encadenamiento hacia adelante (Forward Chaining) es una técnica de inferencia que comienza con los datos conocidos y aplica el modus ponens sucesivamente hasta obtener los resultados correspondientes, suele ser útil cuando se dispone de una gran cantidad de datos que deben ser examinados. Definición II.4. (Fórmula lógica). Son expresiones algebraicas compuestas de variables lógicas, y de las funciones negación, conjunción y disyunción. Definición II.3.(Función lógica). Son las operaciones que permiten obtener variables lógicas a partir de otras o por combinación de sus valores. Definición II.12. (Grado de pertenencia). La pertenencia de cada elemento x del universo de discurso X ( x ∈ X ) a un determinado conjunto A. Se puede expresar mediante una función característica μ. Para un conjunto discreto A, la función característica asigna un valor a cada elemento ( x ∈ X ) tal que: ⎧1 si y sólo si x ∈ A ⎫ ⎬, ⎩0 si y sólo si x ∉ A⎭ μ A ( x) = ⎨ Así μ A : X → {0, 1} La función característica puede ser generalizada para los conjuntos difusos, ya no limitándose a asumir los valores extremos 0 y 1, y se denomina función de pertenencia. Para un universo de discurso X, la función de pertenencia μ asociada a un conjunto difuso A, generalmente es de la forma: 4 μ A : X → [0, 1], donde [0, 1] denota el intervalo de números reales de 0 a 1, ambos inclusive Definición II.21. (Intersección de conjuntos difusos). La intersección entre dos conjuntos difusos A y B es definida por una función que toma por argumento el grado de pertenencia de cada elemento x del conjunto universal X a los conjuntos A y B, y le calcula el grado de pertenencia a la intersección de ambos. De manera general, esta función se escribe μ A∩B ( x) = i[μ A ( x), μ B ( x)] , siendo la función de la forma i : [0,1]× [0,1] → [0,1] Definición II.29. ( Método de Mamdani). También conocido como el método “mín-implicación”. Es la forma de inferencia difusa más usada, fue propuesto en 1975 por el Prof. Ebrahim Mamdani de la Universidad de Londres, quien es el autor de uno de los primeros sistemas de control difuso, su modelo controlaba una turbina activada por una caldera de vapor. Las principales ventajas de este método son: uso intuitivo, amplia aceptación, apropiado para el uso con lenguajes naturales. Definición II.30. (Método de Sugeno). El método Sugeno o método TakagiSugeno-Kang, es una forma simple de lograr inferencia difusas, fue propuesto en 1985 por el Prof. Michio Sugeno. Las principales ventajas del método son su eficiencia al realizar los cálculos y la continuidad de sus soluciones. Resulta apropiado para: técnicas lineales, técnicas de adaptación, optimización y análisis matemático. Definición II.8. (Modus ponens). Es una forma de inferencia basada en el uso de tautologías como reglas. Se examina la premisa de la regla, y si es cierta, entonces se infiere la conclusión. Estas inferencias son de la forma: si a es cierto, entonces b, y 5 además se sabe que a es cierto, luego se puede concluir que b es cierto. En forma simbólica ((a ⇒ b) ∧ a) ⇒ b Definición II.9. (Modus tollens). Es una forma de inferencia basada en el uso de tautologías como reglas. Se examina la conclusión de la regla, y si es falsa, se concluye que la premisa también es falsa. Por ejemplo: se tiene la regla “si a es cierto, entonces b es cierto”, y se sabe que b es falso, por la aplicación del modus tollens, se concluye que a también debe ser falso, conclusión que no se puede obtener aplicando el modus ponens, ya que no se conocen los valores de la premisa. En forma simbólica ((a ⇒ b ) ∧ b ) ⇒ a Definición II.17. (Número difuso). Un número difuso es un subconjunto de valores reales pertenecientes en algún grado a un conjunto difuso, y caracteriza a una distribución de posibilidades en un universo de discurso. Un conjunto difuso, convexo y normalizado, definido en ℜ , y con función de pertenencia continua, se denomina un número difuso o intervalo difuso. La distribución de posibilidades queda definida por la función de pertenencia utilizada. Algunas formas de distribución utilizadas para valores difusos son: triangular, trapezoidal, curvas π, campana generalizada, curvas de Gauss, curvas polinomiales. Definición II.18. (Operaciones básicas de conjuntos difusos). La teoría original de los conjuntos difusos fue formulada a partir de tres operaciones básicas: complemento, unión, e intersección. Cuando el grado de pertenencia corresponde al intervalo cerrado entre 0 y 1, estas operaciones se definen así: μ A ( x) = 1 − μ A ( x) Complemento μ A ∪ μ B ( x) = máx[μ A ( x), μ B ( x)] Unión 6 μ A ∩ μ B ( x) = mín[μ A ( x), μ B ( x)] Intersección Definición II.32. (Precisar). Es el proceso de asignar un valor específico y representativo de una variable lingüística difusa. Existen varias formas de efectuar este proceso, siendo la más popular el método del centroide o centro de gravedad, otros de bastante aceptación son: el medio del máximo, el mayor del máximo, el menor del máximo, y el bisector. Definición II.24. (Producto cartesiano). El producto cartesiano de dos conjuntos X y Y, denotado por X × Y , es el conjunto de todos los pares ordenados tales que el primer elemento de cada par pertenece a X, y el segundo elemento pertenece a Y. Simbólicamente, el producto cartesiano se escribe X × Y = {(x, y ) x ∈ X , y ∈ Y } El concepto de producto se puede generalizar a más de dos conjuntos, en cuyo caso lo importante es mantener el orden de los elementos involucrados. Definición II.27. (Regla difusa). Es una estructura lógica de la “si x es A, entonces y es B”, donde A y B son valores lingüísticos definidos por conjuntos difusos en sus rangos o universos de discurso X e Y, respectivamente. Siendo “x es A” la premisa o antecedente, e “y es B” el consecuente o conclusión. Interpretar una de estas reglas implica dos pasos distintos, lo primero es evaluar el antecedente, lo que incluye difuminar (fuzzifying) las entradas. Lo segundo es la implicación o aplicar el resultado del antecedente al consecuente, lo que en esencia es evaluar la función de pertenencia. Definición II.6. (Regla de inferencia). Las reglas de inferencia, son tautologías que pueden ser utilizadas para hacer inferencias deductivas. Permiten dada una teoría 7 deductiva llegar a la verdad de una proposición a partir de una o varias proposiciones tomadas como hipótesis. Definición II.25. (Relación de conjuntos). Es la presencia o ausencia de asociación, interacción o interconexión entre elementos de dos o más conjuntos. Así, una relación difusa se define como el producto cartesiano de conjuntos no difusos X1,X2,...,Xn, donde cada grupo de elementos (x1,x2,...,xn) puede tener distintos grados de pertenencia según la relación. Definición II.23. (S-norma). Una S-norma o T-conorma, es un conjunto de condiciones mínimas que se exigen al definir funciones. Toda función f, que defina una unión para números difusos debe satisfacer lo siguiente: • (a,b)=f(b,a); es decir, la función debe ser conmutativa. • f(f(a,b),c)= f(a,f(b,c)); es decir, la función debe ser asociativa. • Si a<b y c<d entonces f(a,c) ≤f(b,d); lo que implica que debe ser monótona. • f(0,0)=0; f(0,1)= f(1,0)= f(1,1)=1 Definición II.7. (Silogismo). Palabra derivada del vocablo latino Syllogĭsmus, y éste del vocablo griego sullogismÕj, es un razonamiento que contiene tres proposiciones (mayor, menor y conclusión), tal que la conclusión es deducida de la mayor por medio de la menor. Por ejemplo: todos los hombres son mortales (proposición mayor); todo los griegos son hombres (proposición menor); luego todos los griegos son mortales (conclusión). El ejemplo anterior (silogismo hipotético) se puede escribir así, “si a implica b, y b implica c, entonces a implica c” o simbólicamente: ((a ⇒ b) ∧ (b ⇒ c)) ⇒ (a ⇒ c); donde ⇒ es unaimplicació n, y ∧ una conjunción . 8 Definición II.13. (Soporte de un conjunto difuso). Se define como soporte de un conjunto difuso (“support of a fuzzy set”) A en el universo de discurso X, a un conjunto no difuso que contiene todos los elementos de X con grado de pertenencia diferente de cero en A, es decir, supp A = {x ∈ X μ A ( X ) > 0} Definición II.5.(Tautología). Cuando el valor de una fórmula lógica es siempre verdadero e independiente de los valores asignados a sus variables se denomina una tautología. Definición II.22. (T-norma). Una T-norma o norma triangular es un conjunto de condiciones mínimas que se exigen al definir funciones. Toda función f que defina una intersección para números difusos debe satisfacer lo siguiente: • (a,b)=f(b,a); es decir, la función debe ser conmutativa. • f(f(a,b),c)= f(a,f(b,c)); es decir, la función debe ser asociativa. • Si a<b y c<d entonces f(a,c) ≤f(b,d); lo que implica que debe ser monótona. • f(1,1)=1; f(0,1)= f(1,0)= f(0,0)=0 Definición II.20. (Unión de conjuntos difusos). La unión de dos conjuntos difusos A y B es definida por una función que toma por argumento el grado de pertenencia de cada elemento x del conjunto universal X a los conjuntos A y B, y le calcula el grado de pertenencia a la unión de ambos. De manera general, esta función se escribe μ A∪B ( x) = u[μ A ( x), μ B ( x)] , siendo la función de la forma u : [0,1]× [0,1] → [0,1] Definición II.2. (Universo de discurso). Es la colección, discreta o continua, de todos los posibles elementos de un determinado conjunto, generalmente se denota por la letra U. 9 10