Hay dos formas de ponerlo en práctica que yo utilizo habitualmente. Siempre trabajo con datos en tiempo real, así que esto supone una entrada continua. Aquí hay algo de pseudo-código:
Utilizando un minmax entrenable:
define function peak:
// keeps the highest value it has received
define function trough:
// keeps the lowest value it has received
define function calibrate:
// toggles whether peak() and trough() are receiving values or not
define function scale:
// maps input range [trough.value() to peak.value()] to [0.0 to 1.0]
Esta función requiere que se realice una fase de entrenamiento inicial (mediante calibrate()
) o que vuelva a entrenar a determinados intervalos o según determinadas condiciones. Por ejemplo, imagina una función como ésta:
define function outBounds (val, thresh):
if val > (thresh*peak.value()) || val < (trough.value() / thresh):
calibrate()
El pico y la depresión normalmente no son valores de recepción, pero si outBounds()
recibe un valor que es más de 1,5 veces el pico actual o menos que el valle actual dividido por 1,5, entonces calibrate()
que permite que la función se recalibre automáticamente.
Utilizando un mínimo histórico:
var arrayLength = 1000
var histArray[arrayLength]
define historyArray(f):
histArray.pushFront(f) //adds f to the beginning of the array
define max(array):
// finds maximum element in histArray[]
return max
define min(array):
// finds minimum element in histArray[]
return min
define function scale:
// maps input range [min(histArray) to max(histArray)] to [0.0 to 1.0]
main()
historyArray(histArray)
scale(min(histArray), max(histArray), histArray[0])
// histArray[0] is the current element
0 votos
¿Qué aspecto tienen sus datos? ¿Están acotados los valores?
0 votos
@spencer Este foro acoge (IMHO) a todo el mundo. Estás perfectamente bien. ¿Puede usted por favor un poco más de detalles acerca de sus datos? ¿Son tus datos no negativos? ...
0 votos
Mis datos serán no negativos y no tienen límite.
7 votos
Porque cualquier función no decreciente de $[0, \infty) \to [0, 1]$ será el truco, tienes mucha flexibilidad. Pero algunos métodos serán mejores que otros, dependiendo de la aplicación. ¿Cuál es su propósito al buscar esa reexpresión?
2 votos
Estoy midiendo el contenido a través de muchas dimensiones diferentes y quiero ser capaz de hacer comparaciones en términos de lo relevante que es un determinado contenido. Además, quiero que los valores de estas dimensiones sean explicables y fáciles de entender.
2 votos
@Spencer ¿Exactamente cómo se mide el contenido y la "relevancia"? Por ejemplo, en escalas arbitrarias, como recuentos, proporciones, frecuencias de vistas, correlaciones con otros contenidos, etc. etc. Diferentes tipos de mediciones se benefician de diferentes tipos de reexpresiones.
1 votos
Los estoy midiendo en escalas arbitrarias. Cuántos años tiene el contenido. Cuántos "puntos" recibe un contenido. El "interés" autodeclarado en el ámbito del contenido.
2 votos
Una de las transformaciones más sencillas que puede utilizar es convertir sus datos en puntuaciones cuantílicas.
0 votos
¿Qué tal si utilizamos los rangos de percentiles?