SR-REJA (SIstema de Recomendación de REstaurantes de JAén) es el resultado del proyecto de investigación:

Sistema de Recomendación de Restaurantes basado en lógica difusa (JA031/06)

Concedido por la Consejería de Turismo, Comercio y Deporte de la Junta de Andalucía en la convocatoria de Subvenciones para el desarrollo de acciones de sensibilización y concienciación de la cultura de la calidad turística andaluza del año 2006. 

El objetivo de este proyecto de investigación es desarrollar un sistema de recomendación de Restaurantes de la provincia de Jaén basado en técnicas de soft computing a la hora de realizar los cálculos de las recomendaciones.

Para conocer el funcionamiento de SR-REJA (REJA a partir de ahora) siga leyendo.

El sistema aquí presentado implementa dos modelos de recomendación:

  1. Colaborativo

  2. Basado en Conocimiento

Ambos modelos de recomendación se basan en las técnicas presentadas en los trabajos publicados por los miembros del Grupo de Investigación Sistemas Inteligentes de la Universidad de Jaén en el ámbito de los Sistemas de Recomendación y Técnicas de Soft Computing.

REJA es un sistema de recomendación con funcionalidad total, implementado sobre una base de datos con restaurantes de la provincia pero sin datos reales de los mismos sino simulados ya que el periodo de desarrollo y la subvención obtenidos de la Administración no nos permitía recopilar dichos datos. Sin embargo, estamos trabajando para que en un futuro cercano los datos sobre los que se trabaje sean reales y fiables.

 


Funcionalidad

Como hemos indicado anteriormente REJA tiene desarrollado completamente las funciones de recomendación para las que ha sido diseñado e implementado aunque los datos no sean reales.

En la mayoría de los sistemas de recomendación se suelen utilizar bases de datos en las que las puntuaciones de los usuarios sobre los ítems son numéricas. Sin embargo, esto puede resultar poco intuitivo para los usuarios en muchas ocasiones. REJA trabaja sobre una base de datos de restaurantes y puntuar este tipo de objetos numéricamente no resulta lo más adecuado para el usuario por lo que se han utilizado variables lingüísticas y se ha trabajado con ellas mediante un modelo computacional de 2-Tuplas para no perder información con respecto al uso de variables numéricas.

REJA incluye los dos modelos de recomendación comentados anteriormente: 

Modelo Colaborativo

Un Sistema de Recomendación Colaborativo es aquel en el que las recomendaciones se realizan basándose solamente en términos de similitud entre los usuarios. El funcionamiento de este tipo de sistemas de recomendación es el siguiente:

  1. El sistema guarda un perfil de cada usuario con sus evaluaciones sobre objetos conocidos por él y que pertenezcan a la base de datos sobre la que se trabaje.
  2. Se mide el grado de similitud entre los distintos usuarios del sistema en base a sus perfiles y se crean grupos de usuarios con características afines.
  3. El sistema usará toda la información obtenida en los pasos anteriores para realizar las recomendaciones. A cada usuario le recomendará ítems que no haya evaluado y que lo hayan sido de manera positiva por el resto de miembros de su grupo.
Por lo tanto, estos sistemas de recomendación no toman en consideración el contenido y las características de los productos que recomiendan sino que sean del gusto de usuarios con un perfil semejante al usuario que demanda el servicio.
Para obtener un Sistema de Recomendación Colaborativo de calidad es indispensable utilizar un buen Algoritmo de Filtrado Colaborativo. Estos algoritmos se pueden dividir en dos categorías:
  • Algoritmos basados en memoria o usuario -> utilizan la base de datos completa para la generación de predicciones y recomendaciones. Son muy populares pero también son muy proclives a sufrir problemas de escasez y escalabilidad.
  • Algoritmos basados en modelo o ítem -> para realizar recomendaciones primero desarrollan un modelo de la base de datos (usando reglas, Bayes, clustering...).
Un Algoritmo de Filtrado Colaborativo sigue los siguientes pasos:
  1. División de la base de datos en dos conjuntos disjuntos: entrenamiento y test.
  2. Cálculo, sobre el conjunto de entrenamiento, de los K vecinos más cercanos o similares a cada uno de los ítems usando alguna métrica de similaridad.
  3. Cálculo de predicciones para los usuarios del conjunto de test utilizando algún algoritmo de predicción.
  4. Medida de la precisión de las predicciones obtenidas.
En REJA no hemos implementado ningún algoritmo de filtrado colaborativo sino que hemos ultilizado un motor de filtrado colaborativo llamado CoFE y hemos trabajado sobre los datos obtenidos.
Finalmente, he aquí un pequeño ejemplo visual del funcionamiento del Sistema de Recomendación Colaborativo que  REJA ha implementado:

