39  Tratamiento de Ruido, Suavizado y Discretización

En la ciencia de datos y la ingeniería de machine learning, nos enfrentamos constantemente al desafío de lidiar con datos imperfectos. Los datos provenientes del mundo real rara vez son limpios y perfectos; suelen estar contaminados por diversas fuentes de perturbación. Una de estas fuentes principales es el ruido.

En este capítulo distinguimos ruido, errores de captura y valores atípicos; después usamos ejemplos pequeños para entender suavizado y discretización. BigMart Sales sirve como contexto de variables, mientras que la serie diaria que aparece más adelante es simulada: el conjunto de datos utilizado aquí no proporciona una secuencia temporal diaria de ventas.

Para comprender cómo afecta el ruido a nuestros modelos, es fundamental distinguir entre dos conceptos que a menudo se confunden en la práctica profesional: el ruido y los outliers (valores atípicos).

39.1 Ruido y valores atípicos

  • Ruido1: variación que dificulta reconocer el patrón que interesa. Puede surgir de mediciones imprecisas, variabilidad natural o variables explicativas que aún no hemos observado. No siempre se puede ni conviene eliminar.
  • Valor atípico2: observación inusual respecto de la mayoría. Puede ser válida o indicar un error; hay que investigar su origen antes de corregirla.

1 Ruido blanco: sucesión de errores con media cero, la misma varianza y sin correlación entre instantes distintos. Es un modelo idealizado: en ventas reales el error de hoy suele parecerse al de ayer (autocorrelación), y entonces promediar reduce la varianza menos de lo que indica \(\sigma^2/(2m+1)\).

2 Valor atípico: observación distante de la mayoría según una referencia explícita (por ejemplo, un rango intercuartílico). Ser atípico no implica ser incorrecto.

39.2 Visibilidad de productos y una serie simulada

En BigMart Sales, los registros con Item_Visibility = 0 merecen una revisión: un cero podría ser legítimo, una convención de captura o un dato faltante codificado. No podemos deducir su causa sin documentación del proceso de medición. Para practicar con ventas diarias usaremos una serie sintética con tendencia conocida y perturbaciones añadidas; así podremos ver cuándo un filtro mejora la lectura de la señal y cuándo borra picos reales. Un modelo que memoriza fluctuaciones accidentales puede sufrir sobreajuste3.

3 Sobreajuste al ruido estocástico (Overfitting): Ocurre cuando un algoritmo de ML asimila las fluctuaciones aleatorias de la señal como si fueran patrones explicables del fenómeno.


39.3 Ejemplo trabajado: discretización y suavizado a mano

Para desmitificar el funcionamiento de los algoritmos computacionales de suavizado y discretización, desarrollaremos los cálculos de forma completamente manual.

Consideremos un conjunto numérico ordenado de 12 pesos ficticios de productos (Item_Weight). Es un ejemplo didáctico, no una muestra extraída del archivo BigMart:

\[ X = [4, 8, 9, 15, 21, 21, 24, 25, 26, 28, 29, 34] \]

39.3.1 Discretización por igual ancho (equal-width binning)

Divide el rango de los datos en \(k\) intervalos del mismo tamaño: 1. Número de bins: \(k = 3\). 2. Rango: \(\min(X) = 4\), \(\max(X) = 34\). 3. Ancho del bin (\(W\)): \[ W = \frac{\max(X) - \min(X)}{k} = \frac{34 - 4}{3} = \frac{30}{3} = 10 \] 4. Intervalos: - Bin 1: \([4, 14)\) - Bin 2: \([14, 24)\) - Bin 3: \([24, 34]\) 5. Asignación de elementos: - Bin 1: \(\{4, 8, 9\}\) (3 elementos) - Bin 2: \(\{15, 21, 21\}\) (3 elementos) - Bin 3: \(\{24, 25, 26, 28, 29, 34\}\) (6 elementos)

39.3.2 Discretización por igual frecuencia (equal-frequency binning)

Asigna el mismo número de observaciones \(N/k\) a cada bin: 1. \(N = 12, k = 3 \implies 12 / 3 = 4\) elementos por bin. 2. Asignación ordenada: - Bin 1: \(\{4, 8, 9, 15\}\) - Bin 2: \(\{21, 21, 24, 25\}\) - Bin 3: \(\{26, 28, 29, 34\}\)

