¿Te gustan las recomendaciones que te hace Spotify?¿Quieres saber cómo lo hacen?

Empiezo desvelando el final. Usan sistemas de recomendación.

Si estás leyendo esto seguramente ya sabes qué es un sistema de recomendación. Pero sólo por si acaso lo describo muy brevemente.

Un sistema de recomendación es un proceso analítico que utiliza la información sobre los clientes y/o los productos para recomendar nuevos productos que con alta probabilidad gustarán al usuario.

Aquí uso “producto” en un sentido amplio. Pueden ser productos físicos de un ecommerce, o canciones como en este caso, o artículos en un blog, etc.

Tengo que reconocer que los sistemas de recomendación son uno de mis temas favoritos en el ámbito de Advanced Analytics.

Cuando hablo sobre ellos en alguno de los Masters en los que doy clase, casi de forma inevitable alguien me dice que lo le recomienda Amazon o Spotify no les gusta nada.

El caso de Amazon lo conozco mejor, y cuando lo explico la gente lo entiende (quizá otro día lo amplíe en otro post). Pero el caso de Spotify no lo conozco ni siquiera como usuario, así que hasta ahora no tenía criterio sobre el mismo.

Sin embargo, navegando por la red encontré este artículo que explica cómo lo hacen, y me pareció interesante para analizarlo en este post.

Así que sin más introducción vamos a ello.

¿Qué es Spotify?

Sobra decirlo, pero simplemente para contextualizar diremos que es un servicio de música en streming, donde tú pagas una suscripción mensual y puedes escuchar la música que quieras.

¿Para qué usa Advanced Analytics?

Seguramente para muchas cosas, pero lo que nos describe en el artículo es la funcionalidad que llaman Discover Weekly. Que básicamente consiste en que usando todo lo que veremos más abajo te recomiendan música que no conoces pero que piensan que te va a gustar.

Este tipo de funcionalidad (sistemas de recomendación) es absolutamente clave en algunos modelos de negocio:

  • En Spotify sirve para que el usuario no se canse de escuchara siempre lo mismo y se dé de baja. Como cobran por meses: más meses de suscripción > más ingresos.
  • En ecommerce sirve para que compres productos que inicialmente no pensabas comprar. Por tanto incremento del ticket medio que lleva a más ingresos. Amazon ha declarado que el 30% de su ticket medio es producido por su sistema de recomendación.
  • En Netflix: igual que Spotify. Ellos dicen que el 70% de sus visualizaciones vienen de las recomendaciones.
  • En un periódico digital: cuando lees un artículo se cargan todas las impresiones de publicidad (banners) y el periódico gana dinero. Si al final del artículo, en vez de irte, te recomiendan otro y haces click se vuelven a cargar todas las nuevas impresiones y se gana más dinero.

Creo que se va entendiendo la mecánica, no?

Volvamos a Spotify.

Dicen que usan 3 tipos de recomendadores:

  • Filtrado colaborativo
  • Modelo de audio en bruto
  • Procesamiento del lenguaje natural

Combinar recomendadores es la práctica habitual en el ámbito empresarial. Veamos cómo lo hacen ellos concretamente.

¿Cómo lo hacen?

El primer recomendador que utilizan es el clásico filtrado colaborativo. Básicamente consiste en “los usuarios interesados en X también están interesados en Y y en Z”.

Este tipo de recomendador es interesante porque sólo utiliza esas coocurrencias históricas (en este caso, los usuarios que escucharon tal canción también escucharon tales otras). Pero no utiliza los atributos de los productos (en este caso cosas como las letras de las canciones, el año de lanzamiento, el artista, etc).

Esto permite que sea sencillo de construir y robusto, pero también tiene un problema principal: ¿qué pasa con una nueva canción que todavía no tiene coocurrencias con otras canciones?, ¿no caemos en el riesgo de estar entonces recomendando siempre lo antiguo o lo más popular?

Para contrarrestar esto usan el segundo tipo de recomendador, que llaman modelo basado en el audio en bruto.

Básicamente consiste en analizar la información sobre las características del audio mediante un tipo de red neuronal conocida como convolutional neural network.

Este algoritmo es muy usado también en ámbitos como el análisis de imágenes o de video, ya que permite hacer una extracción automática de las características del objeto analizado.

Es decir, las variables no se las damos nosotros como en otro algoritmo, si no que él solo las va encontrando a través de las diferentes capas de la red neuronal.

Con un ejemplo muy simplificado pero para que se entienda, al analizar una imagen de una cara primero detecta que hay zonas donde el color de los píxeles de la imagen cambia. A partir de ahí identifica formas como líneas o curvas. A partir de ahí identifica un patrón de líneas o curvas que nosotros llamaríamos “nariz”, a partir de ahí identifica que una cosa con dos ojos una nariz y una boca es una cara.

Usar este recomendador en este caso concreto es muy interesante, ya que con él sí puede evaluar una nueva canción aunque no tenga histórico, porque la descompone en sus características musicales y esas sí las puede comparar contra el histórico del usuario.

Y por último utilizan un tercer tipo de recomendador, que llaman el de NLP porque se basa en el procesamiento del lenguaje natural, es decir, en el análisis de texto.

Yo creo que está bien pensado, porque crawleando la web pueden detectar tendencias sobre grupos o temas desconocidos pero en creciente explosión viral (¿alguien dijo Despacito?) o categorizar mediante topics la letra de las canciones.

Sobre la arquitectura técnica no dan mucha información, pero analizando el gráfico que incluyen en el artículo y que te reproduzco abajo se puede intuir que es un enfoque clásico combinando componentes batch Big Data para el análisis masivo de los recomendadores con una capa de tiempo real usando NoSql (concretamente Cassandra) para realizar las recomendaciones cuando el usuario utiliza el servicio.

En conclusión, si eres usuario de Spotify te dejo a tí que decidas si sus recomendaciones te gustan o no. Pero al menos, como lo tienen planteado desde un punto de vista analítico a mí me convence y me parece muy interesante.

Espero que también a tí te lo haya parecido y te animo a que leas el artículo original y a que escribas tu propia opinión sobre el tema en los comentarios.