Pregunta

Bien, aquí hay un problema análogo a mi problema (explicaré el problema real a continuación, pero creo que esta analogía será más fácil de entender).

Tengo una moneda extraña de dos caras que solo sale cara (al azar) 1 de cada 1001 lanzamientos (el resto es cruz).En otras palabras, por cada 1000 cruces que vea, habrá 1 cara.

Tengo una enfermedad peculiar en la que solo noto 1 de cada 1000 colas que veo, pero noto todas las caras, por lo que me parece que la tasa de notar cara o cruz es 0,5.Por supuesto, soy consciente de esta enfermedad y de sus efectos para poder compensarla.

Ahora alguien me da una moneda nueva y noté que la tasa de detección de caras es ahora de 0,6.Dado que mi enfermedad no ha cambiado (todavía solo noto 1 de cada 1000 cruces), ¿cómo calculo la proporción real de caras y cruces que produce esta nueva moneda?


Bien, ¿cuál es el verdadero problema?Bueno, tengo un montón de datos que consisten en entradas y salidas que son 1 y 0.Quiero enseñar un algoritmo de aprendizaje automático supervisado para predecir el resultado esperado (un valor flotante entre 0 y 1) dada una entrada.El problema es que los 1 son muy raros, y esto arruina las matemáticas internas porque se vuelven muy susceptibles a errores de redondeo, incluso con matemáticas de punto flotante de alta precisión.

Entonces, normalizo los datos omitiendo aleatoriamente la mayoría de las 0 muestras de entrenamiento para que parezca que hay una proporción aproximadamente igual de 1 y 0.Por supuesto, esto significa que ahora la salida del algoritmo de aprendizaje automático ya no predice una probabilidad, es decir.en lugar de predecir 0,001 como debería, ahora predeciría 0,5.

Necesito una forma de convertir la salida del algoritmo de aprendizaje automático a una probabilidad dentro del conjunto de entrenamiento original.

Nota del autor (07/10/2015): Más tarde descubrí que esta técnica se conoce comúnmente como "reducción de resolución".

¿Fue útil?

Solución

Se está calculando el siguiente

calculatedRatio = heads / (heads + tails / 1000)

y necesitas

realRatio = heads / (heads + tails)

Solución de ambas ecuaciones para colas produce las siguientes ecuaciones.

tails = 1000 / calculatedRatio - 1000
tails = 1 / realRatio - 1

La combinación de ambos produce el siguiente.

1000 / calculateRatio - 1000 = 1 / realRatio - 1

Y finalmente despejando realRatio.

realRatio = 1 / (1000 / calculatedRatio - 999)

Parece ser correcta. calculatedRatio 0,5 rendimientos realRatio 1/1001, 0,6 rendimientos 3/2003.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top