• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
AndalucíaPeople: Un sistema de recomendación para sitios de ocio de Andalucía
 

AndalucíaPeople: Un sistema de recomendación para sitios de ocio de Andalucía

on

  • 348 views

Documentación de mi proyecto fin de carrera

Documentación de mi proyecto fin de carrera

Statistics

Views

Total Views
348
Views on SlideShare
348
Embed Views
0

Actions

Likes
0
Downloads
10
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    AndalucíaPeople: Un sistema de recomendación para sitios de ocio de Andalucía AndalucíaPeople: Un sistema de recomendación para sitios de ocio de Andalucía Document Transcript

    • Proyecto Fin de Carrera | Ingeniería Informática | Universidad de Granada AndalucíaPeople Un sistema de recomendación para sitios de ocio de Andalucía Autor: Manuel Martín Salvador Tutor: Juan Huete Guadix Curso 2008/2009 1
    • 2
    • Índice1. Introducción 5 1.1. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2. Situación inicial . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3. Mejoras planteadas . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4. El modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62. Introducción a los sistemas de recomendación 83. Sistema de recomendación basado en contenido 9 3.1. Elementos del sistema de recomendación . . . . . . . . . . . . 10 3.2. Esquema de pesos . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3. Red Bayesiana . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.4. Estimación de probabilidades . . . . . . . . . . . . . . . . . . 14 3.5. Mecanismo de inferencia . . . . . . . . . . . . . . . . . . . . . 15 3.6. Predicción vs Recomendación . . . . . . . . . . . . . . . . . . 20 3.7. Problema del cold-starting . . . . . . . . . . . . . . . . . . . . 20 3.8. Un poco más rápido . . . . . . . . . . . . . . . . . . . . . . . 20 3.9. Limitaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214. Sistema de filtrado colaborativo 21 4.1. Elementos del sistema de recomendación . . . . . . . . . . . . 21 4.2. Medidas de similaridad . . . . . . . . . . . . . . . . . . . . . . 22 4.3. Predicción del voto . . . . . . . . . . . . . . . . . . . . . . . . 22 4.4. Problema del cold-starting . . . . . . . . . . . . . . . . . . . . 235. Evaluación 23 5.1. Colección de datos . . . . . . . . . . . . . . . . . . . . . . . . 23 5.2. Métricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.3. Metodología . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.4. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3
    • 6. Soluciones desarrolladas 287. Aspectos adicionales del desarrollo 29 7.1. Entorno de desarrollo . . . . . . . . . . . . . . . . . . . . . . . 29 7.2. Entorno de producción . . . . . . . . . . . . . . . . . . . . . . 29 7.3. Control de versiones . . . . . . . . . . . . . . . . . . . . . . . 30 7.4. Sistema de tickets . . . . . . . . . . . . . . . . . . . . . . . . . 30 7.5. Licencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308. Manual de usuario 309. Conclusión 36Referencias 37 4
    • 1. Introducción1.1. MotivaciónEl germen de este proyecto surgió en 2006 cuando comenzó a implantarseen Internet la tecnología para usar mapas en cualquier web de la mano deempresas como Google o Yahoo! que ofrecían herramientas para facilitar lacreación de mashups. Partiendo de este contexto, comencé junto con un com-pañero a idear una web donde posicionar sobre un mapa los bares y pubs deGranada. Con este propósito comenzó GranadaPeople, y con el paso del tiem-po fue creciendo gracias al apoyo de muchas personas, incorporando nuevasfuncionalidades y ampliándose con nuevos locales.Una de las personas que se interesaron por la web fue mi tutor de proyecto,que nos animó a hacer un sistema de recomendación, y viendo las posibilida-des que esto tenía, decidí hacerlo como proyecto de fin de carrera.1.2. Situación inicialPartimos de la web GranadaPeople que fue desarrollada desde cero en PHPy contiene las siguientes características: Una colección de sitios con la siguiente información: nombre, dirección, zona, coordenadas y usuario que lo ha enviado. Un sistema de votación entre 1 y 5 estrellas para que los usuarios pue- dan valorar los sitios. Cada sitio contiene una serie de etiquetas que ayudan a perfilar mejor el tipo de sitio del que se trata. En base a estas etiquetas se pueden establecer unos sitios por similaridad (un sitio se parece tanto más a otro cuantas más etiquetas tengan en común). Uun sistema de comentarios y de subida de fotografías relacionadas con los sitios. Buscador de sitios por etiquetas y por zonas. Geolocalización sobre un mapa, para colocar con la mayor exactitud la posición de un sitio. Listado de eventos y hoteles en la ciudad, proporcionados por agentes externos. 5
    • Sistema de amigos y de mensajería privada.1.3. Mejoras planteadasEl proyecto se basa en mejorar este sistema y ampliarlo a todas las provin-cias andaluzas, para conformar la web andaluciapeople.com. Detallamos unlistado de las mejoras que se pretenden realizar: Incluir las 8 provincias andaluzas de forma que puedan ser indepen- dientes, pero administradas bajo la misma interfaz. Incentivar al usuario para que se implique más en la plataforma, ya sea enviando nuevos sitios, corrigiendo errores, valorando sitios, haciendo comentarios y subiendo fotografías. Un sistema de recomendación de sitios que proporcione una buena ex- periencia al usuario. Una versión especial para dispositivos móviles que sea ligera y fácil de usar. Posibilidad de cambiar el idioma.Para alcanzar estos objetivos se la sección 2 estudiaremos los distintos tiposde sistemas de recomendación, para de forma más detallada en la sección 3comentar los sistemas de recomendación basados en contenido y en la sección4 los sistemas de filtrado colaborativo. Se presentan los resultados experimen-tales en la sección 5 y para finalizar se enumeran las soluciones desarrolladasjunto otros aspectos del desarrollo y un manual de usuario en las secciones6, 7 y 8.1.4. El modeloCon el fin de desarrollar una aplicación web como esta, se han definido una se-rie de clases que especifican un modelo de red social orientada principalmentea la interacción de los usuarios con el sistema. De esta manera, un usuarioserá capaz de añadir nuevos sitios de un determinado tipo, descritos por eti-quetas categorizadas en una jerarquía, escribir comentarios, subir fotografíasy votar cualquier sitio. También podrá establecer lazos de amistad con otrosusuarios y decir explícitamente cuáles son aquellas características que más legustan con vistas a que el sistema pueda hacer mejores recomendaciones denuevos sitios que aún no conoce. 6
    • User (Usuario): es el elemento más importante de la aplicación, ya que en torno a él van a girar el resto de clases. Sitio: es el segundo elemento más importante. Contiene la información esencial de un sitio: nombre, dirección, coordenadas, teléfono, etc. Tipo: engloba los distintos tipos que pueden definir a un sitio. Etiqueta: cualquier tag que sirva para describir mejor a un sitio. Jerarquía: sirven para definir conjuntos de etiquetas relacionadas. ObjetoEtiquetado: relación entre un sitio y una etiqueta. DatosUsuario: algunos datos personales del usuario, así como su lis- tado de sitios favoritos y las etiquetas que más le gustan. Foto: fotos de un determinado sitio subidas por un usuario. Comentario: comentarios sobre un sitio hechos por un usuario. Voto: valoración de un sitio de un usuario. Amigo: usuarios que establecen una relación de amistad. PesosTipoJerarquía: peso asignado por un usuario a una jerarquía de etiquetas a un determinado tipo de sitio.En la siguiente figura se puede observar el grafo de dependencias entre lasclases previamente enumeradas. Figura 1: Grafo del modelo simplificadoAdemás de las clases aquí descritas, se han utilizado algunas más de desarrolloexterno como pueden ser las necesarias para el sistema de mensajería privadao el blog. 7
    • 2. Introducción a los sistemas de recomenda- ciónEn la vida diaria, la publicidad masiva nos invade en televisión, prensa, radioo carteles en la calle. Si bien esto sirve a las marcas para afianzar su imagen ycaptar clientes, su coste puede llegar a ser muy alto respecto a la efectividadque tienen. En cambio, los productos como libros, películas, discos, etc. loscompramos bien porque nos gusta el autor o el género, o bien porque nos lorecomienda algún amigo.El término “sistema de recomendación” surge en los años 90 ligado a proyectosde Inteligencia Artificial en Internet y hoy en día tinen un gran auge con lallamada “Web 2.0”. Algunos ejemplos de uso son [22]: Recomendaciones en tiendas online: partiendo de un producto se re- comiendan otros que han interesado a los usuarios que lo compraron. (Amazon) Filtrado de noticias: se le da más prioridad al tipo de noticias que el usuario consulta frecuentemente. (Google) Recomendaciones musicales, de libros y de películas: generan recomen- daciones en base a los gustos del usuario (MyStrands, filmaffinity) Búsqueda de personas afines en comunidades: se puede generar una lista de vecinos con intereses similares en base a las acciones de un usuario (meneame, last.fm).Los sistemas de recomendación se clasifican normalmente en tres categorías[11]: Sistemas de recomendación basados en contenido: almacenan información sobre cada ítem que va a ser recomendado. Esta informa- ción se usa para recomendar ítem similares a los que previamente ha valorado el usuario. Los principales problemas que acarrea este tipo de sistema son: • Los descriptores que se usan para representar los ítems pueden no resultar muy adecuados. • Es difícil hacer recomendaciones precisas a usuarios con pocos votos. 8
    • • Poca diversidad, ya que sólo se recomendarán ítems similares a los ya votados. Sistemas de filtrado colaborativo: tratan de identificar grupos de personas con intereses comunes al usuario y recomendar ítems que les gustaron. Los sistemas colaborativos se pueden clasificar en dos grupos [19]: • Basados en memoria: utilizan toda la base de datos de elementos y usuarios para generar predicciones. Se emplean técnicas estadís- ticas para encontrar a los vecinos y se combinan sus preferencias par agenerar una lista con los elementos más recomendables para el usuario actual. Es necesario disponer de un número mínimo de usuarios con suficientes votos, incluído el usuario al que se preten- de recomendar. • Basados en modelo: desarrollan primero un modelo de los votos del usuario y luego calculan para cada ítem el valor esperado en función de los anteriores. Se utilizan distintos algoritmos de apren- dizaje clustering o redes neuronales. Sistemas de recomendación híbridos: intentan combinar los dos enfoques anteriores. Se pueden encontrar diferentes métodos de hibri- dación: [15, 24, 13, 11] • Implementando colaborativo y basado en contenido por separado y combinando sus predicciones. • Incorporando algunas características del basado en contenido en el enfoque colaborativo, y viceversa. • Construyendo un modelo unificado que incorpore las característi- cas de ambos métodos.3. Sistema de recomendación basado en conte- nidoCuando se decidió desarrollar el sistema de recomendación, se considereraronuna serie de factores que hacen que éste sea considerado adecuado por losusuarios [16]: 9
    • Facilidad de uso: un sistema difícil haría que fuese usado por muchas menos personas. Calidad de las recomendaciones: cuanto mejor sean las recomen- daciones, los usuarios sentirán más afinidad por el sistema. Familiaridad de los ítems recomendados: si el usuario obtiene recomendaciones de sitios que conoce (pero que aún no ha votado) sentirá que el sistema funciona correctamente. Transparencia del sistema: se le puede decir al usuario porqué le recomendamos esos sitios, ya que se han obtenido siguiendo una serie de pasos lógicos.Tras leer diversos artículos, se partió del esquema de recomendación basadoen redes bayesianas que se explica en el artículo escrito por varios investiga-dores del departamento CCIA de la Universidad de Granada [15].3.1. Elementos del sistema de recomendaciónLos principales elementos que conforman el sistema recomendación son losítems (sitios), los descriptores (etiquetas o tags) y los usuarios, que junto consus votos hacen posible calcular una predicción de voto para un sitio que elusuario a priori no conoce.Estos elementos se pueden representar por las siguientes variables: Fk será un nodo que identifica una etiqueta que describe un sitio. Toma un valor binario, 0 si no es relevante, 1 si es relevante. Igualmente, habrá un nodo Ij para cada ítem. También toma valores binarios, 0 si no relevante o 1 si es relevante para la predicción que se está haciendo. El conjunto de gustos del perfil del usuario se tratará como un ítem más, cuya valoración será la máxima, ya que el usuario los ha seleccionado explícitamente. Por último se usará un nodo para representar la valoración predicha para el usuario activo y se denota con ACB , donde el subíndice indica que estamos usando el enfoque basado en contenido (content-based). Los posibles valores que puede tomar esta variable son los del conjunto {0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5 4, 4.5, 5}. El valor 0 se incluye para estimar cómo de fiable es el resultado predicho. 10
    • Para conectar estos nodos, consideraremos que la relevancia de un ítem de-penderá de la relevancia de los descriptores que lo definen. Luego habrá enla-ces entre los nodos descriptores y los nodos ítems. En cambio, no hay enlacesdirectos entre los nodos descriptores, esto es, las etiquetas son marginalmenteindependientes entre ellas.Los enlaces Fk → Ij indican que el sitio Ij está descrito por la característicaFk y su valor indica la importancia de la misma respecto al resto de etique-tas que lo describen. Los enlaces Ij → ACB indican que el usuario activo havotado el sitio Ij y el voto que le asignó será el valor de este enlace. Diremosque el usuario activo ha votado el sitio Ij cuando le haya asignado una va-loración del conjunto R={0.5, 1, 1.5, 2, 2.5, 3, 3.5 4, 4.5, 5}. La estimaciónde probabilidades y su propagación a lo largo de la red se detallan en lassecciones 3.4 y 3.5.3.2. Esquema de pesosCada sitio está identificado por una serie de etiquetas que le asignan signi-ficado semántico tales como la música de ambiente o el estilo de comida delrestaurante. De esta manera, podemos categorizar las etiquetas en diferentesgrupos: 1. Tipos: especifica el tipo de sitio. Un sitio puede tener varios tipos. Ejemplos: bar, restaurante, discoteca, pub, pizzería, heladería... 2. Estilo: sirve para especificar un poco mejor las características del sitio. Ejemplos: asador, buffet, chino, italiano, comida rápida, tapas, vegeta- riano... 3. Música: indica el tipo de música que suelen poner en el sitio. Ejemplos: electrónica, flamenco, jazz, latina, pop, rock, salsa... 4. Instalaciones: permite escoger entre distintas instalaciones de las que puede disponer el sitio. Ejemplos: billar, dardos, futbolín, karaoke, te- levisión, terraza, wifi... 5. Otros: engloba algunos extras que no pertenece a ninguna de las an- teriores categorías. Ejemplos: entrada pagando, no fumadores, no volu- men alto...Esta categorización nos va a permitir aumentar o disminuir el peso de losdescriptores según el tipo de ítem. Por ejemplo, en el caso de las etiquetas 11
    • pertenecientes a Estilo, tendrán un mayor peso en restaurantes, y en las deMúsica, en pubs, salas o discotecas. Se han definido por defecto unos pesos,pero que pueden ser ajustados por los usuarios siempre que lo deseen. Usuario Tipo Jerarquía Peso Estilo 0.5 Música 0.125 Restaurante Instalaciones 0.25 Otros 0.125 Manuel Estilo 0.3 Música 0.4 Pub Instalaciones 0.2 Otros 0.1 Cuadro 1: Ejemplo de matriz de pesos para el usuario Manuel3.3. Red BayesianaUsando redes bayesianas vamos a poder ver las relaciones entre los distintoselementos del sistema de recomendación y apreciar visualmente la propaga-ción de probabilidades.En la Figura 2 se muestra una primera aproximación de lo que sería la redbayesiana que podemos utilizar para predecir la puntuación de un sitio enbase a aquellos sitios que el usuario ha valorado. El principal inconvenienteque presenta es que trata a todas las etiquetas por igual y además hay queinstanciar todos los ítems que el usuario ha votado junto con sus etiquetas.Por ejemplo, digamos que el usuario ha votado 50 sitios, de los cuales 30 sonpubs y 20 son restaurantes. Si el usuario sólo quiere saber la predicción paraun determinado restaurante que no conoce, esta primera aproximación lo quehará es instanciar los 50 sitios votados junto con sus etiquetas. Si cada sitiotuviese 3 etiquetas, habría que instanciar 150 etiquetas en total. Es muyposible que muchas de ellas no aporten utilidad para el sitio que estamosprediciendo, ya que como la mayoría de los sitios votados son pubs, estasetiquetas pueden estar relacionadas con el tipo de música de estos sitios,mientras que en un restaurante posiblemente la música no tenga nada derelevancia, al contrario que el estilo de comidas que se sirvan. 12
    • Figura 2: Primera aproximaciónHemos tratado de resolver los problemas planteados anteriormente siguiendoel esquema de la Figura 3. Sólo se instancian aquellos sitios que son delmismo tipo que el que va a ser predicho. Además, introducimos una nuevacapa para categorizar las etiquetas. Con esta nueva estructura el objetivoque conseguimos es doble: mejorar la calidad de la predicción y hacerlo máseficientemente.Si aplicamos a este caso el ejemplo comentado anteriormente, de los 50 sitiosvotados por el usuario, sólo instanciamos los 20 que son restaurantes, queserían unas 60 etiquetas, con lo cual nos estamos ahorrando más de la mitad.Ahora, al introducir la nueva capa de jerarquías, se le va a dar un mayor pesoa las etiquetas que describen el estilo del restaurante que al resto a la hora dehacer la predicción. Esto sería el comportamiento predeterminado, pero seráfinalmente el usuario será el que decida qué importancia quiere darle a cadajerarquía para cada tipo de sitio. Se puede ver un ejemplo más detallado enla sección 3.5. 13
    • Figura 3: Solución adoptada3.4. Estimación de probabilidadesComenzando por los nodos descriptores (F ), no tienen padres y sólo esnecesario calcular la distribución de probabilidad a priori de su relevancia.En el proyecto hemos supuesto que todas las etiquetas son equiprobables:P r(fk,1 ) = 1/l Siendo l el tamaño del conjunto F .Los nodos jerarquías (C) se encargan de dar un peso determinado al valorde la probabilidad de los descriptores, tal como se ha comentado en la sección“Esquema de pesos”. Se tiene que cumplir que la suma de los pesos de lasjerarquías para un ítem sea 1. w(ij,1 , cu ) = 1cu ∈CCon respecto a los nodos ítems (I), los únicos pesos necesarios para calcularla probabilidad P r(ij,1 |pa(Ij )) son: 14
    • log((m/nk )+1)w(fk,1 , ij,1 ) = P log((m/nk )+1) Siendo nk el número de veces que la etiqueta Fk∈P a(I ) jFk se usa para describir un ítem y m el número de ítems.w(fk,0 , ij,1 ) = 0Para los nodos basados en contenido (ACB ), hay que considerar la in-fluencia de un ítem en el rango de valoraciones del usuario activo. Cuandoel usuario A vota un elemento Ik con el valor s, la probabilidad de este ítemirá al voto s. Los pesos necesarios son:w(ik,1 , acb,s ) = 1/I(A) Siendo I(A) el número de ítems votados por el usuarioAw(ik,1 , acb,t ) = 0 para t = s, 0 ≤ t ≤ #rw(ik,0 , acb,0 ) = 1/I(A)w(ik,0 , acb,t ) = 0 para 1 ≤ t ≤ #r3.5. Mecanismo de inferenciaEl objetivo del proceso de inferencia es estimar el voto para el usuario ac-tivo A dado un sitio (evidence), es decir, P r(A = s|ev). Para calcular estaprobabilidad, debemos instanciar el sitio y propagar a través de los distintosnodos. Esta propagación implica un proceso de marginalización que requie-re un tiempo exponencial. Sin embargo, teniendo en cuenta que en una redbayesiana un nodo es independendiente de sus antecesores dado que estosvalores se toman de sus padres, y usando las ventajas que ofrece el modelocanónico usado para expresar las distribuciones de probabilidad condicinoal,la distribución de probabilidad a posteriori se puede calcular eficientementecomo un mecanismo de inferencia de arriba a abajo (top-down). El siguienteteorema explica cómo calcular exactamente esta probabilidad:Teorema 1 : sea Xa un nodo en una red bayesiana, mXa el número de padresde Xa , Yj un nodo en P a(Xa ) y lYj el número de estados que puede tomar Yj .Se puede calcular la probabilidad a posteriori usando la siguiente fórmula: mXa lYjP r(xa,s |ev) = w(yj,k , xa,s ) · P r(yj,k |ev) j=1 k=1Por medio de este teorema se expresa que el nodo Xa recoge la probabilidadde sus predecesores y no necesita distribuirla de nuevo. Esto es importanteporque implica que se puede realizar la propagación en tiempo lineal respectoal número de padres [14]. 15
    • Centrándonos en la componente basada en contenido, el sitio a predecir estácompuesto de un conjunto de descriptores y por el ítem en sí mismo. En elprimer caso la propagación se realiza como se explica en el teorema anterior.Mientras que en el segundo caso, la probabilidad P r(Fk |ij,1 ) se calcula paracada nodo Fk conectado al ítem Ij . Estas probabilidades se pueden calcularpor medio del siguiente teorema.Teorema 2 : sea Fk un nodo descriptor de la jerarquía Cu perteneciente alítem Ij en una red bayesiana. La probabilidad a posteriori de su relevanciase puede calcular como: w(ij,1 , cu ) · P r(fk,1 ) si Fk ∈ P a(Ij ) /P r(fk,1 |ij,1 ) = w(fk,1 ,ij,1 )·P r(fk,1 )·(1−P r(fk,1 )) w(ij,1 , cu ) · P r(fk,1 ) + P r(ij,1 ) si Fk ∈ P a(Ij )siendo P r(ij,1 ) = w(fk,1 , ij,1 ) · P r(fk,1 ) Fk ∈P a(Ij )Predicción del votoUna vez que se han calculado las probabilidades a posteriori, hay que elegirel voto que se va a dar como predicción. Antes de obtener la predicción hayque normalizar las probabilidades al dominio de R, para ello hacemos: P r(A=s|ev)P r(A = s|ev) = 1−P r(A=0|ev) ∀s ∈ RExisten tres alternativas de elección: El voto promedio: predicci´n = o s · P r(A = s|evidence) ∀s∈R El voto mediano: predicci´n = {s|P r(A < s|evidence) ≤ 0,5, P r(A > o s|evidence) ≥ 0,5} El voto máximo: predicci´n = {s|P r(A = s|evidence) > P r(A = o s|evidence)}Para una mejor comprensión se puede ilustrar con este ejemplo que muestralos valores de la variable ACB : Valoración 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 Probabilidad 0 0 0 0 0.2 0.15 0.15 0 0 0.5 Voto mediano = 3.5 Voto promedio = 3.975 Voto máximo = 5.0 16
    • Algoritmo 1. Se instancia el ítem a predecir P r(ij,1 ) = 1 y calculan las probabilida- des de sus descriptores. A continuación se propagan las probabilidades usando el teorema 2 explicado en esta sección. 2. Se instancian sólo aquellos sitios del mismo tipo que el evidence y se propagan las probabilidades usando el teorema 1 que hemos visto an- teriormente. 3. Se selecciona un voto usando uno de los esquemas de predicción nom- brados anteriormente. En este proyecto se ha escogido el voto promedio porque es el que mejores resultados ha dado (ver sección de Evaluación).Ejemplo teórico de predicción Figura 4: Ejemplo ilustrativo 17
    • En el ejemplo de la Figura 4 se puede ver resaltado en amarillo las etiquetasdel sitio que va a ser predicho. Vamos a ir por capas obteniendo la probabi-lidad para cada nodo.Instanciamos el ítem a predecir.P r( Kirin1 ) = 1Calculamos las probabilidades de los descriptores del ítem instanciado. P r( Japon´s1 | Kirin1 ) = w( Restaurante , Estilo )· e w( Japon´s1 , Kirin1 ) · P r( Japon´s1 ) · (1 − P r( Japon´s1 )) e e e P r( Japon´s1 ) + e = P r( Kirin1 ) 0,5 · (0,5 + 0,386 · 0,5 · 0,5) = 0,298 P r( Servicio a domicilio1 | Kirin1 ) = w( Restaurante , Otros )· ! w( Servicio a domicilio1 , Kirin1 ) · P r( Servicio a domicilio1 ) · (1 − P r( Servicio a domicilio1 )) P r( Servicio a domicilio1 ) + = P r( Kirin1 ) 0,125 · (0,5 + 0,614 · 0,5 · 0,5) = 0,327Instanciamos los descriptores de los ítems relevantes.P r(fk,1 , Y amato1 ) = 1Calculamos la probabilidad de los ítems relevantes para el ítem a predecir. P r( Y amato1 | Kirin1 ) = w( Japon´s1 , Y amato1 ) · P r( Japon´s1 | Kirin1 )+ e e w( Japon´s0 , Y amato1 ) · P r( Japon´s0 | Kirin1 )+ e ew( Servicio a domicilio1 , Y amato1 ) · P r( Servicio a domicilio1 | Kirin1 )+w( Servicio a domicilio0 , Y amato1 ) · P r( Servicio a domicilio0 | Kirin1 ) = 0,386 · 0,298 + 0, 614 · 0,327 = 0,316 18
    • P r( W ok buf f et libre1 | Kirin1 ) = w( Japon´s1 , W ok buf f et libre1 ) · P r( Japon´s1 | Kirin1 )+ e e w( Japon´s0 , W ok buf f et libre1 ) · P r( Japon´s0 | Kirin1 ) = e e 0,386 · 0,298 = 0,115 P r( P erf il usuario1 | Kirin1 ) = w( Japon´s1 , P erf il usuario1 ) · P r( Japon´s1 | Kirin1 )+ e e w( Japon´s0 , P erf il usuario1 ) · P r( Japon´s0 | Kirin1 ) = e e 0,177 · 0,298 = 0,053Obtenemos la probablidad para cada uno de los votos.P r(A = 5| Kirin ) = P r( P erf il usuario1 | Kirin1 )+P r( Y amato1 | Kirin1 ) =0,053 + 0,316 = 0,369P r(A = 4| Kirin ) = P r( W ok buf f et libre1 | Kirin1 ) = 0,115P r(A = 0| Kirin ) = 1 − P r(A = s| Kirin ) = 0,516 ∀s∈RAhora normalizamos aquellas posiciones que son relativas a una valoración(es decir, las distintas a 0). [15] P r(A=4| Kirin )P r(A = 4| Kirin ) = 1−P r(A=0| Kirin ) = 0,2376 P r(A=5| Kirin )P r(A = 5| Kirin ) = 1−P r(A=0| Kirin ) = 0,7624Finalmente obtenemos como predicción el voto promedio.predicci´n = o s · P r(A = s| Kirin ) = 4,76 ∀s∈RLa fiabilidad de esta predicción la podemos calcular como:f iabilidad = (1 − P r(A = 0| Kirin )) · 100 = 48, 4 % 19
    • 3.6. Predicción vs RecomendaciónNo es lo mismo recomendar que predecir [18]. Predecir es simplemente esti-mar el valor del voto que un usuario daría a un determinado ítem según elconocimiento que el sistema tenga formado sobre el usuario gracias a votacio-nes previas que haya realizado. Por otra parte, recomendar involucra calcularpredicciones para un conjunto de ítems y mostrar aquellos resultados más afi-nes para el usuario. El usuario no quiere que le recomendemos sitios que nole gusten (predicción baja), sino aquellos que puede que le vayan a gustar(predicción media-alta).3.7. Problema del cold-startingPara que el sistema de recomendación funcione correctamente es necesarioque el usuario haya votado varios sitios, así como haber ajustado su perfil degustos. El problema del cold-starting [18, 12](o inicio frío) viene a plantearque esta situación ideal no siempre se da, ya que habrá usuarios nuevosque quieran recomendaciones sin haber valorado suficientes ítems. Se puedenabordar diferentes medios de actuación ante esta situación: Pasar de él: le decimos que no hay resultados y que es necesario votar más sitios para obtener recomendaciones. Tratarlo como el usuario medio: se trazaría un usuario medio conforme al resto de usuarios y se le recomendarían ítems. El problema es que el usuario medio no existe. Popularidad: mostrar aquellos ítems más populares en la categoría que se esté indicando. Es la solución que hemos adoptado.3.8. Un poco más rápidoPara mejorar la velocidad del sistema es posible cachear algunos resultadosque son menos proclives a cambiar como pueden ser: Etiquetas de un sitio: los descriptores con los que se incorpora un nuevo sitio suelen variar poco o nada. Probabilidad de un sitio para un usuario: esta probabilidad sólo cam- biará si el usuario vota nuevos sitios con el mismo tipo. 20
    • Probabilidad de un sitio para el evidence: esta probabilidad sólo variará si se cambian las etiquetas de alguno de los dos sitios.Por ejemplo, una consulta sobre recomendación de restaurantes en Granadapasa de tardar 4.51 segundos a 2.89 segundos tras habilitar el sistema decaché.3.9. LimitacionesEn el sistema de recomendación basado en contenido se usa informaciónestructurada, en nuestro caso los tipos y etiquetas. Sin embargo, no se tienenen cuenta las valoraciones de otros usuarios a la hora de recomendar sitios,por lo que se podría dar la situación de que estemos recomendando un sitioque, si bien está acorde con el perfil del usuario, está muy mal valorado porotros usuarios.Se aconseja pues, usar un método híbrido que tenga en cuenta tanto aspectoscuantitativos como cualitativos [23].Una preocupación de los usuarios ha sido que el sistema les ha recomendadositios de estilo gay cuando ellos no han votado ninguno de ese estilo, estopuede ocurrir porque estos sitios tengan otras etiquetas en común, comopueden ser la música o las instalaciones. Para tratar esta etiqueta en especial,lo que haremos será evitar estos resultados si el usuario no ha seleccionadoentre sus gustos este determinado estilo.4. Sistema de filtrado colaborativoLos sistemas de fitrado colaborativo intentan identificar grupos de personasque tienen gustos similares, de manera que un usuario pertenecerá un ciertogrupo dependiendo de los sitios que haya votado. Así pues, se puede definir elconcepto de vecinos como aquellos usuarios que más gustos en común tienencon el usuario activo. Los ítems a recomendar serán aquellos mejor valoradospor este conjunto de vecinos, o bien aquellos que más se asemejen al conjuntode etiquetas que definan a este grupo de usuarios.4.1. Elementos del sistema de recomendaciónEn el caso del filtrado colaborativo se necesitan los siguientes elementos: 21
    • Ui representa a un usuario. Ij representa a un ítem.Diremos que el usuario Ui habrá votado el sitio Ij cuando le haya asignadouna valoración del conjunto R={0.5, 1, 1.5, 2, 2.5, 3, 3.5 4, 4.5, 5}.4.2. Medidas de similaridadPara calcular la similaridad entre usuarios se pueden usar distintas métricas[12], entre las cuales hemos escogido las tres siguientes para una posteriorevaluación: Coseno: P m rux ,ih ·ruy ,ih h=1 sim(ux , uy ) = s s P 2 m P 2 m rux ,i ruy ,i h=1 h h=1 h donde ru,i es la valoración del ítem i por el usuario u y n es el número de ítems en común entre ambos usuarios. Correlación de Pearson: P m (rux ,ih −¯ux )·(ruy ,ih −¯uy ) r r h=1 sim(ux , uy ) = s s P m P m (rux ,ih −¯ux )2 r (ruy ,ih −¯uy )2 r h=1 h=1 donde ru,i es la valoración del ítem i por el usuario u, ru es la media ¯ de valoraciones del usuario u para todos sus votos en común y n es el número de ítems en común entre ambos usuarios. Correlación de Pearson limitada (Constrained Pearson’s Correla- tion): P m (rux ,ih −rmed )·(ruy ,ih −rmed ) h=1 sim(ux , uy ) = s s P m P m (rux ,ih −rmed )2 (ruy ,ih −rmed )2 h=1 h=1 donde ru,i es la valoración del ítem i por el usuario u, rmed es el valor medio en la escala de valoraciones R (en nuestro caso 2.5) y n es el número de ítems en común entre ambos usuarios.4.3. Predicción del votoUna vez escogida una medida de similaridad y teniendo los vecinos del usuarioactivo, pasamos a predecir el voto sobre un determinado ítem [12, 15]: 22
    • P m sim(ua ,uh )·(ruh ,ia −¯uh ) r h=1predicci´n = rua + o ¯ P m |sim(ua ,uh )| h=1donde m es el número de usuarios que han votado el ítem ia , ua es el usuarioactivo, uh un usuario que ha votado el ítem y r es la media de los votos en ¯común para un determinado usuario.4.4. Problema del cold-startingEste tipo de sistema también presenta el problema del cold-starting comen-tado anteriormente. ¿Qué conjunto de vecinos tendrá un usuario nuevo? Nolo sabremos hasta que empiece a valorar sitios y defina su perfil de usuario.Además presenta un nuevo agravante con ítems nuevos. Si nadie lo ha vota-do, ¿cómo darlo a conocer? En el caso del sistema basado en contenido nohabría problema, ya que lo que prima son los descriptores del ítem. Si éstosson relevantes para el usuario, el sitio le será recomendado. Por lo que seríamás adecuado usar un método híbrido para resolver este problema.[11]El mayor inconveniente de los sistemas colaborativos se da cuando se creauna nueva comunidad [18]. El sistema no funcionará bien debido a los pocosvotos que hay. La solución más habitual es incentivar a un grupo de usuariospara que voten nuevos sitios antes de lanzarlo al público. Otra solución seríadar inicialmente recomendaciones usando un enfoque basado en contenido,que es lo que se está haciendo actualmente en el proyecto.5. EvaluaciónPara intentar evaluar cuantitativamente el sistema de recomendación se hanrealizado una serie de mediciones.5.1. Colección de datosSi bien el escenario de las pruebas no es el más favorable, ya que la web estáaún comenzando a funcionar, nos podremos hacer una idea de cómo funcionael sistema.Estadísticas Usuarios registrados: 330 23
    • Usuarios que han rellenado su perfil: 27 Usuarios con más de 1 voto: 54 Usuarios con más de 5 votos: 27 Usuarios con más de 10 votos: 15 Sitios: 331 Votos: 536Distribución de votosSe puede observar en la gráfica de la izquieda que la mayoría de los sitiosvotados son con la puntuación 4 y 5. La razón de que los valores no ente-ros sean los menos usados es porque esta posibilidad se ha introducido conposterioridad. La gráfica de la derecha nos muestra que la mayoría de losusuarios votan cosas que les gustan (entre 4 y 5). Figura 5: Distribución de votos (izq.) y de votos medios (dcha.)5.2. MétricasHemos usado diferentes métricas para obtener los resultados: Error medio absoluto (MAE) que nos indica cómo de ajustado están las predicciones del sistema respecto a la valoración real del usuario. P N |pi −ri | M AE = I=1 N siendo N el número de votos del conjunto evaluado, pi el voto predicho para un determinado ítem y ri el voto real. 24
    • Error cuadrático medio (MSE) es similar al MAE, sólo que pena- liza más el error cometido cuanto más alejada esté la predicción de la P N |pi −ri |2 realidad. M SE = I=1 N Porcentaje de predicción: indica el porcentaje de votos del conjunto de prueba que se han podido predecir. Porcentaje de aciertos: indica el porcentaje de predicciones que con- cuerdan con el voto real. Se ha supuesto una tolerancia de 0.5 como el grado de error que admitiría el usuario.5.3. MetodologíaEn la tabla 2 y 3 se comparan diferentes esquemas de predicción.Consideraciones sobre las medidas de la tabla 2: Para el voto medio sólo se cogen usuarios que hayan votado más de 5 veces. La medida del coseno sólo se realiza con los gustos del perfil de usuario, luego sólo se tienen en cuenta aquellos que hayan rellenado su ficha. Las diferentes medidas para el sistema basado en contenido se refieren a n como el número de votos mínimo necesario para que un usuario sea considerado. Se han realizado mediciones de dos formas distintas. Primeramente, se ha extraído un 20 % del conjunto total de votos como conjunto de prueba y se han realizado 20 ejecuciones por cada método, obteniendo así la media y la desviación estándar.En la tabla 3 se ha usado el método leave one out, es decir, sólo se saca cadavez un elemento del conjunto.En la tabla 4, como se ha comentado en la sección 3.5, se han probadodistintas estrategias para obtención de voto en el sistema de recomendaciónbasado en contenido y se ha comprobado su eficacia con diferentes métricas.Las mediciones, en este caso, se han obtenido extrayendo un sólo voto delconjunto total (leave one out), para cada uno de los votos. 25
    • 5.4. Resultados MAE %Predicción Método x ¯ σ x ¯ σ Voto medio 0.8330 0.0704 100 0 Coseno (contenido) 1.4460 0.2114 29.6 5.9 Basado en contenido (n>1) 0.9591 0.1760 27.9 3.8 Basado en contenido (n>5) 1.0296 0.1371 29.9 4.3 Basado en contenido (n>10) 1.0189 0.1896 32.1 6.5 Colaborativo COS 0.9700 0.0960 63.4 4.2 Colaborativo CPC 0.9278 0.0887 51.7 4.0 Colaborativo COR 0.9208 0.0877 29.8 3.0Cuadro 2: Resultado de los distintos métodos usando un conjunto de entre-namiento (80 %) y otro de test (20 %)MAE = Mean Absolute Error (Error Medio Absoluto)%Predicción = porcentaje de votos del conjunto de prueba que se han podido pre-decirCOS = CosenoCPC = Constrained Pearson’s CorrelationCOR = Pearson’s CorrelationNota: El MAE sólo tiene en cuenta los votos que se han predecido Método MAE MSE %Predicción Voto medio 0.87678 1.4085 92 Coseno (contenido) 1.49458 3.0523 11 Basado en contenido 0.9791 1.8858 27 Colaborativo COS 0.9735 1.7680 63 Colaborativo CPC 0.8938 1.3616 55 Colaborativo COR 0.9917 1.7019 36 Cuadro 3: Resultado de los distintos métodos usando leave one outMAE = Mean Absolute Error (Error Medio Absoluto)MSE = Mean Squared Error (Error Cuadrático Medio)%Predicción = porcentaje de votos que se han podido predecirCOS = CosenoCPC = Constrained Pearson’s CorrelationCOR = Pearson’s CorrelationNota: El MAE sólo tiene en cuenta los votos que se han predecido 26
    • El método del voto medio se incluye meramente como elemento comparativode predicciones, ya que no es útil para hacer recomendaciones (a todos lossitios le asignaría el mismo voto). La causa de que se comporte mejor que elresto de métodos es porque como hemos visto en la sección 5.1, la distribuciónde votos medios está muy concentrada entre las puntuaciones 4 y 5, y el errorcometido en la predicción será menor.De los modelos implementados el que menor error de predicciones presenta esel colaborativo con la medida de similitud Constrained Pearson’s Correlation.También se puede ver que el sistema basado en contenido obtiene un resultadomuy similar al colaborativo con la medida coseno, aunque éste último con unporcentaje de predicción tres veces mayor. Con el error cuadrático medio nospodemos dar cuenta de cómo de grande es el error cometido en la predicción,siendo de nuevo el método colaborativo CPC el que mejor resultados obtiene.Los porcentajes de predicción son significativamente más bajos en el modelobasado en contenido respecto al colaborativo por varios motivos: primeroporque es más fácil que haya usuarios que al menos hayan votado un sitio encomún a que un usuario haya votado varios sitios del mismo tipo; otra causaes que en la base de datos hay muchos sitios que no están suficientementebien descritos (tienen pocas etiquetas significativas), por lo que a la hora decomparar sitios por contenido el sistema no puede alcanzar todo su potencial.La causa de que el porcentaje de predicción del voto medio no sea del 100 %es porque hay un 8 % de votos únicos, es decir, el usuario sólo ha votado unsitio, y al sacarlo del conjunto de datos, su voto medio va a ser cero. En elcaso de la medida coseno en contenido sólo se ha aplicado a aquellos usuariosque han rellenado su perfil de gustos, y la causa por lo que se obtiene unresultado tan pobre se achaca a que las etiquetas de los sitios que han votadoapenas si coincidirán con los gustos elegidos. MAE MSE %aciertos Voto mediano 1.0034 2.0627 42 % Voto promedio 0.9790 1.8854 34 % Voto máximo 1.0238 2.0799 40 %Cuadro 4: Resultados de las distintas estrategias de obtención del voto en elsistema basado en contenidoMAE = Mean Absolute Error (Error Medio Absoluto)MSE = Mean Squared Error (Error Cuadrático Medio)Los resultados de la tabla 4 nos han llevado a elegir el voto promedio comométodo para la obtención del voto en una predicción (en el sistema basado 27
    • en contenido). Si bien el porcentaje de aciertos es menor, el error cometidotambién lo es, por lo que creemos que conforme se incremente el conjunto dedatos del sistema, va a ser el que mejor funcione.5.5. ConclusionesA lo largo de las secciones anteriores hemos desarrollado la motivación, expli-cación y funcionamiento de los diferentes tipos sistemas de recomendación,centrándonos en las implementaciones realizadas de los métodos basados encontenido y de filtrado colaborativo. Hemos visto también como, para un pro-yecto en particular, adaptar los sistemas para mejorar la calidad y eficienciade las recomendaciones, añadiendo más contenido semántico y utilizándolointeligentemente. Este tipo de sistemas no está libre de limitaciones y proble-mas, que exigen un estudio detallado para paliarlas usando diferentes estra-tegias y nuevos métodos, como el de hibridación, que podremos desarrollaren un futuro.6. Soluciones desarrolladas 1. Se ha realizado un cambio completo de plataforma para pasar a usar el framework django [1], que utiliza el lenguaje python [6], con acceso a base de datos mysql [10] y con jquery [3] como framework en javascript. Se ha elegido django por diversos motivos: Cambiar la estructura completa de la web anterior para adaptar- la a diversas provincias era muy costoso y además sería menos potente. Ayuda a un desarrollo rápido. Bien documentado. Sigue un modelo similar al MVC (Modelo Vista Controlador). Proporciona una API potente para manejar el modelo. Interfaz de administración automática. Diseño canónico de URLs mediante expresiones regulares. Soporte para aplicaciones multi-idioma. 2. Para incentivar a los usuarios a que participen se les dan puntos por cada acción que realicen, de manera que es una forma de fomentar la 28
    • competición y también poder premiar con regalos y descuentos en un futuro. También se proporciona una guía para completar el perfil de usuario y cómo comenzar a integrarse en la web. 3. Se ha implementado un sistema de recomendación basado en contenido. Las recomendaciones que se dan al usuario son en base a los sitios que anteriormente ha votado y a los gustos que ha escogido en su perfil. Por tanto se requiere una colaboración activa del usuario para poder ofrecer recomendaciones fiables. 4. Se han jerarquizado las etiquetas en varias categorías con el fin de facilitar las búsquedas de sitios y sobre todo para poder darle a unas más importancia que a otras a la hora de hacer recomendaciones, según sea el tipo de local. 5. La versión móvil está accesible a través de m.andaluciapeople.com y permite consultar sitios y usuarios, pero en modo sólo lectura. En un futuro se pretenden ampliar funcionalidades. 6. Se ha incluído soporte para añadir varios idiomas de forma sencilla, aunque actualmente sólo está disponible la traducción a inglés. 7. Se ha añadido un blog para informar sobre novedades en la aplicación. 8. Se proporcionan diferentes feeds para suscripción por RSS de los últi- mos sitios, comentarios y fotos en las distintas provincias.7. Aspectos adicionales del desarrollo7.1. Entorno de desarrolloLa aplicación se ha desarrollado usando un editor de textos en un sistema conpython 2.5 y django 1.0. Como servidor web de pruebas he usado el servidorde producción de django, que se reinicia automáticamente cada vez que seedita un fichero y además avisa de posibles errores.7.2. Entorno de producciónEl sistema de cara al público está alojado en un alojamiento compartido con-tratado en Webfaction[7] con una instalación de Apache 2 con mod_python,python 2.5 y django 1.0. Para el sistema de caché se usa memcached [8]. 29
    • 7.3. Control de versionesCon objeto de mantener coherencia en los archivos del proyecto, así comoservir de backup, se ha hecho uso de un repositorio privado en Github [2]. Seha escogido git por su potencia y facilidad de uso.7.4. Sistema de ticketsPara tener un mejor control de errores y un listado de nuevas característicasa implementar, se ha utilizado un sistema de tickets en Lighthouse [4].7.5. LicenciaEl código desarrollado en el proyecto se ha licenciado bajo AGPLv3 [9] quegarantiza las principales libertades del software libre. Libertad 0: la libertad de usar el programa, con cualquier propósito. Libertad 1: la libertad de estudiar cómo funciona el programa y modi- ficarlo, adaptándolo a tus necesidades. Libertad 2: la libertad de distribuir copias del programa. Libertad 3: la libertad de mejorar el programa y hacer públicas esas mejoras a los demás, de modo que toda la comunidad se beneficie.Así mismo el proyecto está adherido a la lista de proyectos libres apoyados porla Oficina de Software Libre de la Universidad de Granada. La última versiónliberada se puede encontrar en http://andaluciapeople.com/media/releases/8. Manual de usuarioLo primero que tiene que hacer una persona para recibir recomendaciones enla web es registrarse, ya que si no, no se podrá formar un perfil de usuario ypor tanto tampoco se tendrían recomendaciones personalizadas. Un visitantenormal sólo podrá consultar los sitios, conocer otros nuevos por similaridade incluso ver los mejores valorados por el resto de usuarios.Para crear una cuenta basta con entrar en http://andaluciapeople.com yhacer click sobre el enlace “Regístrate”. 30
    • Figura 6: Detalle de la página principalEn la siguiente página rellenamos el formulario de registro con los datos quese solicitan y pulsamos el botón “Registrar”. Figura 7: Detalle de la página de registroSi el registro se ha completado con éxito, nos avisará con un mensaje de queya podemos entrar usando el usuario y contraseña que usamos para crear lacuenta. Igualmente, se enviará un correo electrónico a la dirección indicadacon los datos de acceso a la web. Rellenamos el formulario de entrada ypulsamos el botón “Login”. 31
    • Figura 8: Detalle de la página de entradaUna vez identificado, nos encontramos en la ficha de usuario, con un resumende la cuenta personal, y entre otras cosas podemos distinguir un menú denavegación en la parte superior y una serie de indicaciones a la izquierdasobre cómo rellenar el perfil de usuario. Figura 9: Menú de navegación de usuario Figura 10: Detalle de las indicaciones para completar el perfil 32
    • Lo primero que haremos será cambiar la foto de usuario y rellenar los gustos,ya que ambos se encuentran en el mismo formulario de datos personales en lasección de “Ajustes”. Para ello podemos hacer click en “Ajustar preferencias”o bien en cualquiera de los dos primeros enlaces de la lista. Figura 11: Formulario de datos personalesUna vez completado el formulario pulsamos el botón “Guardar” para salvarlos cambios. Justo debajo de este formulario se encuentra otro que sirve paradefinir la importancia de las etiquetas para los diferentes tipos de sitios.Podemos aprovechar para modificar los pesos que consideremos oportunos y 33
    • cuando terminemos pulsamos el botón “Guardar”. Figura 12: Detalle del formulario de importancia de las etiquetasAhora ya podemos proceder al siguiente paso, que es buscar sitios que conoz-camos y puntuarlos. Para ellos seleccionamos primero la provincia en la partesuperior y a continuación usamos el formulario de búsqueda para encontrarsitios. También podemos acceder a la sección de “Sitios” y navegar por laclasificación de tipos. Figura 13: Menú principal de la webSi por ejemplo, buscamos “wok” en Granada, obtenemos tres resultados. 34
    • Figura 14: Resultados a la búsqueda “wok” en GranadaSi consultamos por ejemplo al primero de ellos, entraremos a su ficha y po-demos ver en este caso que la predicción que nos hace para este sitio es“Perfecto” debido a los gustos que escogimos en nuestro perfil. Para votarlonos situamos sobre las estrellas que pasarán a tener un color rojizo y haremosclick en la puntuación que queramos asignarle. En este caso hemos decididodecidido otorgarle 4 estrellas (“Muy Bueno”). Figura 15: Detalle de la ficha del sitio antes y después de haberlo votadoRepetimos la operación con los sitios que conozcamos. Si por ejemplo nuestraintención es hacer un viaje a Málaga y comer en un restaurante, le pedire-mos al sistema que nos recomiende cuáles nos podrían gustar. Para ello nosdirigimos a la sección “Recomendaciones” en el menú de navegación de “Tucuenta”. Una vez seleccionado que queremos que nos muestre restaurantes deMálaga capital, pulsamos el botón “Buscar” y nos aparecerán los resultadosmás acordes con nuestros gustos. 35
    • Figura 16: Resultado de la recomendación9. ConclusiónCon todas las mejoras realizadas tanto de diseño como de nuevas funcionali-dades, hacen de AndalucíaPeople una web mucho más atractiva y útil comoasí han demostrado las buenas críticas recibidas por parte de los usuarios yvisitantes.De cara al público el sistema de recomendación funciona aceptablementebien, o esa es la sensación que han transmitido las diversas personas que hanestado realizando pruebas. Si bien, tras la evaluación cuantitativa realizadase puede esperar que el sistema sea mejorable utilizando un enfoque híbrido.Cabe esperar también que mejore conforme aumente el número de sitios yde usuarios que añadan más información al conjunto.Creemos que los sistemas de recomendación van a seguir creciendo ya quecada vez se posee más información de los usuarios y se les va a poder ofrecerresultados de mejor calidad. Igualmente está ocurriendo que en el mercadopublicitario las ofertas publicitarias se están hipersegmentando, de maneraque lleguen a nichos de personas más específicos y llegará un momento quesean totalmente personalizadas gracias a este tipo de sistemas. 36
    • Referencias [1] http://djangoproject.com/. [2] http://github.com/. [3] http://jquery.com/. [4] http://lighthouseapp.com/. [5] http://microformats.org/. [6] http://python.org/. [7] http://webfaction.com/. [8] http://www.danga.com/memcached/. [9] http://www.fsf.org/licensing/licenses/agpl-3.0.html.[10] http://www.mysql.com/.[11] Gediminas Adomavicius and Alexander Tuzhilin. Toward the next ge- neration of recommender systems - a survey of the state-of-the-art and possible extensions. 2005.[12] Hyung Jun Ahn. A new similarity measure for collaborative filtering to alleviate the new user cold-starting problem. 2007.[13] Robin Burke. Hybrid recommender systems: Survey and experiments. 2002.[14] Luis M. de Campos, Juan M. Fernández-Luna, and Juan F. Huete. A collaborative recommender system based on probabilistic inference from fuzzy observations. 2008.[15] Luis M. de Campos, Juan M. Fernández-Luna, Juan F. Huete, and Mi- guel A. Rueda-Morales. Combining content-based and collaborative re- commendations: a hybrid approach based on bayesian networks. 2008.[16] Olga Fdez. Deleito. Diseñar sistemas de recomendación: Percepción de los usuarios y tipos resultantes.[17] A. Holovaty and J. Kaplan-Moss. The Django Book. http://www.djangobook.com/, 2009. 37
    • [18] Jon Herlocker J. Ben Schafer, Dan Frankowski and Shilad Sen. Colla- borative filtering recommender systems. 2007.[19] C. Kadie J. S. Breese, D. Heckerman. Empirical analysis of predictive algorithms for collaborative filtering. 1998.[20] Loren G. Terveen Jonathan L. Herlocker, Joseph A. Konstan and John T. Riedl. Evaluating collaborative filtering recommender systems.[21] Benjamin Marlin. Collaborative filtering: A machine learning perspec- tive. 2004.[22] Sergio Manuel Galán Nieto. Filtrado colaborativo y sistemas de reco- mendación. 2007.[23] Michael J. Pazzani and Daniel Billsus. Content-based recommendation systems. 2007.[24] Janusz Sobecki. Implementations of web-based recommender systems using hybrid methods. 2006. 38