Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pia Slides 04
Pia Slides 04
Prolog en la IA
Universidad Veracruzana
Centro de Investigación en Inteligencia Artificial
Sebastián Camacho 5, Xalapa, Ver., México 91000
mailto:aguerra@uv.mx
https://www.uv.mx/personal/aguerra/pia
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 1 / 97
Búsquedas Ejemplo
Laberinto
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 2 / 97
Búsquedas Ejemplo
Representación de Conocimiento
I Adyacencia:
1 conecta(inicio ,2).
2 conecta(1 ,7).
3 conecta(2 ,8).
4 conecta(2 ,3). % % % agrega varias s o l u c i o n e s .
5 conecta(3 ,4).
6 conecta(3 ,9).
7 conecta(4 ,10).
8 ...
9 conectado(Pos1 , Pos2) : - conecta(Pos1 , Pos2).
10 conectado(Pos1 , Pos2) : - conecta(Pos2 , Pos1).
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 3 / 97
Búsquedas Ejemplo
Estrategia
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 4 / 97
Búsquedas Espacio de estados
Estados y Acciones
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 5 / 97
Búsquedas Espacio de estados
Espacio de estados
A A
BC BC
C B
B C
B ABC C
AC AB
A A
B C
AC AB
A A
B C
C B
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 6 / 97
Búsquedas Espacio de estados
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 7 / 97
Búsquedas Espacio de estados
Sucesor
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 8 / 97
Búsquedas Espacio de estados
Estados
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 9 / 97
Búsquedas Espacio de estados
Metas
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 10 / 97
Búsquedas Espacio de estados
Computo de sucesores
? - s ([[ a ] ,[ b ] ,[ c ]] , Succ ).
Succ = [[] , [a , b ] , [ c ]] ;
Succ = [[] , [a , c ] , [ b ]] ;
...
false .
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 11 / 97
Búsquedas Espacio de estados
Slowing Down
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 12 / 97
Búsquedas Espacio de estados
Meta
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 13 / 97
Búsquedas En Profundidad
Estrategia
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 14 / 97
Búsquedas En Profundidad
Corrida
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 15 / 97
Búsquedas En Profundidad
Evitando ciclos
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 16 / 97
Búsquedas En Profundidad
Corrida
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 17 / 97
Búsquedas En Profundidad
Limitando la profundidad
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 18 / 97
Búsquedas En Amplitud
Estrategia
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 19 / 97
Búsquedas En Amplitud
El código
1 solucion4(Inicio , Sol) : -
2 p r i m e r o E n A m p l i t u d ([[ Inicio ]] , Sol).
3
4 p r i m e r o E n A m p l i t u d ([[ Nodo | Camino ]| _ ] ,[ Nodo | Camino ]) : -
5 meta(Nodo).
6 p r i m e r o E n A m p l i t u d ([ Camino | Caminos ] , Sol) : -
7 extender(Camino , NuevosCaminos),
8 append(Caminos , NuevosCaminos , Caminos1),
9 p r i m e r o E n A m p l i t u d (Caminos1 , Sol).
10
11 extender([ Nodo | Camino ] , NuevosCaminos) : -
12 bagof([ NuevoNodo , Nodo | Camino ] ,
13 ( s(Nodo , NuevoNodo),
14 \+ (member(NuevoNodo , [ Nodo | Camino ]))),
15 NuevosCaminos), !.
16 extender(_ ,[]).
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 20 / 97
Búsquedas En Amplitud
Corrida
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 21 / 97
Búsquedas En Amplitud
Otro ejemplo
b c
d e f g
h j i k
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 22 / 97
Búsquedas En Amplitud
El programa
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 23 / 97
Búsquedas En Amplitud
Las búsquedas
? - solucion (a , R ).
R = [a , b , e , j ] ;
R = [a , c , f ] ;
false .
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 24 / 97
Búsquedas Primero el mejor
Búsquedas optimizadas
I Dado el siguiente mapa, la tarea es encontrar la ruta más corta entre
una ciudad inicial s y una ciudad meta t.
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 25 / 97
Búsquedas Primero el mejor
Heurísticas
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 26 / 97
Búsquedas Primero el mejor
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 27 / 97
Búsquedas Primero el mejor
I f (n) será construida para estimar el costo del mejor camino solución
entre el nodo inicial s y el nodo meta t, con la restricción de que el
camino pase por el nodo n.
I Supongamos que tal camino existe y que un nodo meta que minimiza
su costo es n. Entonces el estimado de f (n) puede calcularse como la
suma de dos términos:
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 28 / 97
Búsquedas Primero el mejor
Gráficamente
g(n)
n n' n''
h(n)
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 29 / 97
Búsquedas Primero el mejor
Búsqueda
I En los pasos iniciales el proceso 1 está más activo porque los valores f
en ese camino son más bajos que los del otro. Cuando el proceso 1
llega a c y el proceso 2 sigue en e, la situación cambia:
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 30 / 97
Búsquedas Primero el mejor
Gráficamente
I La búsqueda:
s
f(a)=2+5=7
e a
f(e)=2+7=9 f(b)=4+4=8
b
f(c)=6+4=10
f
f(f)=7+4=11
c
f(g)=9+2=11
g d
f(t)=11+0=11
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 31 / 97
Búsquedas Primero el mejor
Representación
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 32 / 97
Búsquedas Primero el mejor
Actualizaciones de F -valores
I A partir del árbol t(s, 7/0, [l(a, 7/2), l(e, 9/2)], el proceso continua
alcanzando el árbol:
t (s ,9/0 ,[ l (e ,9/2) , t (a ,10/2 ,[ t (b ,10/4 ,[ l (c ,10/6)])])])
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 33 / 97
Búsquedas Primero el mejor
El código
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 34 / 97
Búsquedas Primero el mejor
Expandir I
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 35 / 97
Búsquedas Primero el mejor
Expandir II
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 36 / 97
Búsquedas Primero el mejor
Expandir III
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 37 / 97
Búsquedas Primero el mejor
Expandir IV
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 38 / 97
Búsquedas Primero el mejor
Continuar
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 39 / 97
Búsquedas Primero el mejor
Corridas iniciales
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 40 / 97
Búsquedas Primero el mejor
Continuación de la corrida
I La tercer llamada es
expandir ([], t(s, 7/0, [l(a, 7/2), l(e, 9/2)]), 9999, _, si, Solucion).
I Como F /7 ≤ 9999 la evaluación continua.
I Se actualiza el umbral, obteniendo el mejor F-valor del resto de los
hijos de s. Como MejorF /9 < 999 el nuevo umbral es 9.
I Y se llama recursivamente a expandir el camino recorrido aumentado
con s|Camino, Arbol/l(a, 7/2), el Umbral1/9 y el resto sigue igual.
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 41 / 97
Búsquedas Primero el mejor
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 42 / 97
Búsquedas Primero el mejor
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 43 / 97
Arboles de Decisión Principios
Introducción
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 44 / 97
Arboles de Decisión Principios
I Cada nodo del árbol está conformado por un atributo y puede verse
como la pregunta: ¿Qué valor tiene este atributo en el caso a
clasificar?
I Las ramas que salen de los nodos, corresponden a los posibles valores
del atributo correspondiente.
Atributo
Cielo Clase
Valor
nublado
soleado lluvioso
Húmedad si Viento
no si no si
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 45 / 97
Arboles de Decisión Principios
Cielo Clase
Valor
nublado
soleado lluvioso
Húmedad si Viento
no si no si
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 46 / 97
Arboles de Decisión Principios
Algoritmo clasificación
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 47 / 97
Arboles de Decisión Principios
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 48 / 97
Arboles de Decisión Principios
Problemas adecuados
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 49 / 97
Arboles de Decisión Inducción
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 50 / 97
Arboles de Decisión Inducción
Particiones
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 51 / 97
Arboles de Decisión Inducción
Entropía
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 52 / 97
Arboles de Decisión Inducción
Ejemplo (volados)
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 53 / 97
Arboles de Decisión Inducción
Gráficamente
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 54 / 97
Arboles de Decisión Inducción
Regresando al tenis
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 55 / 97
Arboles de Decisión Inducción
Ganancia de Información
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 56 / 97
Arboles de Decisión Inducción
Ganancia y tenis
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 57 / 97
Arboles de Decisión Inducción
Algoritmo de inducción
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 58 / 97
Arboles de Decisión Inducción
Consideraciones
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 59 / 97
Arboles de Decisión Implementación
Interfaz
1 : - dynamic
2 ejemplo /3 ,
3 nodo /3.
4
5 id3 : - id3(1). % Umbral = 1 , por default .
6
7 id3(Umbral) : -
8 reset ,
9 write(’ Con que archivo CSV desea trabajar : ’),
10 read(ArchCSV),
11 cargaEjs(ArchCSV , Atrs),
12 findall(N , ejemplo(N ,_ , _), Inds), % Obtiene indices de ejemplos
13 write(’ Tiempo de inducci ó n : ’),
14 time(inducir(Inds , raiz , Atrs , Umbral)),
15 imprimeArbol , !.
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 60 / 97
Arboles de Decisión Implementación
1 ejemplo(1 , no ,[ cielo = soleado , temperatura = alta , humedad = alta , viento = debil ]).
2 ejemplo(2 , no ,[ cielo = soleado , temperatura = alta , humedad = alta , viento = fuerte ]).
3 ejemplo(3 , si ,[ cielo = nublado , temperatura = alta , humedad = alta , viento = debil ]).
4 ejemplo(4 , si ,[ cielo = lluvioso , temperatura = templada , humedad = alta , viento = debil ]).
5 ejemplo(5 , si ,[ cielo = lluvioso , temperatura = fresca , humedad = normal , viento = debil ]).
6 ejemplo(6 , no ,[ cielo = lluvioso , temperatura = fresca , humedad = normal , viento = fuerte ]).
7 ejemplo(7 , si ,[ cielo = nublado , temperatura = fresca , humedad = normal , viento = fuerte ]).
8 ejemplo(8 , no ,[ cielo = soleado , temperatura = templada , humedad = alta , viento = fuerte ]).
9 ejemplo(9 , si ,[ cielo = soleado , temperatura = fresca , humedad = normal , viento = debil ]).
10 ejemplo(10 , si ,[ cielo = lluvioso , temperatura = templada , humedad = normal , viento = debil ]).
11 ejemplo(11 , si ,[ cielo = soleado , temperatura = nublado , humedad = normal , viento = fuerte ]).
12 ejemplo(12 , si ,[ cielo = nublado , temperatura = templado , humedad = alta , viento = fuerte ]).
13 ejemplo(13 , si ,[ cielo = nublado , temperatura = alta , humeda = normal , viento = debil ]).
14 ejemplo(14 , no ,[ cielo = lluvioso , temperatura = templada , humedad = alta , viento = fuerte ]).
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 61 / 97
Arboles de Decisión Implementación
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 62 / 97
Arboles de Decisión Implementación
leerCSV
1 ? - leerCSV (" tenis . csv " , Atrs , Ejs ) , dominios ( Atrs , Ejs , Doms ).
2 14 ejemplos de entrenamiento cargados .
3 Atrs = [ cielo , temperatura , humedad , viento , jugarTenis ] ,
4 Ejs = [[ soleado , alta , alta , debil , no ] , [ soleado , alta , alta ,
5 fuerte , no ] , [ nublado , alta , alta , debil , si ] , ...] ,
6 Doms = [[ cielo , [ soleado , nublado , lluvioso ]] , [ temperatura ,
7 [ alta , templada , fresca ]] , [ humedad , [ alta , normal ]] ,
8 [ viento , [ debil , fuerte ]] , [ jugarTenis , [ no , si ]]].
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 63 / 97
Arboles de Decisión Implementación
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 64 / 97
Arboles de Decisión Implementación
csv2ejs: corrida
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 65 / 97
Arboles de Decisión Implementación
csv2ejs: Definición
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 66 / 97
Arboles de Decisión Implementación
cargaEjs
1 ? - listing ( ejemplo ).
2 : - dynamic ejemplo /3.
3
4 ejemplo (1 , no , [ cielo = soleado , temperatura = alta , humedad = alta ,
5 viento = debil ]).
6 ejemplo (2 , no , [ cielo = soleado , temperatura = alta , humedad = alta ,
7 viento = fuerte ]).
8 ...
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 67 / 97
Arboles de Decisión Implementación
1 ? - listing ( nodo ).
2 : - dynamic nodo /3.
3
4 nodo (1 , cielo = lluvioso , raiz ).
5 nodo (2 , viento = fuerte , 1).
6 nodo ( hoja , [ no /2] , 2).
7 nodo (3 , viento = debil , 1).
8 nodo ( hoja , [ si /3] , 3).
9 nodo (4 , cielo = nublado , raiz ).
10 nodo ( hoja , [ si /4] , 4).
11 nodo (5 , cielo = soleado , raiz ).
12 nodo (6 , humedad = normal , 5).
13 nodo ( hoja , [ si /2] , 6).
14 nodo (7 , humedad = alta , 5).
15 nodo ( hoja , [ no /3] , 7).
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 68 / 97
Arboles de Decisión Implementación
imprimeArbol
1 imprimeArbol : -
2 imprimeArbol(raiz ,0).
3
4 imprimeArbol(Padre , _) : -
5 nodo(hoja , Clase , Padre), ! ,
6 write(’ = > ’), write(Clase).
7
8 imprimeArbol(Padre , Pos) : -
9 findall(Hijo , nodo(Hijo ,_ , Padre), Hijos),
10 Pos1 is Pos +2 ,
11 imprimeLista(Hijos , Pos1).
12
13 imprimeLista([] , _) : - !.
14
15 imprimeLista([ N | T ] , Pos) : -
16 nodo(N , Test , _),
17 nl , tab(Pos), write(Test),
18 imprimeArbol(N , Pos),
19 imprimeLista(T , Pos).
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 69 / 97
Arboles de Decisión Implementación
Arbol impreso
1 cielo = lluvioso
2 viento = fuerte = > [ no /2]
3 viento = debil = > [ si /3]
4 cielo = nublado = > [ si /4]
5 cielo = soleado
6 humedad = normal = > [ si /2]
7 humedad = alta = > [ no /3]
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 70 / 97
Arboles de Decisión Implementación
Inducción: Caso 1
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 71 / 97
Arboles de Decisión Implementación
Inducción: Caso 2
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 72 / 97
Arboles de Decisión Implementación
Inducción: Caso 3
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 73 / 97
Arboles de Decisión Implementación
Inducción: Caso 4
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 74 / 97
Arboles de Decisión Implementación
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 75 / 97
Arboles de Decisión Implementación
1 %% % distr( + Ejs , - D i s t r C l a s e E j s )
2 %% % Computa la D i s t r i b u c i ó n de clases para el c o n j u n t o de
3 %% % Ejs . La notaci ó n X ^ Meta causa que X no sea i n s t a n c i a d a
4 %% % al s o l u c i o n a r la Meta .
5
6 distr(Ejs , DistClaseEjs) : -
7 % Extrae Valores de Clase de los Ejs
8 setof(Clase , Ej ^ AVs ^(member(Ej , Ejs),
9 ejemplo(Ej , Clase , AVs)), Clases),
10 % Cuenta la d i s t r i b u c i ó n de los valores para la Clase
11 cuentaClases(Clases , Ejs , DistClaseEjs).
1 ?- setof ( Clase ,
2 Ej ^ AVs ^( member ( Ej ,[1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14]) ,
3 ejemplo ( Ej , Clase , AVs )) ,
4 Clases ).
5 Clases = [ no , si ].
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 76 / 97
Arboles de Decisión Implementación
1 cuentaClases([] ,_ ,[]) : - !.
2 cuentaClases([ Clase | Clases ] , Ejs ,
3 [ Clase / NumEjsEnClase | RestoCuentas ]) : -
4 % Extrae los e j e m p l o s con clase Clase en la lista Cuentas
5 findall(Ej ,(member(Ej , Ejs), ejemplo(Ej , Clase , _)), EjsEnClase),
6 % Computa cuantos e j e m p l o s hay en la Clase
7 length(EjsEnClase , NumEjsEnClase), ! ,
8 % Cuentas para el resto de los valores de la clase
9 cuentaClases(Clases , Ejs , RestoCuentas).
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 77 / 97
Arboles de Decisión Implementación
El mejor atributo I
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 78 / 97
Arboles de Decisión Implementación
El mejor atributo II
1 ? - findall (N , ejemplo (N ,_ , _ ) , E ) ,
2 eligeAtr (E ,[ cielo , temperatura , humedad , viento ] ,A ,V , R ).
3 | E = [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9|...] ,
4 A = cielo ,
5 V = [ lluvioso , nublado , soleado ] ,
6 R = [ temperatura , humedad , viento ].
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 79 / 97
Arboles de Decisión Implementación
1 c o n t e n i d o I n f o r m a c i o n (Ejs , NumEjs , I) : -
2 setof(Clase ,
3 Ej ^ AVs ^(member(Ej , Ejs), ejemplo(Ej , Clase , AVs)),
4 Clases), ! ,
5 sumaTerms(Clases , Ejs , NumEjs , I).
6
7 sumaTerms([] ,_ ,_ ,0) : - !.
8 sumaTerms([ Clase | Clases ] , Ejs , NumEjs , Info) : -
9 findall(Ej ,(member(Ej , Ejs), ejemplo(Ej , Clase , _)), EjsEnClase),
10 length(EjsEnClase , NumEjsEnClase),
11 sumaTerms(Clases , Ejs , NumEjs , I),
12 Info is I -
13 ( NumEjsEnClase / NumEjs)*(log(NumEjsEnClase / NumEjs)/ log(2)).
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 80 / 97
Arboles de Decisión Implementación
El mejor atributo IV
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 81 / 97
Arboles de Decisión Implementación
El mejor atributo V
1 i n f o r m a c i o n R e s i d u a l ([] ,_ ,0) : - !.
2 i n f o r m a c i o n R e s i d u a l ([ Part | Parts ] , NumEjs , IR) : -
3 length(Part , NumEjsPart),
4 c o n t e n i d o I n f o r m a c i o n (Part , NumEjsPart , I), ! ,
5 i n f o r m a c i o n R e s i d u a l (Parts , NumEjs , R),
6 IR is R + I * NumEjsPart / NumEjs .
7
8 s e p a r a E n S u b C o nj s ([] ,_ ,_ ,[]) : - !.
9 s e p a r a E n S u b C o nj s ([ Val | Vals ] , Ejs , Atr ,[ Part | Parts ]) : -
10 subconj(Ejs , Atr = Val , Part), ! ,
11 s e p a r a E n S u b C o nj s (Vals , Ejs , Atr , Parts).
12
13 subconj([] , _ ,[]) : - !.
14 subconj([ Ej | Ejs ] , Atr ,[ Ej | RestoEjs ]) : -
15 ejemplo(Ej ,_ , AVs),
16 member(Atr , AVs), ! ,
17 subconj(Ejs , Atr , RestoEjs).
18 subconj([ _ | Ejs ] , Atr , RestoEjs) : -
19 subconj(Ejs , Atr , RestoEjs).
20
21 vals([] ,_ , Vals , Vals) : - !.
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 82 / 97
Arboles de Decisión Implementación
El mejor atributo VI
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 83 / 97
Arboles de Decisión Implementación
1 ? - ? - findall (N , ejemplo (N ,_ , _ ) , E ) ,
2 findall (( A - Valores )/ Gain ,
3 ( member (A ,[ cielo , temperatura , humedad , viento ]) ,
4 vals (E ,A ,[] , Valores ) ,
5 separaEnSubConjs ( Valores ,E ,A , Ess ) ,
6 i n fo r m ac i o nR e s id u a l ( Ess ,14 , R ) ,
7 Gain is 0.940286 - R ) ,
8 All ).
9 | E = [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9|...] ,
10 All = [( cielo -[ lluvioso , nublado , soleado ])/0.24674986110380803 ,
11 ( temperatura -[ fresca , templada , alta ])/0.029222606988323685 ,
12 ( humedad -[ normal , alta ])/0.1518355426917104 ,
13 ( viento -[ fuerte , debil ] ) / 0 . 0 4 8 1 2 7 0 7 1 7 3 7 6 3 8 3 0 5 ] .
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 84 / 97
Arboles de Decisión Implementación
Partición
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 85 / 97
Arboles de Decisión Implementación
1 ? - id3 .
2 Con que archivo CSV desea trabajar : " tenis . csv ".
3 14 ejemplos de entrenamiento cargados .
4 Tiempo de inducci ó n :
5 % 5 ,264 inferences , 0.001 CPU in 0.001 seconds (95 % CPU , 6326923 Lip
6
7 cielo = lluvioso
8 viento = fuerte = > [ no /2]
9 viento = debil = > [ si /3]
10 cielo = nublado = > [ si /4]
11 cielo = soleado
12 humedad = normal = > [ si /2]
13 humedad = alta = > [ no /3]
14 true .
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 86 / 97
Arboles de Decisión Implementación
Predicados auxiliares I
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 87 / 97
Arboles de Decisión Implementación
Predicados auxiliares II
21 maximo([ X / M | T ] , Y / N) : -
22 maximo(T , Z / K),
23 ( M >K , Y / N = X / M ; Y / N = Z / K), !.
24
25 % elimina las o c u r r e n c i a s de ejemplo y nodo en el espacio de trabaj
26
27 reset : -
28 retractall(ejemplo(_ ,_ , _)),
29 retractall(nodo(_ ,_ , _)).
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 88 / 97
Consideraciones
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 89 / 97
Consideraciones
I El ejemplo con ruido será filtrado junto con los ejemplos 9 y 11 (cielo
= soleado y humedad = normal), que son ejemplos positivos. Dado
que el nuevo ejemplo es negativo, ID3 buscará refinar el árbol a partir
del nodo humedad, agregando un atributo más al árbol.
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 90 / 97
Consideraciones
Estrategias de solución
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 91 / 97
Consideraciones
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 92 / 97
Consideraciones
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 93 / 97
Consideraciones
Poda de reglas
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 94 / 97
Consideraciones
Atributos continuos
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 95 / 97
Consideraciones
I Split information:
c
X |Si | |Si |
splitInformation(S, A) = − log2
i=1
|S| |S|
I Gain ratio:
gain(S, A)
gainRatio(S, A) =
splitInformatio(S, A)
I Problemas: denominador indefinido cuando |Si | ≈ |S|.
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 96 / 97
Consideraciones
Referencias I
JR Quinlan. “Induction of Decision Trees”. En: Machine Learning 1 (1986), págs. 81-106.
Dr. Alejandro Guerra-Hernández (UV) Programación para la Inteligencia Artificial MIA 2018 97 / 97