Cálculo de popularidad por clicks

themaz

Hola, tengo el siguiente problema y no se como solucionarlo de la mejor forma.

Dispongo de una tabla en la base de datos con un producto (prod_id) y cuando se hizo click en este producto.

Lo que intento buscar es un ranking de que productos son los más populares actualmente pero claro, no puedo medirlo por el número de clicks ya que pueden haber productos que tuviesen muchos clicks pero en cosa de 1 mes ya no reciben nada. O viceversa, un producto nuevo no puede ser popular si otro existente ya tiene muchos clicks a pesar de que ya no lo es.

Había pensado en ponderar la media de clicks pero claro, los nuevos productos tienen ventaja ya que es más fácil que suban este ratio click/dia. Al hacer medias, aquellos que son muy antiguos tienen desventaja ya que les cuesta subir más este ratio.

Disculparme si no me explico bien del todo. Sabéis como puedo hacer este cálculo ? Tenéis alguna idea

Saludos y gracias de antemano

B

Hmm, a ver, tienes por cada prod_id una funcion del tiempo n(t) con el numero de clicks recibidos entre t y t+\Delta t. (Puedes afinar tanto como quieras).

Para que te interesa saber la popularidad exactamente?

Por que es mas facil que un producto nuevo tenga mas clicks/dia? Y por que el hecho de tener mas clicks/dia no lo hace mas popular? Y por que un producto antiguo no tendra clicks/dia elevados?

vincen

no puedo medirlo por el número de clicks ya que pueden haber productos que tuviesen muchos clicks pero en cosa de 1 mes ya no reciben nada.

Hacer que cada click dure 1 mes? Al hacer click suma 1 click durante 30 dias, pasados 30 dias se resta ese click.

Al hacer click que añada la fecha de cuando le dio click y para mostrar los mas populares pues haces un select con todos los clicks de hace 30 dias hasta el dia de hoy.

No se si te he entendido bien :S

1 respuesta
eXtreM3

Los productos son populares en referencia a una fecha (o rango de fechas). Tiene sentido que saques los 5 (el número que quieras) de productos con más clics en las últimas 2-3 semanas.

Si un producto fue muy popular en su día (el iphone 4 por ejemplo), obviamente no va a ser popular a día de hoy. Aunque tenga 100.000 clics y el iphone 6 tenga 2.000 clics en las últimas 2 semanas, aparecerá top1 el iphone 6.

En resumen: saca los que más clics tengan en las últimas semanas.

B

#3 es que asi como lo ha explicado es dificil ayudar, si no dice que resolucion le interesa...

Yo pienso que una cosa interesante a hacer (pero a lo mejor te toma mucho tiempo #1) es mirar la progresion de n(t).

Me explico:

Si n(t) = #{clicks entre t y t + dt} puedes mirar (n(t+dt) - n(t))/dt. Mientras sea positiva es que gana popularidad, si es negativa pierde popularidad. Claro que hay cierto ruido asi que tendrias que tomar promedios en una running window.

Otra forma interesante:
Puedes usar el hecho de que n(t) sigue (mas o menos ya que influiras midiendo la popularidad) un proceso de Poisson y el tiempo promedio entre clicks sigue una v.a. exponencial. Ese parametro te define la distribucion entera asi que simplemente el que tenga un tiempo promedio entre clicks menor (puedes ponderar segun el tiempo) es el mas popular.

Usuarios habituales