INTELIGENCIA ARTIFICIAL
UNIDAD 4 - ACTIVIDAD 1: Sistema experto jurídico con
AUTOR: DAVID SÁNCHEZ RUIZ Nº alumno: 21235597
Versión 1.0
Sistema experto jurídico con PROLOG
CONTROL DE DOCUMENTACIÓN Versión 1.0
Fecha 11-03-2013
Realizado por: AUTOR Fecha: 11-03-2013
Resumen de los cambios producidos Creación del documento.
Aprobado por: Fecha: dd-mm-aaaa
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
Sistema experto jurídico con PROLOG
Versión 1.0
ÍNDICE 1.
INTRODUCCIÓN........................................................................................................................ 4 1.1. 1.2.
PROPOSITO ....................................................................................................................... 4 OBJETIVOS ........................................................................................................................ 4
2. ACTIVIDADES A REALIZAR .................................................................................................... 4 3.
SISTEMA EXPERTO JURÍDICO CON PROLOG ................................................................. 5 3.1. PROLOG.............................................................................................................................. 6
3.2. DATOS, REGLAS Y FACTORES DE CERTEZA .......................................................... 8 4. SOLUCIÓN PROPUESTA ...................................................................................................... 10 4.1. Archivo pl ........................................................................................................................... 11 4.2. Consultas realizadas ........................................................................................................ 13 5.
CONCLUSIONES ..................................................................................................................... 19
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
Sistema experto jurídico con PROLOG
Versión 1.0
1. INTRODUCCIÓN 1.1. PROPOSITO A continuación se detalla la elaboración de la actividad1 de la unidad 4 de la asignatura de Inteligencia Artificial.
1.2. OBJETIVOS Practicar el uso de ProLog como lenguaje para el desarrollo de sistemas de ayuda a la toma de decisiones. Entender cómo funciona un sistema de representación del conocimiento basado en reglas.
2. ACTIVIDADES A REALIZAR En la actividad anterior con RapidMiner se probó el uso de diversos algoritmos de aprendizaje automático en un sistema de diagnóstico de cáncer de mama donde se pedía generar y evaluar sistemas de Aprendizaje basados en reglas y basados en árboles de decisión. En esta práctica lo que vamos a hacer es implementar el modelo basado en reglas o en árboles de decisión usando ProLog. Para ello hay que realizar lo siguiente: 1) Descargar e instalar la herramienta SWI-ProLog: (http://www.swi-prolog.org/Download.txt). 2) Implementar hechos y reglas basándonos en las que obtuvimos en RapidMiner y generar fichero .pl. 3) Importar a ProLog un fichero de consulta .pl. 4) Añadir algunos factores de certidumbre a las reglas importadas.
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
Sistema experto jurídico con PROLOG
Versión 1.0
3. SISTEMA EXPERTO JURÍDICO CON PROLOG Los sistemas expertos (SE) emulan el razonamiento de un experto en un dominio concreto y se busca una mejor calidad y rapidez en las respuestas dando así lugar a una mejora de la productividad del experto. La aplicación de un sistema experto, permitirán a los computadores poder extraer de ellos su verdadero potencial ya que con ello será posible resolver problemas operacionales y comerciales difíciles e importantes. Un Sistema Experto (SE) puede realizar en una determinada aplicación las mismas funciones de una persona de amplia experiencia. Ventajas: Permanencia, replicación, rapidez, bajo costo, trabajar en entornos peligrosos, fiabilidad, consolidar varios conocimientos y apoyo Académico. Limitaciones: Sentido común, lenguaje natural, capacidad de aprendizaje, perspectiva global, capacidad sensorial, flexibilidad y conocimiento no estructurado. Estructura básica de un SE:
Base de conocimientos (BC): Contiene conocimiento modelado extraído del diálogo con un experto. Base de hechos (Memoria de trabajo): contiene los hechos sobre un problema que se ha descubierto durante el análisis. Motor de inferencia: Modela el proceso de razonamiento humano. Módulos de justificación: Explica el razonamiento utilizado por el sistema para llegar a una determinada conclusión. Interfaz de usuario: es la interacción entre el SE y el usuario, y se realiza mediante el lenguaje natural.
Tipos de SE:
Basados en reglas previamente establecidas. Basados en casos o CBR (Case BasedReasoning). Basados en redes bayesianas.
En cada uno de ellos, la solución a un problema planteado se obtiene:
Aplicando reglas heurísticas apoyadas generalmente en lógica difusa para su evaluación y aplicación. Aplicando el razonamiento basado en casos, donde la solución a un problema similar planteado con anterioridad se adapta al nuevo problema. Aplicando redes bayesianas, basadas en estadística y el teorema de Bayes.
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
Sistema experto jurídico con PROLOG
Versión 1.0
3.1. PROLOG Es un lenguaje para programar artefactos electrónicos mediante el paradigma lógico con técnicas de producción final interpretada. Proviene del francés PROgrammation en LOGique. PROLOG es un lenguaje de programación declarativo, que está basado en formalismos abstractos (lógica de predicados de primer orden), y su semántica no depende de la máquina en la que se ejecutan. Las sentencias en estos lenguajes se entienden sin necesidad de hacer referencia al nivel máquina para explicar los efectos colaterales. Otra ventaja es que se pueden desarrollar y comprobar poco a poco, además de ser sintetizados o transformados sistemáticamente. PROLOG es un lenguaje de programación muy útil para resolver problemas que implican objetos y relaciones entre objetos, por ejemplo usado en dominios legales, médicos, financieros, etc. La ejecución de los programas en ProLog se hace mediante el encadenamiento hacia atrás en primero en profundidad, donde ProLog compila y proporciona una inferencia muy rápida. Está basado en los siguientes mecanismos básicos:
Unificación Estructuras de datos basadas en árboles Backtracking automático
La sintaxis del lenguaje consiste en lo siguiente:
Declarar hechos sobre objetos y sus relaciones Hacer preguntas sobre objetos y sus relaciones Definir reglas sobre objetos y sus relaciones
Los hechos PROLOG: Los hechos acaban siempre con punto y expresan relaciones entre objetos, donde los nombres de las relaciones y los argumentos que se refieren a objetos o personas concretas se escribirán con minúscula. Una base de datos PROLOG es un conjunto de hechos junto con un conjunto de reglas. Por ejemplo, si queremos expresar el hecho de que "un coche tiene ruedas". Este hecho, consta de dos objetos, "coche" y "ruedas", y de una relación llamada "tiene". La forma de representarlo en PROLOG es: tiene(coche,ruedas). Al final de un hecho debe ir un punto (el carácter ".").
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
Sistema experto jurídico con PROLOG
Versión 1.0
Las preguntas PROLOG: Sobre un conjunto de hechos se pueden realizar una serie de preguntas. PROLOG busca en su base de datos si existe un hecho que se pueda unificar con el hecho que aparece en la pregunta. PROLOG contestará “SI” si encuentra ese hecho y “NO” si no lo encuentra.
Las reglas PROLOG Las reglas se utilizan en PROLOG para significar que un hecho depende de uno o más hechos. Son la representación de las implicaciones lógicas del tipo p ---> q (p implica q). Una regla consiste en una cabeza y un cuerpo, unidos por el signo ":-". La cabeza está formada por un único hecho. El cuerpo puede ser uno o más hechos separados por una coma (","), que actúa como el "y" lógico. Las reglas finalizan con un punto ("."). Es un coche(X) ----> | tiene(X,ruedas) : tiene(X,ruedas) | es un coche(X). Instalación de SWI-ProLog Lo primero que debemos hacer es descargar e instalar la herramienta SWI-ProLog desde la web anteriormente citada, en mi caso lo tengo instalado en un ordenador de 32 bits con Microsoft Windows 7.
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
Sistema experto jurídico con PROLOG
Versión 1.0
Abrir fichero de consulta en SWI-ProLog Pinchar en “File” – Consult ..
3.2. DATOS, REGLAS Y FACTORES DE CERTEZA DATOS Para el desarrollo de esta práctica se nos proporciona de la práctica de la unidad 3 de RapidMiner, una colección con 569 ejemplos de pruebas realizadas a distintas personas y para cada ejemplo, si el resultado ha sido “maligno” (M) o “benigno” (B). La colección proporcionada está divida en 2 ficheros: un .names que explica los datos, y un .data con los ejemplares:
El fichero “wdbc.names” contiene la descripción de los datos que se van a tratar. El fichero “wdbc.data” co ntiene todos los datos de las pruebas médicas en bruto.
Los tipos de datos o columnas se dividen por comas. Los datos del fichero wdbc.data los utilizaré para que se puedan realizar consultas en ProLog introduciendo los valores por teclado y den como resultado algunas de estas seis reglas siguientes.
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
Sistema experto jurídico con PROLOG
Versión 1.0
REGLAS Reglas obtenidas por el algoritmo de reglas con operador “rule induction” en RapidMiner:
NOTA: También se pueden utilizar otros valores por teclado que no sean del fichero wdbc.data. FACTORES DE CERTEZA Para los factores de certeza me he apoyado en la fórmula del temario:
En la que cuando la regla a tratar solo tiene un componente como es el caso de las reglas 1, 2 y 4, los factores de certeza los calculo de la siguiente manera, tomando como ejemplo la regla nº 1: FC is 311 / 320 * 100 * FCWP, FC es la variable que recoje el resultado, (311/320) es el factor de certeza de la regla que lo multiplico por 100 y por el factor de certeza del parámetro “worst_perimeter” el cual el
usuario lo introduce por teclado. Para las reglas 3 y 5 que tienen doble condicionante lo calculo por ejemplo para la regla 3: FC is 33 / 35 * FCWA, FC2 is FC + FCMT * (1 - FC), FCRES is FC2 * 100,
FC es la variable que recoje el resultado, (33/35) es el factor de certeza de la regla que lo multiplico por el factor de certeza del primer parametro “worst_area” que el usuario
introduce por teclado, en FC2 sumo FC con el factor de certeza del segundo parámetro “mean_texture” y lo multiplico por (1 -FC).
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
Sistema experto jurídico con PROLOG
Versión 1.0
4. SOLUCIÓN PROPUESTA Se diseña programa en ProLog para diagnosticar si tiene cáncer o no un paciente a raíz de los resultados de unas pruebas médicas. Cuando cargamos el programa “unidad4.pl”, según instrucciones vitas anteriormente, nos
sale esta pantalla, donde resalto en azul que nos indica que el programa se ha cargado correctamente, de lo contrario mostraría algún mensaje en rojo de error, se detalla un comentario y que se teclee inicio. Para comenzar la prueba:
Pulsamos inicio. paciente:
y nos pide que introduzcamos datos referentes a las pruebas del
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
Sistema experto jurídico con PROLOG
Versión 1.0
Una vez introducidos todos los datos, el sistema mostrará el diagnostico de benigno (no tiene cáncer) y maligno (si tiene cáncer) más datos de factor de certeza.
4.1. Archivo pl A continuación se detalla el desarrollo del código en ProLog mediante el archivo “unidad4.pl”:
/* ---- INTELIGENCIA ARTIFICIAL (DAVID SÁNCHEZ RUIZ) ---/ Práctica unidad 4 - Sistema experto jurídico con SWI-PROLOG unidad4.pl*/ % --PRINCIPAL-mensaje :nl,writeln('PRÁCTICA UNIDAD4 (PROLOG) .... Cargada !!'),nl, nl,writeln('Esta práctica realiza un diagnostico de cáncer con datos de un paciente.'),nl, nl,writeln('Teclee "inicio." para comenzar la consulta......'),nl. :- mensaje. inicio :nl,writeln('INTRODUZCA DATOS DEL PACIENTE:'),nl, nl,write('ID paciente...........: '),read(ID), nl,write('worst perimeter.......: '),read(WP), nl,write('Factor certeza WP.....: '),read(FCWP), nl,write('worst concave points..: '),read(WCP), nl,write('Factor certeza WCP....: '),read(FCWCP), nl,write('worst area............: '),read(WA), nl,write('Factor certeza WA.....: '),read(FCWA), nl,write('mean texture..........: '),read(MT), nl,write('Factor certeza MT.....: '),read(FCMT), nl,write('mean concave points...: '),read(MCP), nl,write('Factor certeza MCP....: '),read(FCMCP), nl,write('error concave points..: '),read(ECP), nl,write('Factor certeza ECP....: '),read(FCECP), nl,write('worst concavity.......: '),read(WC), nl,write('Factor certeza WC.....: '),read(FCWC), regla(ID,WP,WCP,WA,MT,MCP,ECP,WC,FC,FC2,FCRES,FCWP,FCWCP,FCWA,FCMT,FCMCP,FCECP,FCWC). % --BASE DE HECHOS INICIAL-tiene(paciente,cancer). notiene(paciente,cancer). % --REGLAS Y FACTORES DE CERTEZA-regla(ID,WP,WCP,WA,MT,MCP,ECP,WC,FC,FC2,FCRES,FCWP,FCWCP,FCWA,FCMT,FCMCP,FCECP,FCWC):notiene(paciente,cancer), WP =< 102.05, FC is 311 / 320 * 100 * FCWP, nl,write('Se cumple la 1ª regla: worst perimeter =< 102.050 valor' : WP), nl,write('Diagnostico de cancer' : 'BENIGNO'), nl,write('Factor de certeza' : FC),write(' %'). regla(ID,WP,WCP,WA,MT,MCP,ECP,WC,FC,FC2,FCRES,FCWP,FCWCP,FCWA,FCMT,FCMCP,FCECP,FCWC):tiene(paciente,cancer), WCP > 0.151, FC is 161 / 163 * 100 * FCWCP, nl,write('Se cumple la 2ª regla: worst concave points > 0.151 valor' : WCP), nl,write('Diagnostico de cancer' : 'MALIGNO'), nl,write('Factor de certeza' : FC),write(' %'). regla(ID,WP,WCP,WA,MT,MCP,ECP,WC,FC,FC2,FCRES,FCWP,FCWCP,FCWA,FCMT,FCMCP,FCECP,FCWC):notiene(paciente,cancer), WA =< 957.45, MT =< 20.205, FC is 33 / 35 * FCWA,
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
Sistema experto jurídico con PROLOG
Versión 1.0
FC2 is FC + FCMT * (1 - FC), FCRES is FC2 * 100, nl,write('Se cumple la 3ª regla: worst area =< 957.45 and mean texture =< 20.205 valores' : WA - MT), nl,write('Diagnostico de cancer' : 'BENIGNO'), nl,write('Factor de certeza' : FCRES),write(' %'). regla(ID,WP,WCP,WA,MT,MCP,ECP,WC,FC,FC2,FCRES,FCWP,FCWCP,FCWA,FCMT,FCMCP,FCECP,FCWC):tiene(paciente,cancer), MCP > 0.051, FC is 26 / 26 * 100 * FCMCP, nl,write('Se cumple la 4ª regla: mean concave points > 0.051 valor' : MCP), nl,write('Diagnostico de cancer' : 'MALIGNO'), nl,write('Factor de certeza' : FC),write(' %'). regla(ID,WP,WCP,WA,MT,MCP,ECP,WC,FC,FC2,FCRES,FCWP,FCWCP,FCWA,FCMT,FCMCP,FCECP,FCWC):tiene(paciente,cancer), ECP =< 0.010, WC > 0.113, FC is 13 / 13 * FCECP, FC2 is FC + FCWC * (1 - FC), FCRES is FC2 * 100, nl,write('Se cumple la 5ª regla: error concave points =< 0.010 and worst concavity > 0.113 valores' : ECP - WC), nl,write('Diagnostico de cancer' : 'MALIGNO'), nl,write('Factor de certeza' : FCRES),write(' %'). regla(ID,WP,WCP,WA,MT,MCP,ECP,WC,FC,FC2,FCRES,FCWP,FCWCP,FCWA,FCMT,FCMCP,FCECP,FCWC):notiene(paciente,cancer), nl,write('Se cumple la 6ª regla: else B'), nl,write('Diagnostico de cancer' : 'BENIGNO').
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
Sistema experto jurídico con PROLOG
Versión 1.0
4.2. Consultas realizadas Consulta paciente cumpliéndose regla nº 1:
Como puede observarse con estos datos, el sistema comienza a analizar por la regla nº 1 y como se cumple, ya no sigue con la siguiente (las descarta), también muestra el tanto por ciento de factor de certeza obtenido y el resultado del diagnostico que es BENIGNO.
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
Sistema experto jurídico con PROLOG
Versión 1.0
Consulta paciente cumpliéndose regla nº 2:
Como puede observarse con estos datos, el sistema comienza a analizar por la regla nº 1, como no se cumple, pasa a tratar la regla nº 2 y esta si se cumple, con lo cual ya no sigue con la siguiente (las descarta), también muestra el t anto por ciento de factor de certeza obtenido y el resultado del diagnostico que es MALIGNO.
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
Sistema experto jurídico con PROLOG
Versión 1.0
Consulta paciente cumpliéndose regla nº 3:
Como puede observarse con estos datos, el sistema comienza a analizar por la regla nº 1, como no se cumple, pasa a tratar la regla nº 2, como no se cumple, pasa a tratar la regla nº 3 y esta si se cumple, con lo cual ya no sigue con la siguiente (las descarta), también muestra el tanto por ciento de factor de certeza obtenido y el resultado del diagnostico que es BENIGNO.
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
Sistema experto jurídico con PROLOG
Versión 1.0
Consulta paciente cumpliéndose regla nº 4:
Como puede observarse con estos datos, el sistema comienza a analizar por la regla nº 1, como no se cumple, pasa a tratar la regla nº 2, como no se cumple, pasa a tratar la regla nº 3, como no se cumple, pasa a tratar la regla nº 4 y esta si se cumple, con lo cual ya no sigue con la siguiente (las descarta), también muestra el tanto por ciento de factor de certeza obtenido y el resultado del diagnostico que es MALIGNO.
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
Sistema experto jurídico con PROLOG
Versión 1.0
Consulta paciente cumpliéndose regla nº 5:
Como puede observarse con estos datos, el sistema comienza a analizar las cuatro primeras reglas, no se cumplen y pasa a tratar la regla nº 5 que esta si se cumple, con lo cual ya no sigue con la siguiente (las descarta), también muestra el tanto por ciento de factor de certeza obtenido y el resultado del diagnostico que es MALIGNO.
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
Sistema experto jurídico con PROLOG
Versión 1.0
Consulta paciente cumpliéndose regla nº 6:
En este caso como no se cumplen ninguna de las cinco primeras reglas del if, pues el programa ejecuta la regla 6 del else, con lo cual el resultado del diagnostico es BENIGNO.
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
Sistema experto jurídico con PROLOG
Versión 1.0
5. CONCLUSIONES Esta práctica me ha costado bastante, primero entender lo que se estaba pidiendo para dar un enfoque y segundo cuando ya entendía lo que había que hacer, he tenido que aprender el lenguaje de ProLog (nuevo para mí), pero leyendo apuntes, buscando ejemplos por internet he dado con la solución y espero que sea por lo menos acertada con lo que se pide.
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA