Upload
david-sanchez
View
164
Download
0
Embed Size (px)
Citation preview
INTELIGENCIA ARTIFICIAL
GRADO INGENIERÍA INFORMÁTICA
UNIDAD 4 - ACTIVIDAD 1:
Sistema experto jurídico con
AUTOR:
DAVID SÁNCHEZ RUIZ Nº alumno: 21235597
Sistema experto jurídico con PROLOG Versión 1.0
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
CONTROL DE DOCUMENTACIÓN
Versión Fecha Resumen de los cambios producidos
1.0 11-03-2013 Creación del documento.
Realizado por: Aprobado por:
AUTOR Fecha: 11-03-2013 Fecha: dd-mm-aaaa
Sistema experto jurídico con PROLOG Versión 1.0
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
ÍNDICE
1. INTRODUCCIÓN ........................................................................................................................ 4
1.1. PROPOSITO ....................................................................................................................... 4
1.2. 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
Sistema experto jurídico con PROLOG Versión 1.0
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
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.
Sistema experto jurídico con PROLOG Versión 1.0
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
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.
Sistema experto jurídico con PROLOG Versión 1.0
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
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 ".").
Sistema experto jurídico con PROLOG Versión 1.0
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
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.
Sistema experto jurídico con PROLOG Versión 1.0
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
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” contiene 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.
Sistema experto jurídico con PROLOG Versión 1.0
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
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).
Sistema experto jurídico con PROLOG Versión 1.0
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
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. y nos pide que introduzcamos datos referentes a las pruebas del
paciente:
Sistema experto jurídico con PROLOG Versión 1.0
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
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,
Sistema experto jurídico con PROLOG Versión 1.0
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
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').
Sistema experto jurídico con PROLOG Versión 1.0
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
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.
Sistema experto jurídico con PROLOG Versión 1.0
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
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 tanto por ciento
de factor de certeza obtenido y el resultado del diagnostico que es MALIGNO.
Sistema experto jurídico con PROLOG Versión 1.0
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
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.
Sistema experto jurídico con PROLOG Versión 1.0
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
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.
Sistema experto jurídico con PROLOG Versión 1.0
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
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.
Sistema experto jurídico con PROLOG Versión 1.0
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
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.
Sistema experto jurídico con PROLOG Versión 1.0
INTELIGENCIA ARTIFICIAL GRADO INGENIERÍA INFORMÁTICA
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.