inteligencia artificial avanzada (modulo 1)

214
Inteligencia artificial avanzada Raúl Benítez Gerard Escudero Samir Kanaan PID_00174137

Upload: umigia

Post on 10-Oct-2015

82 views

Category:

Documents


1 download

DESCRIPTION

Inteligenciaartificial avanzada.UOC

TRANSCRIPT

  • 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