Definitivamente no hay una manera única. Pero una forma sería almacenar la lista de canciones para cada etiqueta (en cuanto a memoria, esto sería mucho más eficiente que almacenar un vector característico para cada etiqueta, ya que tenemos 10,000 etiquetas, lo que hace que los datos sean muy escasos). Entonces, la similitud entre dos etiquetas podría representarse como el tamaño de la intersección entre sus respectivas listas de canciones. Si somos un poco cuidadosos y almacenamos la lista en un orden ordenado (de las ID de las canciones), entonces encontrar la intersección que se puede hacer es una manera muy eficiente (vea Encontrar la intersección de dos matrices ordenadas). Por supuesto, dicho método requeriría una pasada completa de todos los datos para crear la lista de canciones para cada etiqueta. Pero supongo que tal conjunto de datos evolucionará lentamente con el tiempo, y siempre podemos actualizar las listas existentes en lugar de tener que crearlas de nuevo cada vez.
En general, para datos dispersos, almacenar información como una lista de entidades en lugar de un vector largo disperso siempre es más eficiente, tanto en términos de memoria como de tiempo.
- ¿Los principales profesionales de aprendizaje profundo a menudo tienen grandes lagunas de conocimiento debido a lo rápido que se mueve el campo?
- ¿Cómo podría usarse el aprendizaje automático para ayudar a las personas enfermas en los países del tercer mundo?
- ¿Qué son los vectores de características basados en cuadros (como se usan en el reconocimiento de voz)?
- ¿Cuáles son las mejores prácticas en torno al aprendizaje automático y los sistemas de recomendación para sitios de trabajo?
- Cómo asegurarse de no analizar algo que termina sin sentido