1 votos

Dar una puntuación a una secuencia de números

Tengo que dar una puntuación [0..100] a algunas secuencias numéricas formadas por números del conjunto {1..100}. Permítanme dar algunos ejemplos:

 1. [40, 40, 40, 40, 50, 55]
 2. [73, 76, 80, 82]
 3. [20, 20, 13, 13, 13, 13]
 4. [8, 9, 8, 12, 13, 12]
 5. [28, 28, 33, 30, 33, 30]

Parámetros de puntuación:

  • La secuencia debe ir aumentando para puntuar mejor. Por ejemplo: en el siguiente ejemplo 1 es mejor que 2. 3 es el peor. (Restricción más fuerte)
 1. [40, 41, 42, 45]
 2. [40, 41, 45, 42]
 3. [45, 42, 41, 40]
  • Una secuencia es mejor que otra si la diferencia entre los números es muy baja. Cuanto más baja, mejor. Por ejemplo: en el siguiente ejemplo 1 es mejor que 2.
 1. [40, 41, 42, 45]
 2. [0, 15, 30, 45]

Algunos intentos:

  • Comprobando el primer elemento y el último. Cuando el segundo es mayor que el primero: cuanto mayor sea la diferencia, mayor será la puntuación.
  • La desviación estándar da resultados interesantes, pero todavía no excelentes (la secuencia anterior está ordenada de esta manera)

Escenario

Permítanme explicar el contexto, porque entiendo que no tiene mucho sentido lo que he preguntado. Un número en una secuencia representa el porcentaje actual de artículos solicitados de una tienda online (no se sabe cuántos artículos están realmente a la venta).

Por ejemplo [0,50,51,100] significa que en el momento 1 nadie compró este artículo, en el momento 2 se vendió el 50% de este producto, y así sucesivamente... Digamos que la secuencia anterior es real. La secuencia se calcula en un intervalo de 2 minutos: ¡esto significa que se vendieron al menos 100 elementos en 8 minutos!

Consideremos ahora la secuencia muy similar [0,50,50,100] La cifra de la tienda: sólo cambia un número, pero éste no es tan bueno como el anterior, porque la tienda probablemente sólo vende 2 artículos y 8 minutos para vender 2 artículos no es tan excepcional.

¿Qué función puedo utilizar para optimizar la puntuación?

0voto

SanSS Puntos 108

Se me ocurrió una función bastante sencilla para resolver esta tarea.

$(currentPercentage-firstPercentage)*\left\lvert minimumNotNullDifferencePercentage\right\rvert^{-1}$

Por ejemplo:

$[0,50,50,100] ⇒ (100-0)(50^{-1})$

$[0,50,51,100] ⇒ (100-0)(1^{-1})$

Lo que funciona bastante bien aplicado a un escenario real.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X