Introducción La música nos rodea todos los días. Nos establece, nos motiva e incluso mejora el rendimiento cognitivo.Los ritmos rápidos pueden aumentar nuestra energía, mientras que las canciones más lentas y melódicas nos ayudan a relajarnos.La creación de la lista de reproducción perfecta, sin embargo, a menudo es una tarea personal e intensiva en el tiempo.Las principales plataformas de streaming dependen de expertos musicales para curar listas de reproducción, pero obviamente, como en la mayoría de las áreas, necesitamos algo de automatización y asistencia automática utilizando datos. Como alguien que escucha más de 2 horas de música al día en diferentes géneros, produce música y crea listas de reproducción para uso personal, este tema resuena profundamente conmigo.Este proyecto me permitió combinar mi pasión por la música con mi experiencia profesional en análisis de datos mientras explora aplicaciones prácticas de algoritmos de aprendizaje automático. Además, me inspiró — siendo el líder en streaming de música, establecieron el punto de referencia para la innovación en este espacio y nos proporcionaron datos de alta calidad. El artículo de ingeniería de Spotify Artículo de ingeniería de Spotify Declaración de problemas El objetivo de este proyecto era explorar técnicas de agrupación para agrupar automáticamente canciones en listas de reproducción significativas. ¿Podrá el aprendizaje automático ayudarnos a crear listas de reproducción que se sientan tan curadas como las de los expertos humanos? o, al menos, puede asegurar que los death metal y las suites clásicas no estén en la misma lista? Para hacer frente a esto, usé un conjunto de datos de ~5.000 canciones con características de audio de Spotify, como la danzabilidad, el ritmo y la energía.Además, incorporé datos de la API de Last.fm para recuperar información de género, lo que permite la validación externa de la calidad de agrupamiento. Nuestra tarea: Cluster canciones en listas de reproducción cohesivas basadas en características de audio. Validar estos clusters contra los géneros Last.fm para garantizar la calidad. Cluster canciones en playlists cohesivos basados en características de audio. Validar estos clusters contra los géneros Last.fm para garantizar la calidad. Mira los datos iniciales Antes de sumergirse en el aprendizaje automático, visualizé el conjunto de datos usando características básicas. Abajo está una trama de canciones basadas en y : tempo danceability Tempo Por ejemplo, Brahms’ es fácilmente identificable en la región de baja velocidad, baja danza, mientras que Eminem’s aparece en la zona de media velocidad, alta danza. Danceabilidad Lullaby The Real Slim Shady Lucía El verdadero Slim Shady Sin embargo, aprovechar todas las características disponibles nos permitirá descubrir patrones más ricos y automatizar la creación de listas de reproducción. Clasificación no supervisada Ahora, nuestro objetivo es realizar algún agrupamiento inicial. La idea aquí es aplicar puramente el aprendizaje automático sin supervisión – no conocemos las etiquetas de clúster reales y tenemos como objetivo determinar el número óptimo de agrupamientos utilizando métodos prácticos. Para lograr esto, pasaremos por algunos pasos básicos. Escalado Escalado Esto facilita la visualización y acelera el agrupamiento. Para la mayoría de los algoritmos y métodos que aplicaremos más adelante, los datos escalados son esenciales. Estos algoritmos se basan en cálculos (como distancias o variaciones) que son sensibles a la escala de las características. El escalado convierte todo en una unidad común para que todas las características se traten de manera equitativa. Bajo es un ejemplo de proyectar nuestros datos en dos características: y . La trama izquierda muestra los datos originales; la derecha muestra el resultado después de aplicar dos escaladores - PowerTransformer y MinMaxScaler: duration_ms tempo duración_ms tiempo Reducción de la dimensión con PCA Reducción de la dimensión con PCA El siguiente paso es el Principal Component Analysis (PCA), que reduce el número de características mientras conserva la información más importante. Figurativamente hablando, PCA encuentra proyecciones, como iluminar un flash sobre un objeto 3D para crear una sombra 2D. El flash está posicionado para que la sombra (proyección) retenga el mayor detalle posible sobre el objeto original. Tentaremos diferentes números de componentes y compararemos los resultados.En nuestro caso, probaremos 10 opciones.Aquí está un ejemplo de proyectar canciones en dos componentes principales: K-Means Clustering K-Means es un popular algoritmo de agrupamiento que agrupa datos en un número predefinido de aglomerados (k). A veces, tenemos restricciones de negocio. Nuestro conjunto de datos incluye alrededor de 5.000 canciones. Tipicamente, las listas de reproducción en los servicios de streaming contienen entre 20 y 250 canciones. Por lo tanto, para mi caso específico de uso, necesito más de 20 clusters. La puntuación de silueta ayuda a evaluar la calidad del agrupamiento midiendo lo bien que cada punto de datos se ajusta dentro de su aglomerado asignado en comparación con otros.Una puntuación de silueta más alta (cerca de 1) significa que los aglomerados están bien definidos y claramente separados. Punto de puntuación de silueta Mejor combinación de parámetros Con tantos grados de libertad, ¿cómo podemos encontrar la mejor combinación de parámetros?La respuesta es simulación.Puedo probar diferentes combinaciones —escaladores, números de componentes de PCA y números de clusters— y seleccionar la que cumpla mejor.En mi caso, había 935 candidatos posibles. Esta trama muestra puntos de silueta (x-axis) para diferentes combinaciones de componentes de PCA (representados por el tamaño del círculo), escaleras (color) y número de aglomerados (y-axis). Para simplificar la elección, debemos centrarnos en las opciones en el área superior derecha, como esto: La primera combinación significativa con la mayor puntuación de silueta utiliza el escalador MinMax, 2 componentes principales y 6 aglomerados. Resultado inicial de agrupamiento Como se mencionó anteriormente, incorporé los datos de Last.fm con información de género para nuestros artistas. Este es el momento perfecto para aplicarlo a nuestro conjunto de datos como un criterio de validación útil. Seleccioné los 5 géneros más populares de este conjunto de datos, con el resto agrupado bajo “otro”. Volviendo a nuestra combinación de mejor rendimiento, ahora estamos listos para comparar los clusters resultantes utilizando las etiquetas de género.Bajo está una visualización que muestra el porcentaje de géneros por clúster, junto con el número de canciones en cada clúster. Si te acuerdas, mencioné en la declaración del problema que uno de mis objetivos era distinguir entre el death metal y la música clásica — honestamente, eso fue un ejemplo aleatorio. Pero sorprendentemente, este criterio funciona bastante bien para esta configuración de agrupamiento en particular. Mire más de cerca: los clusters 0 y 4 están compuestos de aproximadamente la mitad de la música clásica, sin casi ningún death metal, mientras que los clusters 2 y 3 son el opuesto, representando fuertemente el death metal. Dicho esto, todavía observamos una mezcla de géneros en muchos grupos, algunos de los cuales no son musicalmente compatibles. Esto sugiere que vale la pena explorar otras técnicas y métricas de evaluación. En última instancia, el objetivo es encontrar una solución de agrupación que sea tanto estadísticamente robusta como prácticamente significativa para su caso de uso específico. Clustering con validación externa En esta sección, utilizaremos la información de género más extensamente. Estos datos actúan como nuestras “etiquetas ideales” para validar la calidad del agrupamiento. Por supuesto, no es un criterio perfecto o el enfoque más sofisticado para la creación de listas de reproducción – pero para mí personalmente, como amante de la música, funciona bien. Por ejemplo, a menudo prefiero escuchar música específica de género: hip-hop para motivación, rock en fiestas o clásico mientras estoy trabajando. Intentemos responder a esta pregunta: ¿Podemos separar la música por género utilizando sólo características como la danzabilidad, la energía, el ritmo, etc.? ¿Podemos separar la música por género usando sólo características como la danzabilidad, la energía, el ritmo, etc.? Información mutua normalizada (NMI) Información mutua normalizada (NMI) Normalized Mutual Information (NMI) mide la similitud entre dos agrupamientos. Se ponen entre 0 y 1, donde: significa que no hay superposición entre asignaciones de clúster y etiquetas verdaderas. 0 significa una combinación perfecta con la verdad básica. 1 significa que no hay superposición entre asignaciones de clúster y etiquetas verdaderas. 0 0 significa una combinación perfecta con la verdad subyacente. 1 1 1 Antes de comenzar a encontrar la mejor configuración de agrupación usando NMI, vamos a evaluarlo en una configuración familiar —la que identificamos anteriormente: MinMaxScaler, 2 componentes PCA y 6 clusters. Vemos que la puntuación NMI para es significativamente mayor que para (0.29 vs. 0.18). n=6 n=2 n=6 n = 2 Con estas herramientas, podemos acercarnos a construir sistemas de listas de reproducción que sean inteligentes y musicalmente significativos. Esto ya es una gran mejora. ¡Ahora vemos el death metal bien aislado en dos clusters y toda la música clásica agrupada en uno. Para referencia, a continuación se muestra una comparación de las puntuaciones de NMI en varias configuraciones de agrupación: La mayor puntuación NMI indica el mejor agrupamiento centrado en el género. Este resultado es bastante esperado — utilizando datos de validación, podemos mejorar significativamente nuestro agrupamiento de música. Conclusión En este proyecto, exploré cómo el aprendizaje automático puede ayudar a agrupar las pistas de música en aglomerados significativos utilizando solo características de audio.A partir de técnicas básicas de aprendizaje sin supervisión como el escalado, PCA y K-Means, validé los resultados utilizando datos de género del mundo real de Last.fm. Mientras que las puntuaciones de silueta ayudaron a optimizar la consistencia interna, la validación externa a través del alineamiento de género ofreció una visión más profunda de la calidad práctica de los clusters. Esto es sólo un punto de partida. Las mejoras futuras incluirían explorar técnicas avanzadas como UMAP y HDBSCAN para mejorar el agrupamiento y utilizar SHAP para una mejor interpretación. En última instancia, el aprendizaje automático definitivamente puede complementar la curación humana.Por el momento, ofrece una forma escalable de organizar y explorar bibliotecas de música masivas.