{youtube}ZyiuWp6HBNM{/youtube}

Modelo Basado en Conocimiento

Los sistemas de recomendación tradicionalmente más usados (colaborativos y basados en contenido) presentan una serie de limitaciones que condicionan la calidad de las recomendaciones generadas. Estos sistemas de recomendación necesitan de información histórica sobre las acciones pasadas de los usuarios para generar las recomendaciones. Sin embargo, no siempre esta información es útil, suficiente o está disponible. Estas situaciones son bastante comunes en este tipo de problemas, ya que es fácil encontrarse con: personas que visiten por primera vez la ciudad y, por lo tanto, que usen por primera vez nuestro sistema; con usuarios que, aunque hayan utilizado alguna vez este sistema, desean almorzar en un restaurante por una situación puntual (cumpleaños, jubilación...) no relacionada con ninguna de sus acciones pasadas; o con usuarios que, aunque ya hayan interaccionado con el sistema, no han proporcionado suficiente información como para que el modelo colaborativo genere recomendaciones precisas.

Los Sistemas de Recomendación Basados en Conocimiento surgieron con el objetivo de ser capaces de generar recomendaciones en este tipo de situaciones. Para ello, utilizarán el conocimiento proporcionado por el usuario sobre sus necesidades (conocimiento del usuario), el conocimiento que tiene el sistema mismo sobre los ítems de la base de datos (conocimiento del catálogo) y como estos ítems satisfacen las necesidades del usuario (conocimiento funcional.La forma en que utiliza este conocimiento es a través de un Razonamiento Basado en Casos.

En REJA hemos implementado un Modelo de Recomendación Basado en Conocimiento que consta de tres fases diferenciadas:

  1. Adquisición de conocimiento sobre las necesidades del usuario: el sistema debe recoger las necesidades del usuario de la forma más precisa y sencilla posible. En estos sistemas esta información suele ser proporcionada mediante un ejemplo, aunque también se permitirá que el usuario proporcione datos de manera manual. En REJA esta información puede ser proporcionada de tres formas distintas.
    1. Mediante un ejemplo: el usuario proporcionará un restaurante ejemplo de lo que necesita. Esta opció nserá particularmente útil para aquellos usuarios que conocen algunos restaurantes de la zona.
    2. Estableciendo los parámetros de búsqueda: en este caso el usuario expresa sus necesidades valorando los parámetros precio del menú, tipo de cocina y tipo de establecimiento preferido. Esta opción es la más adecuada si el usuario no conoce la zona.
    3. Proporcionando un conjunto de preferencias sobre un conjunto dado de restaurantes dados: esta opción sólo estará disponible para usuarios registrados en el sistema. Éstos deberán elegir un restaurante que sea de su agrado y el sistema le mostrará otros tres restaurantes (los dos últimos evaludados por el usuario y el más alejado en distancia del elegido). A continuación el usuario tendrá que definir preferencias entre el restaurante elegido por él y los tres presentados por el sistema. En base a estas preferencias el sistema construirá una matriz de preferencias que será parte fundamental para calcular los perfiles parciales del usuario (usando la agregación IOWA ) y el perfil final del mismo.
  2. Filtrado de ítems de la base de datos: el objetivo de esta fase es filtrar los restuarantes de forma que sólo trabajemos con aquellos que puedan satisfacer las necesidades del usuario. El filtro se realizará usando los atributos precio y tipo de cocina.
  3. Recomendación: de entre todos los restaurantes que cumplen en mayor o menor medida las necesidades del usuario se deben escoger los que mejor pueden satisfacerlas. Para ello ordenamos el conjunto de restaurantes obtenido en la fase anterior por la calidad y el servicio ofrecido utilizando una media ponderada de 2-Tuplas y se devolverán los 10 restaurantes con mejor valoración.

Si desea conocer más en profundidad la metodología científica que se ha seguido para la realización de este Modelo de Recomendación Basado en Conocmiento puede leer este documento pdf.

Para conlcuir con el Modelo de Recomendación Basado en Conocimiento una pequeña demostración viisual del funcionamiento del Modelo Basado en Conocimiento para usuarios no registrados:
{youtube}HzdR4EKEXs4{/youtube}

Y para usuarios registrados:

{youtube}UiXTbPDusUk{/youtube}

Desde el staff de REJA le animamos a registrarse en nuestra aplicación y empaparse de todas sus funcionalidades. ¡BIENVENIDO Y A DISFRUTAR!

Un cordial saludo.