Recommenders

1,851 views

Published on

Una introdución a las tecnologías y algoritmos de recomendación, filtrado basado en el contenido y filtrado colaborativo

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,851
On SlideShare
0
From Embeds
0
Number of Embeds
163
Actions
Shares
0
Downloads
26
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Recommenders

  1. 1. Recommenders Bosco Curtu 07/03/2009 [email_address]
  2. 2. Indice <ul><li>Sobre el autor </li></ul><ul><li>Qué es un recomendador? </li></ul><ul><li>Qué puede hacer un recomendador por tí? </li></ul><ul><li>Quién usa recomendadores? </li></ul><ul><li>Content Based Filtering </li></ul><ul><li>Collaborative Filtering </li></ul><ul><li>Técnicas hibridas de filtrado </li></ul><ul><li>Web semántica y filtrado conceptual </li></ul><ul><li>Éxito y confianza de un recomendador </li></ul><ul><li>Preguntas </li></ul>
  3. 3. Sobre el autor <ul><li>Ingeniería en Informática EHU/UPV </li></ul><ul><li>De java/J2EE a python/Django </li></ul><ul><li>Proyectos OpenSource: </li></ul><ul><ul><li>NexOpen JEE framework </li></ul></ul><ul><ul><li>amigoinvisibleonline.com </li></ul></ul><ul><ul><li>Django plug(g)ables y snippets </li></ul></ul><ul><ul><li>django-recommender </li></ul></ul><ul><li>www.dooplan.com </li></ul>
  4. 4. Qué es un recomendador <ul><li>Es un sistema de filtrado automático de información. </li></ul><ul><li>Ayuda a seleccionar items de entre un conjunto muy grande de elementos o de entre los que no se tiene conocimiento. </li></ul><ul><li>Predicciones vs recomendaciones </li></ul>
  5. 5. Qué puede hacer por tí <ul><li>Ofrecer los mejores items para un usuario </li></ul><ul><li>Encontrar usuarios con gustos similares </li></ul><ul><li>Calcular clientes potenciales para un artículo </li></ul><ul><li>Obtener otros items parecidos </li></ul><ul><li>etc... </li></ul>
  6. 6. Quién los usa <ul><li>Quién usa recomendadores: </li></ul><ul><ul><li>Google </li></ul></ul><ul><ul><li>Amazon </li></ul></ul><ul><ul><li>Meetic </li></ul></ul><ul><ul><li>LastFm </li></ul></ul><ul><ul><li>Genius/iTunes </li></ul></ul><ul><ul><li>dooplan </li></ul></ul><ul><ul><li>... </li></ul></ul>
  7. 7. Content Based Filtering <ul><li>Basado en la descripción del usuario y de los items </li></ul><ul><li>Sistema predictivo </li></ul><ul><li>Filtrados positivos y negativos </li></ul>
  8. 9. Content Based Filtering <ul><li>Problemas: </li></ul><ul><ul><li>Super-especialización </li></ul></ul><ul><ul><li>Falsas descripciones </li></ul></ul><ul><ul><li>Nuevos usuarios </li></ul></ul><ul><ul><li>Edición de los items </li></ul></ul><ul><li>Ejemplos: </li></ul><ul><ul><li>Match.com, meetic </li></ul></ul>
  9. 10. Collaborative Filtering <ul><li>Basado en las opiniones de los usuarios </li></ul><ul><li>Muchos usuarios opinan sobre muchos items </li></ul><ul><li>Gracias a internet el alcance es universal </li></ul>
  10. 11. Collaborative Filtering <ul><li>Recomendación pura </li></ul><ul><li>Opiniones basadas en votos, rankings, etiquetas... </li></ul><ul><li>Matriz usuarios/items </li></ul><ul><li>Cúanto te pareces a un usuario? Algoritmos de distancias. </li></ul>
  11. 12. Collaborative Filtering <ul><li>Usuarios 1 y 2 mismos gustos, Poca distancia </li></ul><ul><li>Usuarios 5 y 6 son contrarios. Mucha distancia </li></ul><ul><li>Usuarios 2 y 4, misma tendencia. Poca distancia </li></ul><ul><li>Usuarios 3 y 4, poco información. </li></ul>
  12. 13. def get_recommendations (uid,prefs): totals = simSums = {} for other in prefs: if other==uid: continue # don't compare me to myself sim = self .distance_between_users(prefs[uid],prefs[other]) for item in prefs[other]: if item not in prefs[uid]: # only score events I haven't seen yet # Similarity * Score totals.setdefault(item, 0 ) totals[item] += prefs[other][item]*sim # Sum of similarities simSums.setdefault(item, 0 ) simSums[item] += 1 rankings=[(total/simSums[item],item) for item,total in totals.items( )] return rankings prefs = {} prefs[ 'user1' ] = { 'it1' : 10 , 'it2' : 2 , 'it3' : 8 , 'it4' : 10 } prefs[ 'user2' ] = { 'it1' : 1 , 'it2' : 9 , 'it3' : 0 , 'it5' : 7 } prefs[ 'user3' ] = { 'it1' : 10 , 'it2' : 4 , 'it6' : 9 , 'it7' : 10 } prefs[ 'user4' ] = { 'it1' : 8 , 'it6' : 0 , 'it7' : 5 } prefs[ 'user5' ] = { 'it1' : 5 , 'it2' : 3 , 'it5' : 8 , 'it6' : 10 } >>> get_recommendations('user1',prefs) ['it6':6.4, 'it7':9] >>> get_recommendations('user2',prefs) ['it6':5.2]
  13. 14. Collaborative Filtering <ul><li>Problemas: </li></ul><ul><ul><li>Nuevos usuarios </li></ul></ul><ul><ul><li>Nuevos items </li></ul></ul><ul><ul><li>Dispersión/densidad de votos </li></ul></ul><ul><ul><li>Escalabilidad </li></ul></ul><ul><li>Ejemplos: </li></ul><ul><ul><li>Lastfm, genius, dooplan... </li></ul></ul>
  14. 15. Otras técnicas de filtrado <ul><li>Filtrados híbridos: CBF + CF </li></ul><ul><li>Multi domain filtering </li></ul><ul><li>Context Based Filtering </li></ul><ul><li>Filtrado social </li></ul><ul><li>Redes neuronales </li></ul><ul><li>Clustering </li></ul>
  15. 16. Web semántica <ul><li>Herramienta de identificación y clasificación automática de contenidos </li></ul><ul><li>Algoritmo FOAF, Giant Global Graph </li></ul><ul><li>Carencia de contextualización </li></ul><ul><li>Sistemas conceptuales </li></ul>
  16. 17. Web conceptual <ul><li>Descomposeción de conceptos complejos en conceptos individuales/atómicos </li></ul><ul><li>Composición semántica, relación de dos conceptos a través de un operador contextual </li></ul><ul><li>Mapa conceptual </li></ul>
  17. 18. Éxito y confianza <ul><li>Diferentes contextos, diferente percepción de éxito y tolerancia a fallos </li></ul><ul><li>Explicar siempre los factores que participan en la recomendación </li></ul><ul><li>Permitir cambiar opiniones y evolución de tu perfil </li></ul>
  18. 19. Preguntas <ul><li>Bibliografía de referencia: </li></ul><ul><ul><li>Programming collective intelligence. Toby Segaran, 2007 </li></ul></ul><ul><li>Contacto: </li></ul><ul><ul><li>[email_address] </li></ul></ul><ul><ul><li>http://www.bcurtu.com </li></ul></ul>

×