2018-20

Sistemas de Recomendación

 

Nombre del curso:  Sistemas de Recomendación
Course Name:  Recommender Systems
Créditos: 4
Profesores: Andrés Darío Moreno (dar-more– at – uniandes.edu.co)
Claudia Jiménez (cjimenez – at – uniandes.edu.co)

Descripción

La amplia penetración de internet, del uso de los dispositivos móviles, la amplia gama de sensores conectados (ambientales, de ámbito personal, embebidos) abren la posibilidad de análisis de grandes cantidades de datos con miras a apoyar la calidad de vida de los individuos, sus decisiones diarias y las de sus negocios.

Los sistemas de recomendación modernos se basan en el análisis de información de contexto con el fin de determinar e inferir nueva información de interés para los usuarios y las organizaciones para apoyar el proceso de toma de decisiones de estos. Ejemplos claros de tales sistemas son los que permiten direccionar campañas de mercadeo, sistemas que permiten enrutar mensajes o sugerir nuevos contactos en redes sociales, hacer análisis de tendencias para sugerir novedades a perfiles de segmentos de clientes (productos, contenidos) o dar apoyo en la planeación a nivel urbano o empresarial. Un caso especial de recomendaciones son los sistemas de alerta (por ejemplo, casos de situaciones de monitoreo de seguridad, monitoreo médico, gestión de riesgos, en general situaciones en las que se encuentra una situación excepcional).

En general, los sistemas de recomendación ayudan a un usuario a evaluar la pertinencia que un ítem (i.e página web, libro, película, alerta) tiene para un usuario basado en su contexto. Los sistemas de información son útiles ya que calculan esta relevancia automáticamente, lo que permite a sus usuarios evaluar una gran cantidad de opciones que no podrían evaluar de otra forma, bien sea por falta de experiencia individual del usuario o por la abrumadora cantidad de ítems presentes en el sistema.

El contexto utilizado para calcular la pertinencia de los ítems puede estar dado por los patrones de comportamiento de un individuo o de una comunidad. Para que una recomendación sea adecuada, debe ser entregada de forma oportuna y pertinente. De lo contrario, puede convertirse rápidamente en spam. Es clave determinar entonces qué se recomienda, a quién, cuándo y cómo.

El curso busca generar habilidades de análisis de información y de diseño de sistemas de recomendación en diferentes escenarios, utilizando principalmente tecnologías de computación móviles y sensores como fuentes de datos

Objetivos

  • Analizar estrategias de diseño de sistemas de recomendación basadas en fuentes de datos personales, Web y empresariales
  • Identificar las estrategias de recomendación adecuadas según el apoyo que se le quiere brindar al usuario y la información de contexto disponible.
  • Identificar nuevos servicios de recomendación que apoyen decisiones de usuarios en sistemas existentes.
  • Comprender e incorporar en el diseño de soluciones elementos de computación no intrusiva (pervasive), desarrollar y evaluar dichas soluciones
  • Analizar streams de datos (offline, online y en tiempo real) que permitan generar modelos de recomendación de información pertinente

Elaborar soluciones que permitan validar modelos de recomendación con respecto a su pertinencia, teniendo en cuenta niveles semánticos de recomendación aplicando una metodología para el desarrollo de sistemas de análisis de datos

Para el adecuado desempeño en el curso se requieren habilidades de:

  • Saber programar. Es deseable tener conocimiento de Phyton, Java o C++ (en ese orden de preferencia)
  • Desarrollo de aplicaciones Web, desarrollo de servicios
  • Uso y administración básica de Linux
  • Fundamentos de probabilidad y estadística.
  • Matemáticas (incluyendo fundamentos de álgebra lineal)
  • Gestión básica de bases de datos

Es recomendable, mas no indispensable, que el estudiante haya tenido experiencia en el desarrollo de soluciones que involucran manejo de cantidades considerables de datos. Puede ser a nivel de bases de datos o manejo eficiente de archivos.

En cuanto a las habilidades de programación, es recomendable conocer lenguajes de programación como Java o Phyton. Es importante, mas no indispensable, tener experiencia en ambientes de desarrollo de software orientado por objetos. Igualmente, tener habilidades en el uso de IDEs será un facilitador de los procesos de desarrollo de software.