39.3.3 Suavizado de datos dentro de los bins

Tomando los bins de igual frecuencia:

Suavizado por Medias del Bin. - Bin 1 \(\{4, 8, 9, 15\}\): \(\mu_1 = \frac{4+8+9+15}{4} = \frac{36}{4} = 9.0 \implies [9.0, 9.0, 9.0, 9.0]\) - Bin 2 \(\{21, 21, 24, 25\}\): \(\mu_2 = \frac{21+21+24+25}{4} = \frac{91}{4} = 22.75 \implies [22.75, 22.75, 22.75, 22.75]\) - Bin 3 \(\{26, 28, 29, 34\}\): \(\mu_3 = \frac{26+28+29+34}{4} = \frac{117}{4} = 29.25 \implies [29.25, 29.25, 29.25, 29.25]\)

Señal final suavizada: \([9.0, 9.0, 9.0, 9.0, 22.75, 22.75, 22.75, 22.75, 29.25, 29.25, 29.25, 29.25]\)

Suavizado por Medianas del Bin. - Bin 1: Mediana de \(\{4, 8, 9, 15\} = \frac{8 + 9}{2} = 8.5 \implies [8.5, 8.5, 8.5, 8.5]\) - Bin 2: Mediana de \(\{21, 21, 24, 25\} = \frac{21 + 24}{2} = 22.5 \implies [22.5, 22.5, 22.5, 22.5]\) - Bin 3: Mediana de \(\{26, 28, 29, 34\} = \frac{28 + 29}{2} = 28.5 \implies [28.5, 28.5, 28.5, 28.5]\)

Suavizado por Límites del Bin (Boundaries). Cada valor se reemplaza por el extremo del bin (mínimo o máximo) más cercano: - Bin 1 (Límites: 4 y 15): - 4 está en el límite: 4 - 8 está más cerca de 4 (\(|8-4|=4\)) que de 15 (\(|8-15|=7\)): 4 - 9 está más cerca de 4 (\(|9-4|=5\)) que de 15 (\(|9-15|=6\)): 4 - 15 está en el límite: 15 - Resultado Bin 1: \([4, 4, 4, 15]\) - Bin 2 (Límites: 21 y 25): 21 y 21 ya son el límite inferior; 24 está más cerca de 25 (\(1\) frente a \(3\)). Resultado: \([21, 21, 25, 25]\). - Bin 3 (Límites: 26 y 34): 28 está más cerca de 26 (\(2\) frente a \(6\)) y 29 también (\(3\) frente a \(5\)). Resultado: \([26, 26, 26, 34]\).

¿Cuánta información se pierde? Una medida simple es la suma de cuadrados entre cada valor y su sustituto. Para el bin 1: con la media, \((4-9)^2+(8-9)^2+(9-9)^2+(15-9)^2=62\); con los límites, \(0+16+25+0=41\). Ningún método es mejor en general: la media minimiza esta suma dentro de cada bin cuando el sustituto es un único valor4, mientras que los límites usan dos valores y conservan datos que sí existieron.

4 La media minimiza la suma de cuadrados: \(\sum_i (x_i-c)^2\) es una parábola en \(c\) cuya derivada, \(-2\sum_i(x_i-c)\), se anula en \(c=\bar x\). La mediana minimiza, en cambio, la suma de valores absolutos \(\sum_i|x_i-c|\).

39.3.4 Suavizado por regresión lineal manual

