Post on 10-Oct-2015
description
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
1/214
Inteligencia
artificial avanzadaRal Bentez
Gerard Escudero
Samir Kanaan
PID_00174137
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
2/214
Los textos e imgenes publicados en esta obra estn sujetos excepto que se indique lo contrario auna licencia de Reconocimiento-NoComercial-SinObraDerivada (BY-NC-ND) v.3.0 Espaa deCreative Commons. Podis copiarlos, distribuirlos y transmitirlos pblicamente siempre que citisel autor y la fuente (FUOC. Fundaci per a la Universitat Oberta de Catalunya), no hagis un usocomercial y no hagis una obra derivada. La licencia completa se puede consultar en
http://creativecommons.org/licenses/by-nc-nd/3.0/es/legalcode.es
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
3/214
CC-BY-NC-ND PID_00174137 Inteligencia artificial avanzada
ndice
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1. Introduccin a la inteligencia artificial (IA). . . . . . . . . . . . . . . . . 9
1.1. Neuronas y transistores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2. Breve historia de la IA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3. mbitos de aplicacin de la inteligencia artificial . . . . . . . . . . . . . 15
2. Recomendadores y agrupamientos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1. Mtricas y medidas de similitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.1.1. Ejemplo de aplicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.1.2. Distancia eucldea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.3. Correlacin de Pearson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1.4. Procesamiento de datos reales .. . . . . . . . . . . . . . . . . . . . . . . 25
2.1.5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2. Recomendadores basados en memoria . .. . . . . . . . . . . . . . . . . . . . . . 26
2.2.1. Conceptos generales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2.2. Aproximaciones simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2.3. Recomendacin ponderada. . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2.4. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3. Algoritmos de agrupamiento (clustering) . . . . . . . . . . . . . . . . . . . . . . 29
2.3.1. Ejemplo de aplicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3.2. Conceptos generales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3.3. Agrupamiento jerrquico. Dendrogramas .. . . . . . . . . . . 32
2.3.4. k-medios (k-means) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3.5. c-medios difuso (Fuzzy c-means) . . . . . . . . . . . . . . . . . . . . . . 37
2.3.6. Agrupamiento espectral (spectral clustering) . . . . . . . . . . . 37
2.3.7. Recomendadores basados en modelos . . . . . . . . . . . . . . . . 39
3. Extraccin y seleccin de atributos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.1. Tcnicas de factorizacin matricial. .. . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.1.1. Descomposicin en valores singulares (SVD) . . . . . . . . . 43
3.1.2. Anlisis de componentes principales (PCA). . . . . . . . . . . 47
3.1.3. Anlisis de componentes independientes (ICA) . . . . . . 61
3.1.4. Factorizacin de matrices no-negativas (NMF). . . . . . . . 72
3.2. Discriminacin de datos en clases. .. . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.2.1. Anlisis de discriminantes lineales (LDA) . . . . . . . . . . . . . 79
3.3. Visualizacin de datos mutidimensionales . . . . . . . . . . . . . . . . . . . . 86
3.3.1. Escalamiento multidimensional (MDS) . . . . . . . . . . . . . . . 86
4. Clasificacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
4/214
CC-BY-NC-ND PID_00174137 Inteligencia artificial avanzada
4.1.1. Categorizacin de textos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.1.2. Aprendizaje automtico para clasificacin . . . . . . . . . . . . 96
4.1.3. Tipologa de algoritmos para clasificacin . . . . . . . . . . . . 97
4.2. Mtodos basados en modelos probabilsticos . . . . . . . . . . . . . . . . . 98
4.2.1. Nave Bayes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.2.2. Mxima entropa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024.3. Mtodos basados en distancias .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.3.1. kNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.3.2. Clasificador lineal basado en distancias. . . . . . . . . . . . . . . 108
4.3.3. Clusteringdentro de clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
4.4. Mtodos basados en reglas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
4.4.1. rboles de decisin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
4.4.2. AdaBoost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
4.5. Clasificadores lineales y mtodos basados en kernels . . . . . . . . . 125
4.5.1. Clasificador lineal basado en producto escalar . . . . . . . . 125
4.5.2. Clasificador lineal con kernel . .. . . . . . . . . . . . . . . . . . . . . . . 130
4.5.3. Kernels para tratamiento de textos .. . . . . . . . . . . . . . . . . . 135
4.5.4. Mquinas de vectores de soporte .. . . . . . . . . . . . . . . . . . . . 143
4.6. Protocolos de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
4.6.1. Protocolos de validacin. .. .. . . . . . . . . . . . . . . . . . . . . . . . . . 157
4.6.2. Medidas de evaluacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
4.6.3. Tests estadsticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
4.6.4. Comparativa de clasificadores . . . . . . . . . . . . . . . . . . . . . . . . 161
5. Optimizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1645.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
5.1.1. Tipologa de los mtodos de optimizacin. . . . . . . . . . . . 167
5.1.2. Caractersticas de los metaheursticos de optimizacin 167
5.2. Optimizacin mediante multiplicadores de Lagrange . . . . . . . . . 168
5.2.1. Descripcin del mtodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
5.2.2. Ejemplo de aplicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
5.2.3. Anlisis del mtodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
5.3. Recoccin simulada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
5.3.1. Descripcin del mtodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
5.3.2. Ejemplo de aplicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1735.3.3. Anlisis del mtodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
5.3.4. Cdigo fuente en Python .. . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
5.4. Algoritmos genticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
5.4.1. Descripcin del mtodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
5.4.2. Ampliaciones y mejoras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
5.4.3. Ejemplo de aplicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
5.4.4. Anlisis del mtodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
5.4.5. Cdigo fuente en Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
5.5. Colonias de hormigas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
5.5.1. Descripcin del mtodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
5.5.2. Ejemplo de aplicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
5.5.3. Anlisis del mtodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
5/214
CC-BY-NC-ND PID_00174137 Inteligencia artificial avanzada
5.5.4. Cdigo fuente en Python .. . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
5.6. Optimizacin con enjambres de partculas. . . . . . . . . . . . . . . . . . . . 193
5.6.1. Descripcin del mtodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
5.6.2. Ejemplo de aplicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
5.6.3. Anlisis del mtodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
5.6.4. Cdigo fuente en Python .. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1995.7. Bsqueda tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
5.7.1. Descripcin del mtodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
5.7.2. Ejemplo de aplicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
5.7.3. Anlisis del mtodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
5.7.4. Cdigo fuente en Python .. . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
6. Anexo: conceptos bsicos de estadstica. . . . . . . . . . . . . . . . . . . . . . . 208
Actividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
6/214
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
7/214
CC-BY-NC-NDPID_00174137 7 Inteligencia artificial avanzada
Introduccin
Este mdulo est organizado de la forma siguiente: los mtodos de bsqueda
y optimizacin se describen en el apartado 2, donde se detallarn las tcnicas
de extraccin de informacin de bases de datos que contengan informacin
semntica, como por ejemplo web de noticias o las conversaciones entre di-
versos miembros de una red social.
Las tcnicas de caracterizacin de datos se estudiarn en el apartado 3, des-
cribiendo las tcnicas principales basadas en descomposicin de los datos en
modos principales. En el apartado 3 tambin se estudiarn las tcnicas de ex-traccin de caractersticas y un mtodo de visualizacin de datos multidimen-
sionales.
Los algoritmos de clasificacin de datos se presentan en el apartado 4, en el
que se estudiarn los principales mtodos de clasificacin y reconocimiento
de patrones.
En el apartado 5 se explican algunas tcnicas avanzadas de inteligencia evolu-
tiva, algoritmos que utilizan reglas heursticas inspiradas en el funcionamien-
to evolutivo de los sistemas biolgicos.
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
8/214
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
9/214
CC-BY-NC-NDPID_00174137 9 Inteligencia artificial avanzada
1. Introduccin a la inteligencia artificial (IA).
1.1. Neuronas y transistores
Empezaremos planteando la pregunta filosfica fundamental, y as podremos
dedicar nuestros esfuerzos a aspectos de carcter cientifico-tcnico.
.
Es fsicamente posible que una mquina presente capacidad de abs-
traccin similar a la inteligencia humana?
Para responder esta pregunta, hay que tener en cuenta que el cerebro hu-
mano es el sistema de reconocimiento de patrones ms complejo y eficiente
que conocemos. Los humanos realizamos acciones tan sorprendentes como
identificar a un conocido entre la multitud o reconocer de odo el solista de
un concierto para violn. En el cerebro humano, las funciones cognitivas se
realizan mediante la activacin coordinada de unas 90.000.000.000 clulas
nerviosas interconectadas mediante enlaces sinpticos. La activacin neuro-nal sigue complejos procesos biofsicos que garantizan un funcionamiento
robusto y adaptativo, y nos permite realizar funciones como el procesado de
informacin sensorial, la regulacin fisiolgica de los rganos, el lenguaje o la
abstraccin matemtica.
Lecturascomplementarias
C. Koch(1999).Biophysicsof Computation: Information
Processing in Single Neurons.USA: Oxford UniversityPress.
La neurociencia actual todava no aporta una descripcin detallada sobre c-
mo la activacin individual de las neuronas da lugar a la formacin de repre-
sentaciones simblicas abstractas. Lo que s parece claro es que en la mayora
de procesos cognitivos existe una separacin de escalas entre la dinmica a ni-
vel neuronal y la aparicin de actividad mental abstracta. Esta separacin deescalas supone la ruptura del vnculo existente entre el hardware (neuronas)
y el software de nuestro cerebro (operaciones abstractas, estados mentales),
y constituye la hiptesis de partida para que los smbolos abstractos puedan
ser manipulados por sistemas artificiales que no requieran un substrato fisio-
lgico natural. La posibilidad de manipular expresiones lgicas y esquemas
abstractos mediante sistemas artificiales es la que permite la existencia de lo
que conocemos comointeligencia artificial.
Por supuesto, el cerebro no es el nico sistema fsico en el que se produce
una separacin de la dinmica a diferentes escalas. Esta caracterstica tambin
se observa en otros muchos sistemas complejos que presentan fenmenos de
autoorganizacin no lineal. De la misma forma que es posible describir las co-
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
10/214
CC-BY-NC-NDPID_00174137 10 Inteligencia artificial avanzada
rrientes ocenicas sin necesidad de referirse al movimiento microscpico de
las molculas de agua, el pensamiento abstracto puede analizarse sin necesi-
dad de referirse la activacin elctrica cerebral a nivel neuronal.
.
En cualquier caso, una de las cuestiones de mayor relevancia y an no
resueltas de la neurociencia actual es saber si existen procesos mentales
-como la conciencia, la empata o la creatividad-, que estn intrnse-
camente ligados a la realidad biofsica del sistema nervioso humano y
sean por tanto inaccesibles a un sistema artificial.
Otro aspecto importante en el funcionamiento del cerebro humano es el pa-
pel que tiene la experiencia y el aprendizaje. El cerebro humano actual no es
solo resultado de una evolucin biolgica basada en alteraciones genticas,sino tambin del conjunto de tcnicas y conocimientos que la humanidad
ha ido acumulando con el tiempo. Aspectos como la cultura o el lenguaje,
transmitidas de generacin en generacin, tambin determinan la forma en
la que se establecen patrones de activacin neuronal en nuestro cerebro, y por
lo tanto, contribuyen a la emergencia de procesos de abstraccin en los que
se basan reas como las matemticas o la literatura. A nivel biolgico, exis-
ten diversos mecanismos que permiten la existencia de procesos de activacin
neuronal dependientes de la experiencia previa y del entrenamiento. El me-
canismo principal es conocido como plasticidad sinptica, un fenmeno por el
que las conexiones sinpticas entre neuronas modulan su intensidad en fun-
cin de la actividad que hayan experimentado previamente. De esta forma,
cuanto ms veces se active un cierto canal de activacin neuronal, ms fcil
resultar activarlo en el futuro e integrarlo a nuevos procesos cognitivos de
mayor complejidad.
La plasticidad neuronal es la base de la mayora de procesos de aprendizaje y
memoria. A este paradigma se le conoce como aprendizaje reforzado, ya que la
actividad sinptica se refuerza en funcin del nmero de veces que se establece
una conexin entre neuronas. Esta regla que relaciona la actividad neuronalcon la funcin cognitiva, se le conoce comoregla de Hebbpor los trabajos del
neuropsiclogo canadiense Donald O. Hebb publicados en su libro de 1949
The organization of behavior. Algunas tcnicas de inteligencia artificial como
los mtodos deaprendizaje supervisadotambin se basan en reglas similares que
permiten modificar de forma adaptativa la forma en que el sistema artificial
procesa la informacin.
La inteligencia artificial (IA) es una disciplina acadmica relacionada con la
teora de la computacin cuyo objetivo es emular algunas de las facultades in-
telectuales humanas en sistemas artificiales. Con inteligencia humana nos re-ferimos tpicamente a procesos de percepcin sensorial (visin, audicin, etc.)
y a sus consiguientes procesos de reconocimiento de patrones, por lo que las
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
11/214
CC-BY-NC-NDPID_00174137 11 Inteligencia artificial avanzada
aplicaciones ms habituales de la IA son el tratamiento de datos y la identifica-
cin de sistemas. Eso no excluye que la IA, desde sus inicios en la dcada del
1960, haya resuelto problemas de carcter ms abstracto como la demostra-
cin de teoremas matemticos, la adquisicin del lenguaje, el jugar a ajedrez
o la traduccin automtica de textos. El diseo de un sistema de inteligencia
artificial normalmente requiere la utilizacin de herramientas de disciplinasmuy diferentes como el clculo numrico, la estadstica, la informtica, el
procesado de seales, el control automtico, la robtica o la neurociencia. Por
este motivo, pese a que la inteligencia artificial se considera una rama de la
informtica terica, es una disciplina en la que contribuyen de forma activa
numerosos cientficos, tcnicos y matemticos. En algunos aspectos, adems,
se beneficia de investigaciones en reas tan diversas como la psicologa, la
sociologa o la filosofa.
Pese a que se han producido numerosos avances en el campo de la neuro-ciencia desde el descubrimiento de la neurona por Santiago Ramn y Cajal a
finales del siglo XIX, las tecnologas actuales estn muy lejos de poder dise-
ar y fabricar sistemas artificiales de la complejidad del cerebro humano. De
hecho, a da de hoy estamos lejos de reproducir de forma sinttica las pro-
piedades electroqumicas de la membrana celular de una sola neurona. Pero
como hemos comentado anteriormente, la manipulacin de conceptos y ex-
presiones abstractas no est supeditada a la existencia de un sistema biolgico
de computacin. En definitiva, un ordenador no es ms que una mquina que
procesa representaciones abstractas siguiendo unas reglas predefinidas.
Avances de la microelectrnica
En la actualidad, la nica tecnologa que permite implementar sistemas de inteligenciaartificial son los sistemas electrnicos basados en dispositivos de estado slido como eltransistor. En efecto, gracias a los grandes avances de la microelectrnica desde los aossetenta, los ordenadores actuales disponen de una gran capacidad de clculo que permi-te la implementacin de sistemas avanzados de tratamiento de datos y reconocimientode patrones. Los sistemas digitales basados en transistor constituyen una tecnologa r-pida, robusta y de tamao reducido que permite la ejecucin secuencial de operacionesaritmtico-lgicas. En muchas aplicaciones concretas, los sistemas artificiales pueden lle-gar a presentar un rendimiento notablemente mejor que el del propio cerebro humano.Este es el caso, por ejemplo, en aquellas situaciones que requieran gestionar grandescantidades de datos o que exigan una rpida ejecucin de clculos matemticos.
Un sistema de inteligencia artificial requiere de una secuencia finita de ins-
trucciones que especifique las diferentes acciones que ejecuta la computadora
para resolver un determinado problema. Esta secuencia de instrucciones cons-
tituye laestructura algortmicadel sistema de inteligencia artificial.
.
Se conoce como mtodo efectivo o algoritmo al procedimiento para en-
contrar la solucin a un problema mediante la reduccin del mismo a
un conjunto de reglas.
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
12/214
CC-BY-NC-NDPID_00174137 12 Inteligencia artificial avanzada
En ocasiones, los sistemas de IA resuelven problemas de forma heursticame-
diante un procedimiento de ensayo y error que incorpora informacin rele-
vante basada en conocimientos previos. Cuando un mismo problema puede
resolverse mediante sistemas naturales (cerebro) o artificiales (computadora),
los algoritmos que sigue cada implementacin suelen ser completamente di-
ferentes puesto que el conjunto de instrucciones elementales de cada sistemason tambin diferentes. El cerebro procesa la informacin mediante la activa-
cin coordinada de redes de neuronas en reas especializadas (cortex visual,
cortex motor, etc.). En el sistema nervioso, los datos se transmiten y reciben
codificados en variables como la frecuencia de activacin de las neuronas o
los intervalos en los que se generan los potenciales de accin neuronales. El
elevado nmero de neuronas que intervienen en un proceso de computacin
natural hace que las fluctuaciones fisiolgicas tengan un papel relevante y
que los procesos computacionales se realicen de forma estadstica mediante la
actividad promediada en subconjuntos de neuronas.
En un sistema IA, en cambio, las instrucciones bsicas son las propias de una
computadora, es decir operaciones aritmetico-lgicas, de lectura/escritura de
registros y de control de flujo secuencial. La tabla 1 describe las diferencias
fundamentales entre sistemas de inteligencia artificial y natural en las escalas
ms relevantes.
Tabla 1. Comparacin entre inteligencia natural y artificial a diferentes niveles
Nivel Natural Artificial
Abstraccin Representacin y manipulacin Representacin y manipulacin
de objetos abstractos de objetos abstractosComputacional Activacin coordinada Algoritmo /
de reas cerebrales procedimiento efectivo
Programacin Conexiones sinpticas Secuencia de operaciones
plasticidad artimtico-lgicas
Arquitectura Redes excitatorias CPU +
e inhibitorias memoria
Hardware Neurona Transistor
.
La idea principal es que, a pesar de las enormes diferencias entre sis-temas naturales y artificiales, a un cierto nivel de abstraccin ambos
pueden describirse como sistemas de procesado de objetos abstractos
mediante un conjunto de reglas.
1.2. Breve historia de la IA
El nacimiento de la IA como disciplina de investigacin se remonta a 1956,
durante una conferencia sobre informtica terica que tuvo lugar en el Dart-mouth College (Estados Unidos). A esa conferencia asistieron algunos de los
cientficos que posteriormente se encargaron de desarrollar la disciplina en
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
13/214
CC-BY-NC-NDPID_00174137 13 Inteligencia artificial avanzada
diferentes mbitos y de dotarla de una estructura terica y computacional
apropiada. Entre los asistentes estaban John McCarthy, Marvin Minsky, Allen
Newell y Herbert Simon. En la conferencia, A. Newell y H. Simon presentaron
un trabajo sobre demostracin automtica de teoremas al que denominaron
Logic Theorist. El Logic Theorist fue el primer programa de ordenador que emu-
laba caractersticas propias del cerebro humano, por lo que es considerado elprimer sistema de ingeligencia artificial de la historia. El sistema era capaz de
demostrar gran parte de los teoremas sobre lgica matemtica que se presenta-
ban en los tres volmenes de losPrincipia Mathematicade Alfred N. Whitehead
y Bertrand Russell (1910-1913).
Minsky y McCarthy fundaron ms tarde el laboratorio de inteligencia artificial
del Massachusets Institute of Technology (MIT), uno de los grupos pioneros
en el mbito. La actividad de los aos cincuenta es consecuencia de traba-
jos tericos de investigadores anteriores como Charles Babbage (autor de laMquina analtica, 1842), Kurt Gdel (teorema de incompletitud, 1930), Alan
Turing (mquina universal, 1936), Norbert Wiener (ciberntica, 1943) y John
von Newmann (arquitectura del computador, 1950). La arquitectura de von
Newmann consta de una unidad central de proceso (CPU) y de un sistema
de almacenamiento de datos (memoria), y fue utilizada en 1954 por RAND
Corporation para construir JOHNIAC (John v. Neumann Numerical Integra-
tor and Automatic Computer), una de las primeras computadoras en las que
ms tarde se implementaron sistemas de inteligencia artificial como el Logic
Theorist de Newell y Simon.
En 1954 tambin apareci el IBM 704, la primera computadora de produccin
en cadena, y con ella se desarrollaron numerosos lenguajes de programacin
especficamente diseados para implementar sistemas de inteligencia artificial
como el LISP. Junto con estos avances, se produjeron los primeros intentos pa-
ra determinar la presencia de comportamiento inteligente en una mquina. El
ms relevante desde el punto de vista histrico fue propuesto por Alan Turing
en un artculo de 1950 publicado en la revista Mindy tituladoComputing Ma-
chinery and Intelligence.
.
En este trabajo se propone un test de inteligencia para mquinas segn
el cual una mquina presentara un comportamiento inteligente en la
medida en que fuese capaz de mantener una conversacin con un hu-
mano sin que otra persona pueda distinguir quin es el humano y quin
el ordenador. Aunque el test de Turingha sufrido innumerables adapta-
ciones, correcciones y controversias, pone de manifiesto los primeros
intentos de alcanzar una definicin objetiva de la inteligencia.
En este contexto, es de especial relevancia el Teorema de incompletitud de Gdel
de 1931, un conjunto de teoremas de lgica matemtica que establecen las li-
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
14/214
CC-BY-NC-NDPID_00174137 14 Inteligencia artificial avanzada
mitaciones inherentes a un sistema basado en reglas y procedimientos lgicos
(como lo son todos los sistemas de IA).
HAL 9000
El impacto social de la IAdurante la dcada de lossesenta se pone de manifiestoen la pelcula 2001: A SpaceOdyssey, dirigida en 1968por Stanley Kubrick y basadaen una novela homnima deciencia ficcin de Arthur C.Clarke. El protagonistaprincipal de la pelcula es HAL9000 (Heuristicallyprogrammed ALgorismiccomputer), un ordenador dedotado de un avanzadosistema de inteligencia
artificial que es capaz derealizar tareas comomantener una conversacin,reconocimiento de voz,lectura de labios, jugar aajedrez e incluso manifestarun cierto grado desensibilidad artstica.
Tras los primeros trabajos en IA de los aos cincuenta, en la dcada de los
sesenta se produjo un gran esfuerzo de formalizacin matemtica de los m-
todos utilizados por los sistemas de IA.
Los aos setenta, en parte como respuesta al test de Turing, se produjo el naci-
miento de un rea conocida como procesado del lenguaje natural(NLP, Natural
Language Processing), una disciplina dedicada a sistemas artificiales capaces
de generar frases inteligentes y de mantener conversaciones con humanos. El
NLP ha dado lugar a diversas reas de invetigacin en el campo de la lings-
tica computacional, incluyendo aspectos como la desambigacin semntica
o la comunicacin con datos incompletos o errneos. A pesar de los gran-
des avances en este mbito, sigue sin existir una mquina que pueda pasar eltest de Turing tal y como se plante en el artculo original. Esto no es tanto
debido a un fracaso de la IA como a que los intereses del rea se se han ido
redefiniendo a lo largo de la historia. En 1990, el controvertido empresario
Hugh Loebner y el Cambridge Center for Behavioral Studies instauraron el
premio Loebner, un concurso anual ciertamente heterodoxo en el que se pre-
mia al sistema artificial que mantenga una conversacin ms indistinguible
de la de un humano. Hoy en dia, la comunidad cientfica considera que la
inteligencia artificial debe enfocarse desde una perspectiva diferente a la que
se tena el los aos cincuenta, pero iniciativas como la de Loebner expresan el
impacto sociolgico que sigue teniendo la IA en la sociedad actual.
Aplicaciones de la IA
En la actualidad, la IA se haconsolidado como unadisciplina que permite disearaplicaciones de gran utilidadprctica en numerososcampos. Actualmente, existeuna enorme lista de mbitosde conocimiento en los quese utilizan sistemas de IA,
entre los que son de especialrelevancia la minera dedatos, el diagnstico mdico,la robtica, la visin artificial,el anlisis de datos burstileso la planificacin y logstica.
En los aos ochenta empezaron a desarrollarse las primeras aplicaciones co-
merciales de la IA, fundamentalmente dirigidas a problemas de produccin,
control de procesos o contabilidad. Con estas aplicaciones aparecieron los pri-
meros sistemas expertos, que permitan realizar tareas de diagnstico y toma
de decisiones a partir de informacin aportada por profesionales expertos.
En torno a 1990, IBM construy el ordenador ajedrecista Deep Blue, capaz de
plantarle cara a un gran maestro de ajedrez utilizando algoritmos de bsqueda
y anlisis que le permitan valorar cientos de miles de posiciones por segundo.
Ms all del intento de disear robots humanoides y sistemas que rivalicen
con el cerebro humano en funcionalidad y rendimiento, el inters hoy en da
es disear e implementar sistemas que permitan analizar grandes cantidades
de datos de forma rpida y eficiente. En la actualidad, cada persona genera y
recibe a diario una gran cantidad de informacin no slo a travs de los ca-
nales clsicos (conversacin, carta, televisin) sino mediante nuevos medios
que nos permiten contactar con ms personas y transmitir un mayor nmero
de datos en las comunicaciones (Internet, fotografa digital, telefona mvil).
Aunque el cerebro humano es capaz de reconocer patrones y establecer re-laciones tiles entre ellos de forma excepcionalmente eficaz, es ciertamente
limitado cuando la cantidad de datos resulta excesiva. Un fenmeno similar
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
15/214
CC-BY-NC-NDPID_00174137 15 Inteligencia artificial avanzada
ocurre en el mbito empresarial, donde cada da es ms necesario barajar can-
tidades ingentes de informacin para poder tomar decisiones. La aplicacin de
tcnicas de IA a los negocios ha dado lugar a mbitos de reciente implantacin
como la inteligencia empresarial, business intelligenceo a la minera de datos,
data mining. En efecto, hoy ms que nunca la informacin est codificada en
masas ingentes de datos, de forma que en muchos mbitos se hace necesa-rio extraer la informacin relevante de grandes conjuntos de datos antes de
proceder a un anlisis detallado.
.
En resumen, hoy en da el objetivo principal de la inteligencia actual es
el tratamiento y anlisis de datos.
Algunas veces nos interesar caracterizar los datos de forma simplificada parapoder realizar un anlisis en un espacio de dimensin reducida o para visuali-
zar los datos de forma mas eficiente. Por ejemplo, puede ser interesante saber
qu subconjunto de ndices burstiles internacionales son los ms relevan-
tes para seguir la dinmica de un cierto producto o mercado emergente. En
otras ocasiones, el objetivo ser identificar patrones en los datos para poder
clasificar las observaciones en diferentes clases que resulten tiles para tomar
decisiones respecto un determinado problema. Un ejemplo de este segundo
tipo de aplicacin sera el anlisis de imgenes mdicas para clasificar a pa-
cientes segn diferentes patologas y as ayudar al mdico en su diagnstico.
Por ltimo, en muchos casos se hace necesario realizar bsquedas entre una
gran cantidad de datos u optimizar una determinada funcin de coste, por lo
que tambin ser necesario conocer mtodos de bsqueda y optimizacin. En
esta clase de problemas encontramos, por ejemplo, el diseo de los horarios
de una estacin de trenes de forma que se minimice el tiempo de espera y el
nmero de andenes utilizados.
1.3. mbitos de aplicacin de la inteligencia artificial
Las aplicaciones ms frecuentes de la inteligencia artificial incluyen campos
como la robtica, el anlisis de imgenes o el tratamiento automtico de tex-
tos. Enrobtica, uno de los campos de investigacin actual con mayor proyec-
cin es el del aprendizaje adaptativo, en el que un sistema robotizado explora
diferentes configuraciones con el objetivo de realizar un movimiento comple-
jo (caminar, agarrar un objeto, realizar una trayectoria, jugar a golf, etc.). El
objetivo podra ser, por ejemplo, que un robot cuadrpedo se levante y ande
de forma autnoma, de forma que siga un proceso de exploracin y aprendi-
zaje similar al que realiza un recin nacido durante los primeros meses de vida.
Un sistema de IA en este caso se encargara de explorar diferentes movimien-tos de forma aleatoria, midiendo las variables de cada articulacin y compro-
bando en cada momento el grado de xito alcanzado por cada secuencia de
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
16/214
CC-BY-NC-NDPID_00174137 16 Inteligencia artificial avanzada
acciones (altura del centro de masas, desplazamiento horizontal, fluctuacio-
nes en la posicin vertical, velocidad de desplazamiento, etc.). El sistema de
IA modulara la ejecucin de las diferentes acciones, incrementando la proba-
bilidad de aquellas que presenten un mejor rendimiento y restringiendo las
que no comporten una mejora de la funcin objetivo. Un rea afn a la rob-
tica es la de lasinterfaces cerebro-computadora(BCI, Brain-computer Interfaces),sistemas artificiales que interactan con el sistema nervioso mediante seales
neurofisiolgicas con el objetivo asistir a personas discapacitadas durante la
ejecucin de determinadas tareas motoras.
Dentro del campo de la IA, una de las ramas con mayor proyeccin son los de-
nominadossistemas expertos, en los que el objetivo es disear un sistema que
permita analizar un conjunto de datos y realizar tareas tpicamente asociadas
a la figura de un profesional experto como el diagnstico, la deteccin de fa-
llos, la planificacin o la toma de decisiones. Los datos con los que trabaja elsistema experto pueden ser de naturaleza muy diversa.
En un sistema de diagnstico clnico, por ejemplo, se puede partir de imgenes
radiolgicas, de una serie temporal de la frecuencia del ritmo cardaco de un
paciente o de un conjunto de datos con valores extrados de anlisis de sangre
o de orina. La utilizacin de todas las seales anteriores a la vez constituye
un sistema de fusin multimodal, en el que el estado clnico del paciente se
describe desde una perspectiva multiorgnica ms completa. En los sistemas
expertos se combina informacin extrada de datos con el conocimiento del
sistema que aporta un experto especializado. A estos sistemas se les conocecomo sistemas basados en conocimiento (KBS, knowledge-based systems), y per-
miten integrar reglas heursticas y rboles de decisiones elaborados por una
comunidad de expertos durante aos de trabajo y experimentacin. Estas re-
glas no pueden ser inferidas directamente de los datos observados, y son de
gran utilidad en aplicaciones sobre diagnstico y toma de decisiones.
Ejemplo
Un ejemplo de este tipo de tcnicas seran el protocolo de diagnstico que realiza unmdico especialista a partir de un conjunto de pruebas, o los criterios que aplica un in-
geniero de caminos para validar la resistencia mecnica de un puente.
La informacin aportada por humanos expertos es tambin necesaria para
disear sistemas artificiales que jueguen a juegos como el ajedrez o el go.
Go
Go es un tradicional juego de mesa chino que se practica en un tablero reticular y tienepor objetivo ocupar con las fichas una regin mayor que el adversario. El desarrollo demquinas que jueguen a Go con humanos a un alto nivel es un mbito en el que ac-tualmente se dedican grandes esfuerzos desde el campo de la IA. En este juego, el grannmero de posibles movimientos en cada jugada impide aplicar tcnicas de bsqueda
global, por lo que los sistemas inteligentes deben incorporar informacin sobre estrate-gias y tcticas aportada por jugadores humanos expertos.
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
17/214
CC-BY-NC-NDPID_00174137 17 Inteligencia artificial avanzada
El anlisis de textoses otro ejemplo interesante en el que se desarrollan nu-
merosos sistemas de IA. Aspectos como la traduccin automtica de textos
han evolucionado de forma sorprendente durante los ltimos aos gracias a
tcnicas de IA. Hoy en da es fcil encontrar plataformas web gratuitas que
permitan traducir textos entre ms de 50 lenguas diferentes. Estos sistemas de
traduccin automtica presentan resultados de notable calidad, y tienen encuenta aspectos semnticos y contextuales antes de proponer una traduccin
del texto. El xito de estas plataformas se debe en gran parte a sistemas de
IA que utilizan enormes cantidades de informacin textual aportada por los
usuarios del servicio. Sistemas similares permiten realizar bsquedas inteligen-
tes en la web, de forma que los vnculos que se ofrecen tengan en cuenta las
preferencias estadsticas propias y del resto de usuarios, o enviar publicidad de
forma selectiva a partir de la informacin que aparece en el campo asunto
de nuestro buzn de correo electrnico.
Otro ejemplo de sistema en el mbito de laingeniera de procesoses un sistema
de deteccin de fallos en una planta compleja. Una planta industrial dispo-
ne de mltiples sensores distribuidos que permiten monitorizar el proceso de
forma continua. En la fase de entrenamiento, el sistema aprende un conjun-
to de patrones dinmicos de los sensores que corresponden a situaciones en
los que se produce un error en la planta. En el futuro, cuando se produce un
error, el sistema de IA detecta su existencia de forma automtica y es capaz de
diagnosticarel origen del fallo comparando la respuesta de los sensores con las
respuestas caractersticas de cada error. En una tercera fase, el sistema puede
incluso tomar decisiones sobre qu acciones hay que realizar para resolver elproblema de la forma ms rpida y eficiente. Las aplicaciones industriales de la
IA es un campo con una gran proyeccin en el que los sistemas van dirigidos
a mejorar procesos de fabricacin, control de calidad, logstica o planificacin
de recursos.
En muchas ocasiones, los sistemas de IA constan de dos fases, una primera fase
deaprendizajey una segunda de prediccin. En la fase de aprendizaje se apor-
ta un conjunto de datos representativo de aquellas situaciones que se desea
analizar, de forma que el sistema IA aprende las caractersticas fundamentales
de los datos y es capaz degeneralizarsu estructura. Dicha generalizacin no es
ms que la construccin de un modelo de los datos que permita realizar una
prediccin acertada a partir de nuevas observaciones.
Reconocimiento de caras
Consideremos el ejemplo de un sistema automtico para el reconocimiento de caras. Alsistema se le proporcionan 100 imgenes faciales de 10 personas diferentes, 10 caras porpersona. Las imgenes son tomadas en diferentes condiciones (diferente expresin fa-cial, ropa, iluminacin, exposicin, fondo, etc.), de forma que sean representativas delas caractersticas faciales de cada persona. El sistema identifica las caractersticas princi-pales de cada una de las fotos y es capaz de agruparlas en un determinado nmero de
grupos (presumiblemente 10, excepto si se han incluido gemelos monocigticos). Entrelas caractersticas utilizadas pueden aparecer, entre otras, el color de los ojos, el grosorde los labios o el permetro de la cabeza. En la fase de prediccin, se parte de una ima-gen de uno de los 10 individuos que no haya sido incluida en el conjunto de datos deentrenamiento. El sistema calcula las caractersticas faciales del nuevo individuo, y debe
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
18/214
CC-BY-NC-NDPID_00174137 18 Inteligencia artificial avanzada
ser capaz de identificar esa imagen como perteneciente a uno de los grupos definidosdurante el proceso de aprendizaje (presumiblemente al grupo del individuo correcto, ano ser que la nueva imagen no tenga apenas rasgos comunes con las 10 imgenes deentrenamiento). Si la nueva imagen es identificada de forma correcta, diremos que elsistema de IA acierta en su prediccin, mientras que cuando el sistema asigna la imagena otro grupo de forma errnea, se produce un error de clasificacin.
Tabla 2. Principales mbitos de aplicacin de los sistemas de inteligencia artificial
rea Aplicaciones
Medicina Ayuda al diagnstico
Anlisis de imgenes biomdicas
Procesado de seales fisiolgicas
Ingeniera Organizacin de la produccin
Optimizacin de procesos
Clculo de estructuras
Planificacin y logstica
Diagnstico de fallos
Toma de decisiones
Economa Anlisis financiero y burstilAnlisis de riesgos
Estimacin de precios en productos derivados
Minera de datos
Marketing y fidelizacin de clientes
Biologa Anlisis de estructuras biolgicas
Gentica mdica y molecular
Informtica Procesado de lenguaje natural
Criptografa
Teora de juegos
Lingstica computacional
Robtica y automtica Sistemas adaptativos de rehabilitacin
Interfaces cerebro-computadora
Sistemas de visin artificial
Sistemas de navegacin automtica
Fsica y matemticas Demostracin automtica de teoremas
Anlisis cualitativo sistemas no-lineales
Caracterizacin de sistemas complejos
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
19/214
CC-BY-NC-NDPID_00174137 19 Inteligencia artificial avanzada
2. Recomendadores y agrupamientos.
Actualmente la gran mayora de instrumentos de medida de cualquier tipo
de magnitud (desde magnitudes fsicas como longitud, temperatura, tiempo
hasta magnitudes de comportamiento como patrones de bsqueda y nave-
gacin en la web y preferencias de compra online, pasando por herramientas
comunes como las cmaras digitales) son capaces de volcar sus mediciones a
algn formato digital; de esa forma todos esos datos pueden estar fcilmente
disponibles para su tratamiento.
.
En este momento el problema no es disponer de datos, pues se dipone
en gran abundancia de ellos; el reto es conseguir extraer informacin a
partir de los datos, o sea, darles un sentido y extraer conclusiones tiles
de ellos. Esta tarea se conoce por el nombre de minera de datos(data
mining).
Uno de los principales retos en el procesamiento de datos es el de integrarlos
procedentes de mltiples fuentes, para as dotar de diferentes perspectivas al
conjunto de estos, lo que permite extraer informacin ms rica. Esta tenden-
cia se da en casi todas las reas: recopilacin de la actividad de los usuarios
en un sitio web; integracin de sensores de temperatura, presin atmosfrica
y viento en el anlisis meteorolgico; uso de diferentes datos financieros y
burstiles en la previsin de inversiones; entre otros ejemplos.
.
La tarea de integracin de mltiples fuentes de datos recibe el nombre
defiltrado colaborativo(collaborative filtering).
Ved tambin
En el subapartado 2.1 de estemdulo se estudian algunasde las mtricas mshabituales.
De la misma forma que en las ciencias experimentales es fundamental utilizar
un instrumental adecuado y unas unidades consistentes, un aspecto clave en
cualquier tarea de procesamiento de datos es el uso demtricas, o sea medidas
de distancia, adecuadas para el tipo de datos que se est tratando.
Ved tambin
En el subapartado 2.2 sedescriben algunas estrategiassencillas para construirrecomendadores.
Una de las aplicaciones en las que se centra este mdulo es la de losrecomen-
dadores. Un recomendador es un sistema que recoge y analiza las preferenciasde los usuarios, generalmente en algn sitio web (comercios, redes sociales, si-
tios de emisin o seleccin de msica o pelculas, etc.). La premisa bsica de
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
20/214
CC-BY-NC-NDPID_00174137 20 Inteligencia artificial avanzada
los recomendadores es que usuarios con actividad o gustos similares conti-
nuarn compartiendo preferencias en el futuro. Al recomendar a un usuario
productos o actividades que otros usuarios con gustos similares han elegido
previamente el grado de acierto acostumbra a ser ms elevado que si las reco-
mendaciones se basan en tendencias generales, sin personalizar.
Ved tambin
En el subapartado 2.3 sepresentan los mtodos deagrupamiento msimportantes.
La tarea de encontrar a los usuarios ms afines y utilizar esta informacin
para predecir sus preferencias puede inscribirse en una tarea ms general que
recibe el nombre deagrupamiento(clustering), y que consiste en encontrar la
subdivisin ptima de un conjunto de datos, de forma que los datos similares
pertenezcan al mismo grupo.
2.1. Mtricas y medidas de similitud
A menudo se utilizan funcionesque miden la similitud entre
dos elementos en lugar de sudistancia.
.
Unamtricaes una funcin que calcula la distancia entre dos elemen-
tos y que por tanto se utiliza para medir cun diferentes son. Existen
varias formas de medir la distancia entre dos elementos, y elegir la m-
trica adecuada para cada problema es un paso crucial para obtener bue-
nos resultados en cualquier aplicacin de minera de datos.
Ved tambin
Las distancias y similitudes seutilizan en gran cantidad demtodos, por lo que en estemdulo se presentan otrasmtricas como la distancia deHamming en elsubapartado 4.3.1 y lainformacin mutua en elsubapartado 3.1.3.
En este subapartado utilizaremos la distancia eucldea y estudiaremos una
medida de similitud habitual, la correlacin de Pearson.
* Segura porque no incurre endivisiones por cero si la
distancia es cero.
Por ltimo, una forma habitual y segura* de convertir una funcin de distan-
ciaden una funcin de similitud ses la siguiente:
s(P,Q) = 1
1 + d(P,Q) (1)
2.1.1. Ejemplo de aplicacin
En un sitio web de visualizacin de pelculas a la carta se recoge la valoracin
de cada usuario sobre las pelculas que va viendo, con el objetivo de poder
proponer a los usuarios las pelculas que ms se adapten a sus gustos. Tras ver
una pelcula, un usuario ha de dar una valoracin entre 1 y 5, donde las valo-
raciones ms bajas corresponden a pelculas que han disgustado al usuario, y
las ms alta a las que le han gustado ms. Se desea descubrir similitudes entre
usuarios de manera que a cada usuario se le propongan las pelculas que ms
han gustado a los usuarios con gustos ms parecidos al suyo.
Para poner en prctica estas pruebas se utilizarn los conjuntos de datos dispo-
nibles en http://www.grouplens.org/node/73, concretamente el conjunto de 100k
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
21/214
CC-BY-NC-NDPID_00174137 21 Inteligencia artificial avanzada
valoraciones (ficheroml-data_0.zip), que contiene 100.000 valoraciones (del 1
al 5) de 1.682 pelculas realizadas por 943 usuarios. Si bien el conjunto de da-
tos contiene 23 ficheros, en este mdulo slo se utilizar el fichero u.data, que
es el que contiene las valoraciones de los usuarios. En la tabla 3 se muestra un
ejemplo meramente ilustrativo de valoraciones.
En el ficherou.datacadavaloracin aparece en una fila, y
las columnas son IdUsuarioIdPelcula Valoracin Fecha.
Tabla 3. Valoraciones de 8 pelculas (ejemplo)
IdUsuario/IdPelcula 1 2 3 4 5 6 7 8
1 3 1 4 3 5
2 4 1 3 5 2
3 2 1 5 1
4 3 2 5 4
Los datos se presentan en forma matricial por legibilidad y concisin.
El ficherou.itemcontiene informacin sobre cada pelcula, y el fichero u.user
contiene informacin genrica sobre cada usuario (edad, sexo, etc.). Como se
puede observar, los usuarios no tienen por qu valorar todas las pelculas, sino
slo las que han visto. La informacin de la tabla puede expresarse en Python
mediante un diccionario en el que cada identificador de usuario es una clave,
y el valor asociado a dicha clave es otro diccionario que asocia cada identifi-
cador de pelcula a la puntuacin asignada por ese usuario. El fragmento de
cdigo 2.1 muestra la representacin correspondiente a la tabla 3.
Cdigo 2.1: Diccionario de valoracin de pelculas
1 v a lo r a ci o n es = { 1 : { 2 : 3 , 3 : 1 , 5 : 4 , 6 : 3 , 7 : 5 } , 2 : { 1 : 4 , 2 : 1 , 3 : 3 , 5 : 5 , 8 : 2 } ,
2 3 : { 1 : 2 , 2 : 1 , 4 : 5 , 8 : 1 } , 4: { 1 : 3 , 3 : 2 , 6 : 5 , 8 : 4 } }
2.1.2. Distancia eucldea
.
La distancia eucldea de dos puntos P= (p1,p2,...,pn) y Q= (q1,q2,...,qn)
en el espacio n-dimensional Rn viene dada por la frmula:
d(P,Q) =
vuut nXi=1
(pi qi)2 (2)
La distancia eucldea no es ms que la generalizacin a n dimensiones del
teorema de Pitgoras. Si las distancias en s no son importantes, sino slo su
comparacin, a menudo se utiliza la distancia eucldea cuadrada, es decir,
sin la raz cuadrada, pues la comparacin entre distancias eucldeas cuadra-
das da los mismos resultados que entre las distancias eucldeas y puede resul-
tar mucho ms rpida de calcular, ya que la raz cuadrada es una operacin
computacionalmente costosa.
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
22/214
CC-BY-NC-NDPID_00174137 22 Inteligencia artificial avanzada
La funcin que calcula la distancia eucldea entre las valoraciones de dos usua-
rios (segn el formato visto en el fragmento de programa 2.1) en Python se
muestra en el fragmento de programa 2.2, as como la funcin necesaria para
convertir la distancia en una similitud.
Cdigo 2.2: Distancia eucldea entre dos diccionarios1 from math import sqr t23 def distEu clidea (dic1 , dic2 ) :4 # C a l c ul a r l a suma de c u a dr a d os d e l o s e l e m en t o s co mu ne s5 # a l o s d os d i c c io n a ri o s6 suma2 = sum( [pow ( dic 1[elem] dic2 [elem] , 2)7 for elem in dic1 if elem in dic2 ])8 return sqrt (suma2)9
10 def s imilEucl idea (dic1 , dic2 ) :11 return 1/(1+dis tEucl idea (dic1 , dic2 ))
En la tabla 4 se muestran las similitudes entre las valoraciones de los usuariosutilizando la distancia eucldea. Como se puede comprobar, s(P,P) = 1 (ya que
d(P,P) = 0) y s(P,Q) = s(P,Q), o sea, la matriz de similitudes es simtrica.
Tabla 4. Similitud eucldea de las valoraciones
Id usuario 1 2 3 4
1 1,0 0,25 0,33 0,31
2 0,25 1,0 0,31 0,29
3 0,33 0,31 1,0 0,24
4 0,31 0,29 0,24 1,0
Supongamos que el usuario 4 desea que se le recomiende alguna pelcula; el
sistema, de momento, puede sugerirle que vea las pelculas que han gustado
al usuario 1 (y no ha visto el 4), ya que es el usuario con mayor similitud; en
el ejemplo, el usuario 4 podra elegir las pelculas 5 y 7, que son las que ms
han gustado al usuario 1 y an no ha visto el 4.
Una limitacin de la similitud (y la distancia) eucldea es que es muy sensible
a la escala: si un usuario tiende a puntuar las pelculas que le gustan con un 4
y otro con un 5, habr una cierta distancia entre ellos, en especial si el nmerode valoraciones es alto, aunque en el fondo ambos usuarios comparten gustos
a pesar de utilizar las puntuaciones de formas diferentes.
Utilidad de la distanciaeucldea
La distancia eucldea es unamtrica til en numerosasaplicaciones, en especial si lasmagnitudes son lineales y suescala es uniforme; adems,
es sencilla y rpida decalcular.
Adems, a mayor nmero de dimensiones (valoraciones, en este caso), la dis-
tancia eucldea tiende a ser mayor, lo que puede distorsionar los resultados.
Por ejemplo, si dos usuarios comparten 2 valoraciones y hay una diferencia de
1 entre cada una de ellas, su distancia ser d=
12 + 12 = 1,41; sin embargo, si
comparten 5 valoraciones con una diferencia de 1 entre ellas, su distancia ser
d=
1
2
+ 12
+ 12
+ 12
+ 12
= 2,24; una distancia bastante mayor para unas va-loraciones en apariencia similares. Cuantas ms valoraciones compartan dos
usuarios (aunque no sean muy diferentes), ms alejados estarn, lo que parece
contrario a la lgica.
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
23/214
CC-BY-NC-NDPID_00174137 23 Inteligencia artificial avanzada
2.1.3. Correlacin de Pearson
El coeficiente de correlacin de Pearson es una medida de similitud entre dos
variables que resuelve los problemas de la similitud eucldea. Se trata de una
medida de cmo las dos variables, una frente a otra, se organizan en torno a
una lnea recta (lnea de mejor ajuste), tal y como se puede ver en la figura 1.
Cuanto ms similares son las valoraciones de dos usuarios, ms se parecer su
recta a la recta y= x, ya que las valoraciones sern de la forma (1,1), (3,3),
(4,4), etc.
Figura 1
Diagrama de dispersin(scatter plot) de lasvaloraciones de dos usuarios:se representa la valoracin decada pelcula en comntomando el ejex como lavaloracin de un usuario, y elejeycomo la valoracin delotro usuario. Los nmeros enel diagrama corresponden alos identificadores de laspelculas comunes.
Figura 1. Correlacin entre las valoraciones los usuarios 1 y 2 de la tabla 3
1 2 3 4 5
5
4
3
2
1
Valoracin usuario 1
Valoracinusuario2
2
3
5
* El coeficiente de correlacinde Pearson slo mide relacioneslineales; aunque valga 0, puede
haber relaciones no linealesentre las dos variables.
El coeficiente de correlacin de Pearson (en este subapartado, simplemente
correlacin) est relacionado con la pendiente de la recta representada en la
figura 1, y puede tomar un valor en el rango [1,1]. Si su valor es 1 indica que
las dos variables estn perfectamente relacionadas; si es 0, no hay relacin
lineal entre ellas*; si es negativo es que existe una correlacin negativa, eneste caso que las valoraciones de un usuario son opuestas a las del otro.
.
El clculo del coeficiente de correlacin de Pearson sobre dos muestras
de datos alineados (valoraciones de usuarios, en nuestro caso) xi e yiviene dado por la frmula:
rxy=
nPi=1
(xi x)(yiy)
snPi=1(x
i x)2snP
i=1(yiy)2
(3)
dondexes la media de los valores de xy yla media de los valores de y.
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
24/214
CC-BY-NC-NDPID_00174137 24 Inteligencia artificial avanzada
Ntese que para efectuar el clculo los datos deben estar alineados: en nuestro
caso, slo se deben tomar las valoraciones comunes a los dos usuarios. Tam-
bin hay que prever que el denominador pueda valer cero. Con todas esas
consideraciones, en el cdigo 2.3 se muestra la funcin en Python que calcula
el coeficiente de correlacin de Pearson de dos diccionarios de valoraciones.
Cdigo 2.3: Coeficiente de Pearson entre dos diccionarios
1 def coefPearson( dic1 , dic2 ) :2 # Ob t en er l o s e l em e nt o s comun es a l o s d o s d i c c i o n a r i o s3 comunes = [ x for x in dic1 if x in d ic 2]4 nComunes = f loa t ( len ( comunes) )56 # S i no hay e l e m en t os c omunes , s e d e v u e lv e c e r o ; s i no7 # s e c al cu la el c o e fi c i e nt e8 if nComunes==0:9 return 0
1011 # C l c ul o de l a s me di as de ca da d i c c i o n a r i o
12 media1 = sum ( [ d ic 1 [ x ] for x in comunes ] ) / nComunes13 media2 = sum ( [ d ic 2 [ x ] for x in comunes ] ) / nComunes1415 # C l c ul o d e l n u me ra do r y d e l d e no mi na do r 16 num = sum ( [ ( d ic 1 [ x ] media1 ) (dic2[x]media2) for x in comunes])17 den1 = s qr t ( sum ( [ pow ( d ic 1 [ x ] media1 , 2 ) for x in comunes]))18 den2 = s qr t ( sum ( [ pow ( d ic 2 [ x ] media2 , 2 ) for x in comunes]))19 den = den1den22021 # C lc ul o d el c o e f i c i e n t e s i e s p o s ib l e , o d ev ue lv e 022 if den==0:23 return 02425 return num/den
Como se deduce de su definicin, el coeficiente de correlacin de Pearson es
simtrico y vale 1 al calcularlo respecto a la misma variable. En la tabla 5
puede verse los valores correspondientes a las valoraciones de los usuarios de
la tabla 3. En este ejemplo la correlacin entre los usuarios 1 y 3 es 0 porque
slo tienen una pelcula en comn, con lo que la recta de ajuste no se puede
definir.
Tabla 5. Coeficiente de Pearson de las valoraciones
Id usuario 1 2 3 41 1,0 0,33 0,0 1,0
2 0,33 1,0 0,95 0,5
3 0,0 0,95 1,0 1,0
4 1,0 0,5 1,0 1,0
Tambin se observa que los usuarios 1 y 4 tienen una correlacin de 1,0; eso
es debido a que, independientemente de factores de escala, su tendencia a
valorar las pelculas es igual. Ntese la diferencia con la similitud eucldeamostrada en la tabla 4, si bien el usuario ms similar al 4 sigue siendo el 1 y
por lo tanto las pelculas que podra elegir seran las mismas. Por otra parte, los
usuarios 3 y 4 hacen valoraciones contrarias, por lo que su coeficiente es 1,0.
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
25/214
CC-BY-NC-NDPID_00174137 25 Inteligencia artificial avanzada
No obstante, sera conveniente disponer de ms datos para obtener medidas
ms realistas.
El coeficiente de correlacin de Pearson resulta til como medida de similitud
porque es independiente de los desplazamientos y escalas de los valores estu-
diados; para conseguir estas propiedades utilizando la similitud eucldea sera
necesario normalizar los datos previamenente a su anlisis. Uno de sus prin-
cipales inconvenientes en su uso en filtrado colaborativo es que requiere que
haya al menos dos valores comunes para poder dar un resultado significativo;
eso limita su aplicacin en aquellos casos en que se desea sugerir productos
similares a un cliente que ha hecho una nica eleccin.
2.1.4. Procesamiento de datos reales
Hasta ahora se han utilizado las funciones de similitud sobre datos de prue-
ba introducidos manualmente; sin embargo, es interesante probarlas con un
volumen de datos apreciable para poder valorar mejor su comportamiento.
En el fragmento de cdigo 2.4 se leen los datos del ficherou.datade la base de
datos de valoraciones de pelculasMovielensutilizada en este subapartado, y se
produce como resultado un diccionario con la misma estructura que el dado
como ejemplo en el cdigo de programa 2.1.
Para utilizarlo basta con aplicar alguna de las funciones de similitud descritas
anteriormente a cualquier par de usuarios (claves del diccionario principal),
o bien escribir un programa que genere una tabla o diccionario con todas las
correlaciones.
Cdigo 2.4: Funcin que lee un fichero de valoraciones de MovieLens
1 def leeVa lorac iones (nomFich="u. data" ):2 l i ne a s = [ ( l . s t r i p ( ) ) . s p l i t ( " \ t " )3 for l in (open(nomFich). readlines ())]4 diccio = { int ( l [ 0] ) : { } for l in l ineas }5
6 for l in l ineas :7 d ic ci o [ i nt ( l [ 0 ] ) ] [ i nt ( l [ 1 ] ) ] = i n t ( l [ 2 ] )8 return d ic c io
2.1.5. Conclusiones
Las principales limitaciones de los procedimientos explicados en este subapar-
tado son dos: primera, que no permiten sugerir productos directamente, sino
slo usuarios afines; esta limitacin se resolver en el siguiente subapartado.
La segunda limitacin estriba en que es necesario almacenar en memoria todas
las valoraciones de los usuarios y recalcularlas todas cada vez que se incorpora
una nueva valoracin o usuario, lo que puede suponer un coste computacio-
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
26/214
CC-BY-NC-NDPID_00174137 26 Inteligencia artificial avanzada
nal alto en aplicaciones grandes; visto de otra manera, no se genera ninguna
abstraccin o modelo de los datos que permita trabajar con una versin redu-
cida de los datos. Esta limitacin se resolver en el subapartado 2.3, que trata
sobre los algoritmos de agrupamiento.
2.2. Recomendadores basados en memoria
En este subapartado se mejorar el sistema de recomendacin de pelculas
visto en el subapartado 2.1 para que, en lugar de sugerir usuarios con gustos
similares, sugiera directamente las pelculas que pueden ser ms interesantes
para el usuario.
2.2.1. Conceptos generales
Se habla de recomendadores basados en memoriaporque requieren mante-
ner todos los datos disponibles para poder realizar una recomendacin; ade-
ms, cada vez que se introduce un nuevo dato o que se solicita una recomen-
dacin estos recomendadores han de efectuar sus operaciones sobre el con-
junto completo de datos, lo que provoca que sean relativamente ineficientes,
especialmente en aplicaciones con volmenes de datos grandes. No obstante,
tienen inters porque son muy sencillos conceptualmente y su programacin
es relativamente rpida.
Estos recomendadores estn estrechamente relacionados con los clasificadores
basados en distancias estudiados en el subapartado 4.3, pues emplean una
metodologa similar (por ejemplo buscar el elemento ms cercano al que se
est evaluando); la diferencia radica en el uso que se hace de esta informacin,
pues en el caso de los clasificadores se toma un nuevo elemento y se decide a
qu clase debe pertenecer, mientras que en el caso de los recomendadores se
toma un elemento y se sugieren los elementos ms semejantes, sin necesidad
de realizar una clasificacin.
En la prctica se trata de generar una valoracin (ranking) de todos los da-
tos o preferencias registradas y que tenga en cuenta las particularidades del
solicitante (gustos del usuario, etc.).
2.2.2. Aproximaciones simples
La forma ms sencilla de generar una valoracin global de un conjunto de
elementos es promediar su grado de valoracin. En el ejemplo de las pelculas,
si una pelcula tiene cuatro valoraciones (3, 5, 4, 3), su valoracin media ser
3,75; las pelculas con mayor valoracin global sern las sugeridas al usuario.
En el cdigo 2.5 se muestra la funcin que devuelve una lista ordenada (de
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
27/214
CC-BY-NC-NDPID_00174137 27 Inteligencia artificial avanzada
mayor a menor valoracin) de pelculas, a partir del diccionario de valoracio-
nes de los usuarios.
Cdigo 2.5: Funcin de recomendacin media global de pelculas1 # G en er a una l i s t a o rd en ad a d e v a l or a c i on e s g l o b a le s a p a r t i r d e2 # un d i c c i o n a r i o d e v a l o r a c i o n e s d e u s u ar i o s , d e l a f or ma3 # [ ( i d P e l c u l a , v a l o ra c i nG l o b al ) ] 4 def l i s t aValor ac ionesS imple( dicc io ) :5 # D i c c i o n a ri o a u x i l i a r { i d P e l i c u l a : [ v a l o r a c i o n e s ] }6 aux = { }7 for valorUsuario in diccio . values ( ) :8 for i d P e l i in valorUsuario :9 if not aux. has_key( idP eli ) :
10 aux [ i d P e l i ] = [ ]11 aux [ i dP e li ] . append ( va lo rUsu ari o [ i dP e li ] )1213 # C lc ul o y o r de na ci n d e l as v a l o r a c io n e s g l o b a l es14 media = lambda x : sum( x) / f loa t ( len ( x) )15 r es ul t = [ ( p, media (aux [p ] ) ) for p in aux]16 r es ul t . s or t ( key = lambda x : x [ 1 ] , r e v e r se = Tr ue )17 return r e s u l t
Obviamente es posible aadir unifpara omitir de la lista las pelculas que ya
ha visto el usuario, aunque no se ha incluido esa operacin para simplificar el
cdigo fuente mostrado.
La principal limitacin de este mtodo radica en que no tiene en cuenta las
preferencias individuales de cada usuario. No obstante, esta estrategia puede
ser til con usuarios nuevos, de los que no se conoce sus gustos. Una ventaja
es que no depende de ninguna mtrica para efectuar sus recomendaciones.
Una estrategia sencilla que tiene en cuenta las preferencias del usuario consis-
te en seleccionar las pelculas favoritas del usuario ms semejante, que era lo
que se dejaba hacer manualmente en el subapartado 2.1 tras sugerir el usua-
rio ms cercano. La desventaja de esta estrategia consiste en que est limitada
a las pelculas que ha visto el usuario ms cercano. Si no ha visto una pe-
lcula que muchos otros usuarios relativamente afines han visto y valorado
positivamente, el sistema nunca sugerir esa pelcula a pesar de que podra
tratarse de una buena recomendacin. Esta estrategia es similar al mtodo de
clasificacin del vecino ms cercano (1-Nearest-Neighbour) que se estudia en elsubapartado 4.3.1.
2.2.3. Recomendacin ponderada
Es posible utilizar un mtodo que rena las ventajas de los dos mtodos de
recomendacin simples que se acaban de exponer. La idea es sencilla: se trata
de obtener una valoracin global del conjunto de elementos (productos) pero
en lugar de calcular la media aritmtica de las valoraciones, hay que calcularla media de las valoraciones ponderada por la afinidad del usuario correspon-
diente. De esa manera, la valoracin global de los productos est personalizada
para cada usuario y, por tanto, debera resultar ms til y acertada. En el pro-
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
28/214
CC-BY-NC-NDPID_00174137 28 Inteligencia artificial avanzada
grama 2.6 se muestra una funcin que calcula la valoracin media de todas
las pelculas ponderada por la afinidad de los usuarios con el usuario actual.
vpj(x) es la valoracin ponderada de una pelcula x para el usuario j, y viene
dada por la expresin:
vpj(x) =
8>>>>>:
P
iV(x)(s(i,j)vi(x))P
iV(x)s(i,j) si|V(x)| >0
0 si|V(x)| = 0(4)
donde vi(x) es la valoracin de la pelcula x por el usuario i y s(i,j) es la similitud
entre los usuarios iy j. Por ltimo, V(x) es el conjunto de usuarios que han
valorado la pelculax.
Cdigo 2.6: Funcin de recomendacin media ponderada de pelculas
1 # G en er a una l i s t a o rd en ad a d e v a l o r a c i o n e s p o nd er ad as a p a r t i r d e2 # un d i c c i o n a r i o d e v a l o r a c i o n e s d e u s u ar i o s y u n nmero d e u s ua r i o .3 # S e p u ed e e l e g i r l a f un ci n d e s i m i l it u d e n t r e u s ua r io s .4 def valoracionPonderada( diccio , usuario , s imili tud = coefPearson ) :5 # En pr im er l u g a r s e g e ne r a un d i c c i o n a r io c on l a s s i m i l i t u d e s6 # d e nu e s t ro u s u a ri o co n t o d os l o s dems .7 # E st e d i c c i o n a r i o p o d r a a lm ac en ar se p ar a e v i t a r r e c a l c u l a r l o .8 s i m il s = { x : s i mi l i tu d ( d i cc i o [ u su ar io ] , d i cc i o [ x ] )9 for x in d ic c io if x ! = u s u a r i o }
1011 # D i c c i on a r i o a u x i l i a r { i d P e l i c u l a : [ v a l o r ac i o n s i m i l i t u d 12 # u s u a r i o s ] } y { i d P e l i c u l a : [ s i m i l i t u d u s u ar i o s ] } ( n um er ad or y 13 # de no mi na do r d e l a v a l o r a c i n p o nd e ra da )14 numerador = { }15 denominador = { }1617 # S e r e c o r re e l d i c c i o na r i o de v a lo r ac i on e s y se r e l le n an l o s18 # d i c c i o n a r i o s a u x i l i ar e s co n l o s v a lo r e s en co n tr ad o s19 for idUsuario in s imils :20 for i d P e l i in diccio [ idUsuario ] :21 if not numerador. has_key( id Pe li ) :22 numerador [ i d P e l i ] = [ ]23 denominador [ i d P e l i ] = [ ]24 s = s imi ls [ idUsuario ]25 numerador [ i d P el i ] . a ppend ( d ic ci o [ i dUs ua ri o ] [ i d P el i ] s )26 denominador [ i dP el i ] . append ( s )2728 # S e c a lc u l a n y or de na n l a s v a l o r a c i o n e s po nd er ad as29 r e s u l t = [ ]30 for i d P e l i in numerador:31 s1 = sum( numerador [ i dP e li ] )32 s2 = sum( denominador [ i d P el i ] )33 if s 2 = = 0 :34 media = 0.035 else :36 media = s1 / s237 r e su l t . append ( ( i dP el i , media ) )3839 r es ul t . s or t ( key = lambda x : x [ 1 ] , r e v e r se = Tr ue )40 return r e s u l t
2.2.4. Conclusiones
Los recomendadores vistos en este subapartado permiten mejorar de una for-
ma muy sencilla sitios web y otras aplicaciones similares para sintonizar mejor
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
29/214
CC-BY-NC-NDPID_00174137 29 Inteligencia artificial avanzada
con los usuarios y sugerirles productos que les puedan interesar, mejorando as
tanto su satisfaccin con la aplicacin como los xitos potenciales de venta o
acceso.
Las limitaciones de los mtodos vistos hasta ahora son que, como se ha ex-
plicado, son mtodos basados en memoria: requieren almacenar y procesar
todos los datos cada vez que se realiza una consulta. De este modo, una opera-
cin sencilla no resulta excesivamente costosa, pero como se tiene que repetir
completamente en cada consulta puede dar lugar a una carga computacional
y de memoria desmesurada en aplicaciones medianas y grandes.
Otra limitacin fundamental es que los mtodos de recomendacin que se
acaban de estudiar no abstraen los datos de ninguna forma, es decir, no pro-
porcionan informacin global acerca de los datos de los que se dispone, con
lo que su uso est limitado a producir recomendaciones de productos, perono pueden utilizarse para abordar estudios ms complejos sobre los tipos de
usuarios o productos de que se dispone, estudios que son esenciales para ana-
lizar el funcionamiento de la aplicacin y disear su futuro. A continuacin
se estudiarn mtodos que s abstraen y producen informacin de alto nivel a
partir de los datos disponibles.
2.3. Algoritmos de agrupamiento (clustering)
2.3.1. Ejemplo de aplicacin
Una empresa de juegos en lnea est analizando el comportamiento de sus
clientes con el fin de ofrecerles los productos y caractersticas ms adecuados
a sus intereses. En este estudio se miden dos caractersticas: nmero de horas
diarias jugando y nmero de horas diarias charlando (chateando) con otros
jugadores, ambas en valor promedio para cada jugador. Los objetivos son dos:
el primero, determinar qu tipos o clases de jugadores existen, segn su ac-
tividad; el segundo, clasificar a los nuevos jugadores en alguna de esas clases
para poder ofrecerles las condiciones y productos ms adecuados. El segun-do objetivo se trata extensamente en el apartado 3 dedicado a la clasificacin,
mientras que en este subapartado nos centraremos en cmo organizar un con-
junto de datos extenso en unas cuantas clases o grupos, desconocidos a priori.
En la figura 2 se muestran los datos recogidos de 2.084 jugadores. Se trata de
datos sintticos (generados artificialmente) con el propsito de que ilustren
ms claramente los mtodos que se expondrn a continuacin. Concretamen-
te, se pueden observar cinco clases o grupos claramente diferenciados, cada
uno marcado con un smbolo diferente. En los datos reales no suele observar-
se una separacin tan clara, y por consiguiente la ejecucin de los mtodos deagrupamiento no produce resultados tan definidos.
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
30/214
CC-BY-NC-NDPID_00174137 30 Inteligencia artificial avanzada
Figura 2
Las dos variables utilizan lasmismas unidades (horas) y
magnitudes similares y portanto pueden utilizarsedirectamente para agrupar;en un caso ms general, en elque las variables tenganmagnitudes diferentes, sueleser necesario normalizarlaspara que su magnitud seequipare y no tengan msinfluencia unas que otras(salvo que se pretendajustamente eso por lanaturaleza del problema).
Figura 2. Actividad de los jugadores en lnea
1 2 3 4
1
2
3
4
Horas jugando (h)
Horaschateando(h)
De hecho, para mostrar la ejecucin paso a paso de algunos algoritmos de
agrupamiento es necesario utilizar muchos menos datos, que en este caso son
los que se muestran en la tabla 6 y en la figura 3.
Tabla 6. Jugadores de ejemplo
Jugador Horas juego Horas chat
A 0,5 4,5
B 1 4
C 0,5 2
D 1 1,5
E 2,5 2
F 3,5 3,5
G 4,5 2,5
H 4 1
Figura 3. Actividad de 8 jugadores de ejemplo
A
B
C
D
E
F
G
H
1 2 3 4
1
2
3
4
Horas jugando (h)
Horaschateando(h)
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
31/214
CC-BY-NC-NDPID_00174137 31 Inteligencia artificial avanzada
2.3.2. Conceptos generales
La tarea de agrupamiento de datos es una tarea no supervisada, ya que los
datos que se le proporcionan al sistema no llevan asociada ninguna etiqueta
o informacin aadida por un revisor humano; por el contrario, es el propio
mtodo de agrupamiento el que debe descubrir las nuevas clases o grupos a
partir de los datos recibidos.
Si bien los algoritmos de agrupamiento se han introducido en el subapartado
anterior como herramienta para crear recomendadores, sus aplicaciones van
mucho ms all y se emplean en numerosos mbitos, como por ejemplo:
Procesamiento de imagen, para separar unas zonas de otras (tpicamentecon imgenes de satlite).
Agrupamiento de genes relacionados con una determinada caracterstica opatologa.
Agrupamiento automtico de textos por temas.
Definir tipos de clientes y orientar las estrategias comerciales en funcinde esos grupos.
En general, definir grupos en conjuntos de datos de los que no se cono-ce una subdivisin previa: astronoma, fsica, qumica, biologa, medicina,farmacologa, economa, sociologa, psicologa, etc.
A menudo el agrupamiento de los datos precede a la clasificacin de nuevos
datos en alguno de los grupos obtenidos en el agrupamiento; por esa razn,
el agrupamiento y la clasificacin de datos estn estrechamente relacionados,
como se podr observar en este subapartado, que comparte algunas tcnicas
con el subapartado 4.3.
Los algoritmos de agrupamiento se pueden clasificar en dos tipos: losjerrqui-coscon progresivos, es decir que van formando grupos progresivamente, y se
estudiarn en primer lugar; los particionales slo calculan una particin de
los datos: los restantes algoritmos estudiados en este subapartado pertenecen
a esta categora.
Utilizando algoritmos de agrupamiento es posible construir recomendadores
basados en modelos, llamados as porque a diferencia de los recomendadores
basados en datos no necesitan almacenar todos los datos de que se dispone,
sino que producen una abstraccin de los datos dividindolos en grupos; para
producir una recomendacin slo es necesario asociar un usuario o productoa un grupo existente, por lo que la informacin a almacenar se reduce a la
descripcin de los grupos obtenidos previamente. De esta forma la generacin
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
32/214
CC-BY-NC-NDPID_00174137 32 Inteligencia artificial avanzada
de una recomendacin se simplifica notablemente, y por tanto los recursos
requeridos para generarla.
.
Ms all de los recomendadores, una de las caractersticas ms impor-
tantes de los algoritmos de agrupamiento es que permiten organizar
datos que en principio no se sabe o puede clasificar, evitando criterios
subjetivos de clasificacin, lo que produce una informacin muy valio-
sa a partir de datos desorganizados.
Una caracterstica comn a casi todos los algoritmos de agrupamiento es que
son capaces de determinar por s mismos el nmero de grupos idneo, sino
que hay que fijarlo de antemano o bien utilizar algn criterio de cohesin
para saber cundo detenerse (en el caso de los jerrquicos). En general ello re-quiere probar con diferentes nmeros de grupos hasta obtener unos resultados
adecuados.
2.3.3. Agrupamiento jerrquico. Dendrogramas
.
Hay dos tipos de algoritmos de agrupamiento jerrquicos. El algoritmo
aglomerativoparte de una fragmentacin completa de los datos (cada
dato tiene su propio grupo) y fusiona grupos progresivamente hasta
alcanzar la situacin contraria: todos los datos estn reunidos en un
nico grupo. El algoritmo divisivo, por su parte, procede de la forma
opuesta: parte de un nico grupo que contiene todos los datos y lo va
dividiendo progresivamente hasta tener un grupo para cada dato.
*O diagrama de rbol, delgriegodendron, rbol, y
gramma, dibujo.
Eldendrograma* es un diagrama que muestra las sucesivas agrupaciones que
genera (o deshace) un algoritmo de agrupamiento jerrquico. En la figura 4
puede verse el dendrograma resultante de aplicar agrupamiento aglomerativoa los datos mostrados en la tabla 6.
Figura 4. Dendrograma de los 8 jugadores de ejemplo de la tabla 6
A B C D E F G H
AB CD EH FG
EFGHABCD
ABCDEFGH
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
33/214
CC-BY-NC-NDPID_00174137 33 Inteligencia artificial avanzada
En los algoritmos jerrquicos de agrupamiento, se parte del estado inicial y se
aplica un criterio para decidir qu grupos unir o separar en cada paso, hasta
que se alcance el estado final. Si bien conceptualmente ambos tipos de algo-
ritmos jerrquicos (aglomerativo y divisivo) son equivalentes, en la prctica
el algoritmo aglomerativo es ms sencillo de disear por la razn de que slo
hay una forma de unir dos conjuntos, pero hay muchas formas de dividir unconjunto de ms de dos elementos.
Criterios de enlace
En cada paso de un algoritmo de agrupamiento jerrquico hay que decidir
qu grupos unir (o dividir). Para ello hay que determinar qu grupos estn
ms cercanos, o bien qu grupo est menos cohesionado. Supongamos que
estamos programando un algoritmo aglomerativo; la distancia entre dos gru-pos puede determinarse segn diferentes expresiones, que reciben el nombre
de criterios de enlace. Algunos de los criterios ms utilizados para medir la
distancia entre dos grupos Ay Bson los siguientes:
Distancia mxima entre elementos de los grupos (enlace completo):
max{d(x,y) : x A,yB}
Distancia mnima entre elementos de los grupos (enlace simple):
max{d(x,y) : x A,yB}
Distancia media entre elementos de los grupos (enlace medio):
1|A||B|
XxA
XyB
d(x,y)
Una desventaja del criterio de enlace simple es que puede provocar que un
nico elemento fuerce la unin de todo su conjunto con otro conjunto que,
por lo dems, no sea especialmente cercano. Por esa razn en general se pre-
ferirn otros criterios (completo, medio u otros).
Cdigo del algoritmo aglomerativo
En el siguiente programa se definen las funciones necesarias para calcular elagrupamiento aglomerativo sobre conjunto de datos utilizando distancia eu-
cldea (podra utilizarse otra distancia) y criterios de enlace completo o m-
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
34/214
CC-BY-NC-NDPID_00174137 34 Inteligencia artificial avanzada
nimo. La funcin fusionaGrupos toma un agrupamiento, selecciona los dos
grupos ms cercanos segn el criterio indicado y los fusiona; la funcin agru-
pamientoAglomerativo inicialmente genera un grupo para cada dato y los va
fusionando hasta que slo queda un grupo; en cada fusin muestra el agru-
pamiento resultante. Finalmente se incluye una funcin leeJugadoresque lee
un fichero con los datos de los jugadores en formato horasJuego horasChatclase (se incluye la clase para evaluar el rendimiento del programa).
Cdigo 2.7: Agrupamiento aglomerativo
1 from math import sqr t23 # C al cu la l a d i s t an c i a e u c l d e a e n t r e d os v e c t o r e s / t u p la s4 def d i s t Euc l idea ( v1, v2) :5 return sq rt (sum(pow(xy ,2 ) for x , y in z i p ( v 1 , v 2 ) ) )678 # C a lc u l a e l e n l a c e c o m pl e t o ( m ximo ) e n t r e d o s g r u p o s9 # ( d i s t a n c i a mxima e n t r e d o s p u nt o s d e c ad a g r up o )
10 def enlaceCompleto(puntos , g1, g2 , dis t = distE uclid ea ) :11 # Bu sc a e l m ximo en l a s c o m bi n ac i o ne s d e p u nt o s12 maxima = 0.013 for p1 in g1 :14 for p2 in g2 :15 d = d i s t ( puntos [p1 ] , puntos [p2 ])16 if d > maxima:17 maxima = d18 return maxima192021 # C a lc u la e l e n l ac e s i mp l e ( mnimo ) e n t r e d os g r up o s22 # ( d i s t a n c i a mmnima e n t r e d o s p u n t o s d e c a da g r u p o )23 def enlac eSimple( punt os , g1, g2, d is t = dis t Euc l idea ) :24 # Bu sc a e l m nimo en l a s c o m bi n ac i o ne s d e p un t os
25 minima = f l o a t ( " i n f " )26 for p1 in g1 :27 for p2 in g2 :28 d = d i s t ( puntos [p1 ] , puntos [p2 ])29 if d < minima:30 minima = d31 return minima3233 # D ado u n c o n j u nt o d e p u nt o s y un a gr u pa mi en to , f u s i o n a34 # l o s d os g ru po s ms c e r c an o s c on e l c r i t e r i o i nd i ca d o .35 # " g r u p o s " d e be c o n t e n e r a l menos d o s g r up o s , y v u e l v e36 # m od if ic ad o , c on l o s g r up o s e l e g i d o s f u s io n a do s .37 def fusionaGrupos( puntos , grupos , cr it er io =enlaceCompleto ,38 d i s t =di st Euc l i dea ) :39 if l e n ( g r u p o s ) < 1 : return
4041 # B us ca e l p a r d e g r u p o s ms a de c ua d os ( v a l o r mnimo42 # d el c r i t e r i o u t i l iz a d o ) .43 minimo = f l o a t ( " i n f " )44 nombres = g ru po s . k ey s ( )45 for i in range( len (nombres) 1) :46 for j in range( i +1, len( nombres) ) :47 d = c ri t er io ( puntos , grupos [ nombres [ i ] ] ,48 grupos [ nombres [ j ] ] , d i s t )49 if d < minimo:50 minimo = d51 candidato = ( nombres [ i ] , nombres [ j ] )5253 # E l no mbre d e l n u ev o g ru p o s e r e l ms b aj o d e l o s d os54 nombreGrupo = min(candidato)
55 g ru po Bo rr ar = max ( ca nd id at o )5657 # F us io na l o s d os g r u p o s : a ad e l o s e l em e nt o s a uno d e58 # e l l o s y e li mi na e l o t r o d e l d i c c i o n a r i o " g ru po s " .59 grupos[nombreGrupo ]. extend( grupos[ grupoBorrar ])
5/20/2018 Inteligencia Artificial Avanzada (Modulo 1)
35/214
CC-BY-NC-NDPID_00174137 35 Inteligencia artificial avanzada
60 del (grupos[grupoBorrar ])616263 # A g ru pa mi en to j e r r q u i c o a g l o m e r a t iv o : f u s i o n a g r u p o s64 # h a st a o b t e n er un n i c o g r u po65 def agrupamientoAglomerativo( puntos , cr it e ri o =enlaceCompleto ,66 d i s t = di stE uc l ide a ) :
67 # Ge n er a c i n d e l a g r u pa m ie n to i n i c i a l ( c a da p un to un g ru p o )68 grupos = { x : [ x] for x in puntos}69 print (grupos)7071 # Fu si n de g r up o s h as ta c o n s e g u i r un n i co g r up o72 while l en( gr upos) > 1 :73 f usionaGrupos ( puntos , grupos , c r i te r i o , d i s t )74 print (grupos)7576 # L ee u n f i c h e r o c on l o s d at os d e l o s j ug a do r es , f or ma to77 # " h o r as J ue g o h or as Ch at c l a s e " ( l a c l a s e s e i g n or a )78 def lee Jug ado res (nomFich=" Juga dores . txt " ) :79 l i ne a s = [ ( l . s t r i p ( ) ) . s p l i t ( " \ t " )80 for l in (open(nomFich). readlines ())]81 # S e a s i gn a u n i d = 0 , 1 , 2 , . . . a c a da j u g a d o r
82 diccio = { }83 for i in r ange( len( l ineas ) ) :84 d ic ci o [ i ] = ( f l o a t ( l i ne a s [ i ] [ 0 ] ) , f l o a t ( l i ne a s [ i ] [ 1 ] ) )85 return d ic c io868788 # D i c c i o n ar i o d e p un to s d e e j em p lo c on s u s c o o r de na d as89 puntos = { A : ( 0 . 5 , 4 . 5) , B : ( 1 , 4) , C : ( 0 . 5 , 2) , D : ( 1 , 1 . 5 ) ,90 E : ( 2. 5 , 2 ) , F : ( 3. 5 , 3 .5 ) , G : ( 4. 5 , 2 .5 ) , H : ( 4 , 1 )}
Una posible optimizacin del programa consistira en almacenar las distan-
cias entre grupos para no tener que recalcularlas todas en cada fusin. En el
programa de ejemplo no se ha hecho as para no complicarlo por cuestionesde simple eficiencia.
Conclusiones
El principal inters de los algoritmos jerrquicos radica en que generan di-
ferentes grados de agrupamiento, y su evolucin, lo que puede ser tan til
como la obtencin de un agrupamiento definitivo. Adems son sencillos con-
ceptualmente y desde el punto de vista de la programacin. Por otra parte,los