2010-06-02 8 views
7

Dada una lista de (por ejemplo) canciones, ¿cuál es la mejor manera de determinar su "popularidad" relativa?Determine programáticamente las "popularidades" relativas de una lista de elementos (libros, canciones, películas, etc.)

Mi primer pensamiento es usar Google Trends. Esta lista de canciones:

  1. Subterranean Homesick Blues
  2. Empire State of Mind
  3. California Gurls

produce el siguiente Google Trends report: (a saber lo que es popular ahora, que limita la informe a los últimos 30 días)

http://s3.amazonaws.com/instagal/original/image001.png?1275516612

Empire State of Mind es marginalmente más popular que California Gurls, y Subterranean Homesick Blues es mucho menos popular que cualquiera de los dos.

Así que esto funciona bastante bien, pero ¿qué sucede cuando su lista tiene 100 o 1000 canciones de largo? Google Trends solo le permite comparar 5 términos a la vez, por lo que, en ausencia de un gran round-robin, ¿cuál es el enfoque correcto?

Otra opción es simplemente hacer una búsqueda en Google para cada canción y ver que tiene los mejores resultados, pero esto no mide realmente la misma cosa

Respuesta

2

Se puede buscar el elemento en Twitter y ver cuántos veces se menciona. O búsquelo en Amazon para ver cuántas personas lo han revisado y qué calificación le dieron. Tanto Twitter como Amazon tienen API.

1

Definitivamente trataría la API de Google de "restringida".

En general, funciones de comparación utilizados para clasificar los algoritmos son muy "binario":

  • de entrada: 2 elementos
  • de salida: verdadero/falso

Aquí tienes:

  • entrada: 5 elementos
  • salida: rela tivos de cada elemento

Por lo tanto, solo necesitará un número lineal de llamadas a la API (mientras que la clasificación generalmente requiere llamadas O (N log N) para funciones de comparación).

Necesitarás exactamente ceil((N-1)/4) llamadas. Puede paralelizar, aunque lea atentamente la guía del usuario en cuanto a la cantidad de solicitudes que está autorizado a enviar.

Luego, una vez que todos ellos son "calificados", puede tener un orden simple en local.

Intuitivamente, con el fin de recoger de manera adecuada usted:

  • Baraja tu lista
  • estallar los 5 primeros elementos
  • llamar a la API
  • insertarlos ordenados en el resultado (la inserción uso ordenar aquí)
  • Levante la mediana
  • Coloque los 4 primeros elementos (o menos si hay menos disponibles)
  • de llamadas a la API con la mediana y los 4 primeros
  • Volver a insertar hasta que su carrera a partir de elementos

Si la lista es de 1.000 canciones de largo, que 250 llamadas a la API, nada demasiado miedo .

3

Excelente pregunta: una canción de Britney Spears, podría ser fenomenalmente popular durante 2 meses y luego (afortunadamente) olvidada, mientras que otra canción de Elvis podría haber tenido una popularidad sostenida durante 30 años. ¿Cómo distingues cuantitativamente los dos? Sabemos que queremos pensar que la popularidad sostenida es más importante que un "flash in the pan", pero ¿cómo obtener este resultado?

Primero, me gustaría normalizar alrededor de la fecha de lanzamiento - Subterranean Homesick Blues podría ser impopular ahora (no en mi casa, sin embargo), pero la normalización de 1965 podría producir un resultado diferente.

Dado que la mayoría de las canciones aumentan en popularidad, se nivelan y luego disminuyen, escojamos el área cuando se nivelan. Se podría suponer que durante ese período, las dos series son estacionarias, no están correlacionadas y normalmente distribuidas. Ahora puede simplemente aplicar una prueba para determinar si los medios son diferentes.

Probablemente haya pruebas menos restrictivas para determinar la magnitud de la diferencia entre dos series temporales, pero aún no las he encontrado.

¿Alguien?

Cuestiones relacionadas