Tomemos 5 observaciones con ruido de ventas de un producto en función de la semana: \((1, 2.1), (2, 3.9), (3, 6.2), (4, 7.8), (5, 10.3)\)

  1. \(\bar{x} = \frac{1+2+3+4+5}{5} = 3.0\)
  2. \(\bar{y} = \frac{2.1+3.9+6.2+7.8+10.3}{5} = \frac{30.3}{5} = 6.06\)
  3. \(\sum (x_i - \bar{x})^2 = (-2)^2 + (-1)^2 + 0^2 + 1^2 + 2^2 = 4 + 1 + 0 + 1 + 4 = 10.0\)
  4. \(\sum (x_i - \bar{x})(y_i - \bar{y})\):
    • \((1-3)(2.1-6.06) = (-2)(-3.96) = 7.92\)
    • \((2-3)(3.9-6.06) = (-1)(-2.16) = 2.16\)
    • \((3-3)(6.2-6.06) = 0\)
    • \((4-3)(7.8-6.06) = (1)(1.74) = 1.74\)
    • \((5-3)(10.3-6.06) = (2)(4.24) = 8.48\)
    • Suma = \(7.92 + 2.16 + 0 + 1.74 + 8.48 = 20.30\)
  5. Pendiente \(\beta_1 = \frac{20.30}{10.0} = 2.03\)
  6. Intercepto \(\beta_0 = \bar{y} - \beta_1 \bar{x} = 6.06 - (2.03 \times 3.0) = 6.06 - 6.09 = -0.03\)
  7. Predicciones suavizadas (\(\hat{y}_i = 2.03 x_i - 0.03\)):
    • \(\hat{y}_1 = 2.00\) (original: 2.1)
    • \(\hat{y}_2 = 4.03\) (original: 3.9)
    • \(\hat{y}_3 = 6.06\) (original: 6.2)
    • \(\hat{y}_4 = 8.09\) (original: 7.8)
    • \(\hat{y}_5 = 10.12\) (original: 10.3)

39.4 Formalización: modelos y filtros

39.4.1 Modelo aditivo de señal y ruido

Un modelo posible representa cada observación \(y_i\) como señal subyacente \(f(x_i)\) más un error \(\epsilon_i\):

\[ y_i = f(x_i) + \epsilon_i \]

Bajo un supuesto simplificador, los errores tienen media cero y varianza constante5: \[ \mathbb{E}[\epsilon_i] = 0, \quad \operatorname{Var}(\epsilon_i) = \sigma^2 \]

5 Homocedasticidad: varianza del error aproximadamente constante en los distintos valores de la variable explicativa.

39.4.2 Relación señal-ruido (SNR)

Si conocemos o estimamos por separado la potencia de la señal y la del error, la relación señal-ruido puede expresarse en decibelios: \[ \text{SNR}_{\text{dB}} = 10 \log_{10}\left(\frac{P_{\text{señal}}}{P_{\text{ruido}}}\right) \]

39.4.3 Compromiso entre suavidad y detalle

Una ventana pequeña conserva variaciones rápidas, incluido el ruido. Una ventana grande reduce fluctuaciones, pero también retrasa o aplana cambios reales. Este compromiso tiene una forma matemática precisa para la media móvil centrada con \(2m+1\) observaciones.

Varianza (lo que ganamos). Si los errores son ruido blanco6 con varianza \(\sigma^2\), la media de \(2m+1\) de ellos tiene varianza \[ \operatorname{Var}\!\left(\frac{1}{2m+1}\sum_{j=-m}^{m}\epsilon_{t+j}\right)=\frac{\sigma^2}{2m+1}, \] porque las varianzas de variables independientes se suman y la constante sale al cuadrado. Con \(\sigma=0.4\) y una ventana de 15 días, la desviación del ruido que sobrevive es \(0.4/\sqrt{15}\approx0.10\).

6 Ruido blanco: sucesión de errores con media cero, la misma varianza y sin correlación entre instantes distintos. Es un modelo idealizado: en ventas reales el error de hoy suele parecerse al de ayer (autocorrelación), y entonces promediar reduce la varianza menos de lo que indica \(\sigma^2/(2m+1)\).

