0eprv9arhlvr Awz8.jpeg

Por qué manejar valores negativos debería ser pan comido

Foto por Osman Rana en desempaquetar

Muchos modelos son sensibles a valores atípicos, como regresión lineal, k-vecino más cercanoy ARIMA. Los algoritmos de aprendizaje automático sufren de sobreajuste y es posible que no se generalicen bien en presencia de valores atípicos.¹ Sin embargo, la transformación correcta puede reducir estos valores extremos y mejorar el rendimiento de su modelo.

Las transformaciones para datos con valores negativos incluyen:

  1. Registro desplazado
  2. Caja-Cox desplazada
  3. Seno hiperbólico inverso
  4. Sinh-arcsinh

Log y Box-Cox son herramientas eficaces cuando se trabaja con datos positivos, pero el seno hiperbólico inverso (arcsinh) es mucho más eficaz con valores negativos.

Sinh-arcsinh es aún más poderoso. Tiene dos parámetros que pueden ajustar el sesgar y curtosis de sus datos para que sean casi normales. Estos parámetros se pueden derivar mediante el descenso de gradiente. Vea una implementación en Python al final de esta publicación.

La transformación logarítmica se puede adaptar para manejar valores negativos con un término cambiante. α.

A lo largo del artículo, uso tronco para referirme a tronco natural.

Visualmente, esto es mover la asíntota vertical del registro de 0 a α.

Gráfico de transformación de registro desplazado con desplazamiento de -5, hecho con desmos disponible bajo CC BY-SA 4.0. Texto de ecuación agregado a la imagen.

Previsión de precios de acciones

Imagine que está construyendo un modelo para predecir el mercado de valores. Hosenzade y Haratizadeh abordan este problema con una red neuronal convolucional utilizando un gran conjunto de variables de características que he extraído de Repositorio de aprendizaje automático de UCI Irvine². A continuación se muestra la distribución de la característica de cambio de volumen, un indicador técnico importante para los pronósticos del mercado de valores.

hecho con Matplotlib

El gráfico cuantil-cuantil (QQ) revela pesadas colas derecha e izquierda. El objetivo de nuestra transformación será acercar las colas a lo normal (la línea roja) para que no tenga valores atípicos.

Usando un valor de desplazamiento de -250, obtengo esta distribución de registros.

La cola derecha se ve un poco mejor, pero la cola izquierda aún muestra una desviación de la línea roja. Log funciona aplicando una función cóncava a los datos que sesga los datos que quedan al comprimir los valores altos y estirar los valores bajos.

La transformación logarítmica sólo aclara la cola derecha.

Si bien esto funciona bien para datos con sesgo positivo, es menos eficaz para datos con valores atípicos negativos.

hecho con desmos disponible bajo CC BY-SA 4.0. Texto y flechas agregados a la imagen.

En los datos bursátiles, la asimetría no es el problema. Los valores extremos están tanto en el lado izquierdo como en el derecho. El curtosis es alto, lo que significa que ambas colas son pesadas. Una función cóncava simple no está preparada para esta situación.

Box-Cox es una versión generalizada de log, que también se puede cambiar para incluir valores negativos, escritos como

El λ El parámetro controla la concavidad de la transformación, permitiéndole adoptar una variedad de formas. Box-cox es cuadrático cuando λ = 2. Es lineal cuando λ = 1, y registrar como λ tiende a 0. Esto se puede verificar utilizando la regla de L’Hôpital.

Gráfico de transformación box-cox desplazada con desplazamiento -5 y cinco valores diferentes para λ, hechos con desmos disponible bajo CC BY-SA 4.0. Texto añadido a la imagen.

Para aplicar esta transformación en nuestros datos de precios de acciones, utilizo un valor de desplazamiento -250 y determino λ con scipy boxcox función.

from scipy.stats import boxcox
y, lambda_ = boxcox(x - (-250))

Los datos transformados resultantes se ven así:

A pesar de la flexibilidad de esta transformación, no logra reducir las colas de los datos del precio de las acciones. Valores bajos de λ sesgar los datos hacia la izquierda, reduciendo la cola derecha. Altos valores de λ sesga los datos hacia la derecha, reduciendo la cola izquierda, pero no hay ningún valor que pueda reducir ambos simultáneamente.

La función seno hiperbólica (sinh) se define como

y su inversa es

En este caso, la función inversa es más útil porque es aproximadamente log para grandes X (positivo o negativo) y lineal para valores pequeños de X. En efecto, esto reduce los extremos mientras mantiene los valores centrales, más o menos, iguales.

Arcsinh reduce las colas positivas y negativas.

Para valores positivos, arcsinh es cóncavo y para valores negativos, es convexo. Este cambio de curvatura es la salsa secreta que le permite manejar valores extremos positivos y negativos simultáneamente.

gráfico del seno hiperbólico inverso (arcsinh) en comparación con una función logarítmica, hecho con desmos disponible bajo CC BY-SA 4.0. Texto, flechas y forma de cuadro agregados a la imagen.

El uso de esta transformación en los datos bursátiles da como resultado colas casi normales. ¡Los nuevos datos no tienen valores atípicos!

La escala importa

Considere cómo se escalan sus datos antes de pasarlos a arcsinh.

Para el registro, su elección de unidades es irrelevante. Dólares o centavos, gramos o kilogramos, millas o pies: todo es lo mismo para la función de registro. La escala de sus entradas solo desplaza los valores transformados en un valor constante.

No ocurre lo mismo con arcsinh. Los valores entre -1 y 1 se dejan casi sin cambios, mientras que los números grandes están dominados por el registro. Es posible que deba jugar con diferentes escalas y compensaciones antes de introducir sus datos en arcsinh para obtener un resultado con el que esté satisfecho.

Al final del artículo, implemento un algoritmo de descenso de gradiente en Python para estimar estos parámetros de transformación con mayor precisión.

Propuesta por Jones y Pewsey³, la transformación sinh-arcsinh es

Jones y Pewsey no incluyen la constante 1/Término δ al frente. Sin embargo, lo incluyo aquí porque hace más fácil mostrar arcsinh como un caso límite.

Parámetro ε ajusta la asimetría de los datos y δ ajusta la curtosis³, permitiendo que la transformación adopte muchas formas. Por ejemplo, la transformación de la identidad. f(x) = x es un caso especial de sinh-arcsinh cuando ε = 0 y δ = 1. Arcsinh es un caso límite para ε = 0 y δ acercándose a cero, como se puede ver utilizando nuevamente la regla de L’Hôpital.