7 Expansión de Taylor: aproximación de una función suave cerca de un punto mediante sus derivadas: \(f(t+j)\approx f(t)+j f'(t)+\tfrac{j^2}{2}f''(t)\). Al promediar \(j=-m,\dots,m\), el término con \(j\) se anula por simetría y sobrevive el de \(j^2\).

8 Error cuadrático medio (ECM): \(\mathbb{E}[(\hat y_t-f(t))^2]\). Sumando y restando \(\mathbb{E}[\hat y_t]\) se descompone en \(\text{sesgo}^2+\text{varianza}\): una idea que reaparece al elegir la complejidad de cualquier modelo.

Sesgo (lo que pagamos). Si la señal se curva, promediar vecinos la aplana. Con una expansión de Taylor7 de \(f\) alrededor de \(t\), los términos lineales se cancelan por simetría y queda \[ \mathbb{E}[\hat y_t]-f(t)\approx\frac{f''(t)}{2}\cdot\frac{1}{2m+1}\sum_{j=-m}^{m}j^2=\frac{m(m+1)}{6}\,f''(t). \] El sesgo crece aproximadamente con \(m^2\) y es mayor donde la curvatura \(|f''|\) es grande: en picos y valles. El error cuadrático medio8 suma ambos efectos, \(\text{ECM}=\text{sesgo}^2+\text{varianza}\); por eso la curva de error frente a la ventana tiene forma de U y existe una ventana intermedia óptima.

La media exponencial con \(\alpha=2/(w+1)\) (el parámetro span=w de pandas) tiene, en régimen estable, varianza \(\frac{\alpha}{2-\alpha}\sigma^2=\sigma^2/w\): la misma reducción que una media móvil de \(w\) observaciones, pero usando solo el pasado.

39.4.4 Filtros de suavizado comunes

Si una serie fue muestreada con poca frecuencia, algunos cambios rápidos pueden confundirse con patrones lentos (aliasing)9. Los filtros siguientes responden a preguntas distintas:

9 Aliasing: efecto por el cual una señal muestreada con frecuencia insuficiente puede aparentar una frecuencia distinta. El criterio de Nyquist se aplica a señales con banda de frecuencias limitada y muestreo regular.

  1. Media móvil centrada (SMA): \[ \hat{y}_t = \frac{1}{2m+1}\sum_{j=-m}^m y_{t+j} \] Usa observaciones futuras; sirve para exploración retrospectiva, pero no para predecir en tiempo real.
  2. Suavizado Exponencial (EWMA): \[ \hat{y}_t = \alpha y_t + (1-\alpha) \hat{y}_{t-1}, \quad \alpha \in [0, 1] \]
  3. Filtro de Savitzky-Golay: ajusta un polinomio local por mínimos cuadrados. Puede conservar mejor algunos rasgos de la curva que una media móvil, según la ventana y el orden del polinomio; la versión centrada también usa observaciones futuras.

39.5 Laboratorio interactivo: suavizado y discretización

Objetivo. Comparar cómo cambian los grupos al modificar el número de intervalos y comprobar en una serie simulada el compromiso sesgo–varianza de la sección anterior.

  1. Con tres intervalos, compara ancho igual y frecuencia igual. Comprueba que los 12 precios quedan asignados una sola vez y describe qué método produce grupos más equilibrados.
  2. Aplica media, mediana y límites del intervalo. La «pérdida» es la suma de cuadrados entre cada precio y su valor suavizado. ¿Qué método pierde menos? ¿Por qué la pérdida siempre disminuye al aumentar \(k\)?
  3. En la serie, activa el pico de promoción y usa la media móvil centrada con ventana 3, 11 y 31. Observa el pico y ubica cada ventana en la curva «error frente a ventana». ¿Dónde está el mínimo de la U?
  4. Duplica el ruido. ¿La ventana óptima se hace más grande o más pequeña? Relaciónalo con las fórmulas de varianza y sesgo.

Entrega breve. Anota una decisión de transformación con su propósito y un riesgo. La línea negra es la señal verdadera solo porque simulamos los datos; en un caso real no la conoceríamos.

Laboratorio · Discretización

Doce precios, k intervalos

Precios ficticios de Item_MRP: 35, 48, 52, 98, 105, 112, 145, 160, 185, 210, 240, 250.

Partición
Suavizado dentro del intervalo
Tamaños de los grupos
Precios asignados
Pérdida Σ(x − x̂)²

Laboratorio · Filtros

Ventas diarias simuladas: ¿cuánto suavizar?

Serie de 120 días = tendencia estacional + ruido gaussiano (+ un pico real de promoción, opcional).

Filtro

Serie y filtro

observadoseñal verdaderafiltrado

Error frente a ventana (misma serie)

media móvilmedia exponencialventana actual
RMSE sin filtrar
RMSE con filtro
Pico: real / filtrado
Mejor ventana (media móvil)


39.6 Implementación computacional con Python

Código
import numpy as np
import pandas as pd
import plotly.graph_objects as go
from scipy.signal import savgol_filter

# 1. Serie sintética de demanda; no son ventas observadas de BigMart
rng = np.random.default_rng(42)
dias = np.linspace(0, 10, 200)
demanda_real = np.sin(dias) + 0.5 * np.sin(3 * dias) + 3.0
ruido = rng.normal(0, 0.4, size=len(dias))
ventas_ruidosas = demanda_real + ruido

df_ventas = pd.DataFrame({'dia': dias, 'demanda_real': demanda_real, 'ventas_ruidosas': ventas_ruidosas})

# 2. Técnicas de Suavizado
df_ventas['sma_15'] = df_ventas['ventas_ruidosas'].rolling(window=15, center=True, min_periods=1).mean()
df_ventas['ewma_15'] = df_ventas['ventas_ruidosas'].ewm(span=15, adjust=False).mean()
df_ventas['savgol'] = savgol_filter(df_ventas['ventas_ruidosas'], window_length=15, polyorder=3)

# 3. Discretización de Precios con pandas
precios_bigmart = [35, 48, 52, 98, 105, 112, 145, 160, 185, 210, 240, 250]
df_precios = pd.DataFrame({'Item_MRP': precios_bigmart})
df_precios['equal_width'] = pd.cut(df_precios['Item_MRP'], bins=3)
df_precios['equal_freq'] = pd.qcut(df_precios['Item_MRP'], q=3)

print("--- Discretización de Item_MRP ---")
print(df_precios.head(6))
--- Discretización de Item_MRP ---
   Item_MRP         equal_width          equal_freq
0        35   (34.785, 106.667]   (34.999, 102.667]
1        48   (34.785, 106.667]   (34.999, 102.667]
2        52   (34.785, 106.667]   (34.999, 102.667]
3        98   (34.785, 106.667]   (34.999, 102.667]
4       105   (34.785, 106.667]  (102.667, 168.333]
5       112  (106.667, 178.333]  (102.667, 168.333]

39.6.1 Visualización del suavizado con Plotly

Código
fig = go.Figure()
for columna, etiqueta, color, estilo in [
    ('ventas_ruidosas', 'Observaciones ruidosas', '#a6a6a6', 'solid'),
    ('demanda_real', 'Señal conocida (simulación)', '#222222', 'dash'),
    ('sma_15', 'Media móvil centrada', '#d62728', 'solid'),
    ('ewma_15', 'Media exponencial causal', '#2ca02c', 'solid'),
    ('savgol', 'Savitzky-Golay centrado', '#1f77b4', 'solid'),
]:
    fig.add_trace(go.Scatter(x=df_ventas['dia'], y=df_ventas[columna],
                             mode='lines', name=etiqueta,
                             line=dict(color=color, dash=estilo)))
fig.update_layout(title='Comparación de filtros sobre una serie sintética',
                  xaxis_title='Tiempo simulado', yaxis_title='Demanda simulada',
                  template='plotly_white', height=460)
fig.show()

39.7 Prácticas para usar en proyectos reales

ImportanteRegla de oro en producción: Prevención de fuga de datos

Aprende los límites de discretización con datos de entrenamiento y aplícalos después a validación, prueba y producción. Registra cómo se tratan valores fuera del rango aprendido. Para series temporales, valida respetando el orden cronológico y evita filtros centrados cuando la aplicación exige decisiones en tiempo real.

TipMejores prácticas en la industria: Cuándo discretizar
  • Conservar el valor continuo suele ser una referencia razonable: discretizar pierde resolución10. Comprueba con validación si los intervalos añaden valor al modelo y al uso de negocio.
  • Discretizar puede facilitar reglas interpretables o niveles contractuales. En algunos modelos de riesgo se usan transformaciones como Weight of Evidence11; deben aprenderse y validarse sin fuga de la variable objetivo.

11 Weight of Evidence (WOE): codificación de categorías mediante el logaritmo de la razón entre proporciones de dos clases. Requiere reglas para categorías sin observaciones de alguna clase.

10 Pérdida de resolución por discretización: valores distintos pasan a compartir una categoría. Esto puede reducir detalle útil, aunque en algunos problemas mejore robustez o interpretabilidad.


39.8 Notas de términos