¿Qué es la imputación por KNN?
La imputación por KNN (K-Nearest Neighbors Imputation) es una técnica de tratamiento de datos faltantes que estima los valores ausentes utilizando información procedente de observaciones similares dentro del conjunto de datos.
A diferencia de la imputación simple, que reemplaza todos los valores faltantes de una variable utilizando una única estadística como la media o la mediana, la imputación por KNN genera una estimación personalizada para cada observación basándose en sus vecinos más cercanos.
La idea fundamental es que observaciones con características similares probablemente también presenten valores similares en las variables faltantes. Por esta razón, la imputación por KNN suele producir estimaciones más realistas que los métodos de imputación simple.
¿Por qué utilizar KNN para imputar datos faltantes?
Cuando existen relaciones entre las variables de un conjunto de datos, reemplazar los valores faltantes utilizando únicamente la media o la mediana puede provocar una pérdida importante de información. Por ejemplo, consideremos los siguientes clientes:
| Edad | Ingresos |
|---|---|
| 25 | 1800 |
| 28 | 1900 |
| 27 | NULL |
| 60 | 5000 |
Resulta poco razonable sustituir el ingreso faltante mediante la media global de todos los ingresos, ya que el cliente de 27 años probablemente se parezca más a los clientes jóvenes que al cliente de 60 años. La imputación por KNN intenta aprovechar precisamente esta similitud, la mayoría de implementaciones utilizan la distancia euclídea.
¿Cómo funciona la imputación por KNN?
El procedimiento general consiste en:
- Identificar la observación con datos faltantes.
- Calcular la distancia respecto al resto de observaciones.
- Encontrar los K vecinos más cercanos.
- Recuperar los valores conocidos de esos vecinos.
- Estimar el valor faltante utilizando la información de los vecinos.
La estimación suele realizarse mediante:
- La media para variables numéricas.
- La moda para variables categóricas.
El parámetro K
Uno de los elementos más importantes de esta técnica es el número de vecinos utilizados.
| Valor de K | Características |
|---|---|
| K pequeño | Más sensible al ruido |
| K intermedio | Equilibrio entre precisión y estabilidad |
| K grande | Estimaciones más estables pero menos específicas |
No existe un valor universalmente óptimo. En muchos proyectos se utilizan valores entre:
K = 3 y K = 10aunque debe validarse según el problema.
Importancia del escalado de variables
La imputación por KNN depende directamente de las distancias entre observaciones. Por este motivo, las variables deben encontrarse en escalas comparables.
Ejemplo:
| Variable | Rango |
|---|---|
| Edad | 18 – 80 |
| Salario | 1000 – 100000 |
Sin escalado, la variable salario dominará completamente el cálculo de distancias. Por ello suele aplicarse previamente:
- Standard Scaling.
- Min-Max Scaling.
- Robust Scaling.
Beneficios de la imputación por KNN
- Aprovecha la información de observaciones similares.
- Conserva mejor la estructura de los datos.
- Produce imputaciones más realistas.
- Tiene en cuenta relaciones entre variables.
- Puede adaptarse a diferentes tipos de datasets.
- Reduce la pérdida de información.
- Suele superar a la imputación simple en precisión.
¿Cuándo utilizar la imputación por KNN?
- Existen relaciones entre variables.
- El porcentaje de valores faltantes es moderado.
- El dataset no es excesivamente grande.
- Las observaciones similares contienen información útil.
- Se desea una imputación más precisa que la media o la mediana.
Resulta especialmente útil en:
- Datos de clientes.
- Datos financieros.
- Datos médicos.
- Sistemas de recomendación.
- Problemas de clasificación y regresión.
Ventajas
- Utiliza información contextual.
- Mantiene mejor las distribuciones originales.
- Considera múltiples variables simultáneamente.
- Produce estimaciones individualizadas.
- Fácil de implementar mediante Scikit-Learn.
- Puede mejorar el rendimiento de los modelos.
Desventajas
- Coste computacional elevado.
- Sensibilidad al escalado de variables.
- Sensibilidad a valores atípicos.
- Puede ser lento en grandes datasets.
- La elección de K influye en los resultados.
Además, cuando existen muchos valores faltantes, encontrar vecinos fiables resulta más complicado.
Limitaciones
La imputación por KNN presenta varias limitaciones importantes:
- No funciona bien con datasets extremadamente grandes.
- Puede degradarse en espacios de alta dimensionalidad.
- Depende de la calidad de las variables utilizadas.
- No siempre captura relaciones complejas.
- Puede producir imputaciones incorrectas cuando los vecinos no son realmente similares.
Por esta razón, en algunos escenarios se prefieren métodos más avanzados como MICE.
Comparación con otras técnicas de imputación
| Característica | Imputación Simple | KNN Imputation | MICE |
|---|---|---|---|
| Complejidad | Baja | Media | Alta |
| Utiliza relaciones entre variables | No | Sí | Sí |
| Coste computacional | Bajo | Medio-Alto | Alto |
| Calidad de imputación | Media | Alta | Muy Alta |
| Facilidad de implementación | Alta | Media | Baja |
| Escalabilidad | Alta | Media | Baja |
Imputación por KNN vs Imputación Simple
| Aspecto | Imputación Simple | Imputación por KNN |
|---|---|---|
| Valor imputado | Igual para todos los nulos | Personalizado |
| Utiliza vecinos similares | No | Sí |
| Conserva relaciones entre variables | No | Sí |
| Coste computacional | Bajo | Alto |
| Precisión | Media | Alta |
Aplicaciones en Data Science y Machine Learning
La imputación por KNN aparece frecuentemente en:
- Modelos de clasificación.
- Modelos de regresión.
- Analítica financiera.
- Predicción de riesgo.
- Sistemas de recomendación.
- Analítica de clientes.
- Predicción de abandono.
- Datos biomédicos.
- Detección de fraude.
Es especialmente útil cuando la similitud entre observaciones contiene información valiosa.
Impacto en Machine Learning
Muchos algoritmos requieren conjuntos de datos completos para funcionar correctamente.
La imputación por KNN permite:
- Conservar registros incompletos.
- Reducir la pérdida de información.
- Mantener relaciones entre variables.
- Mejorar la calidad del dataset.
En numerosos problemas, los modelos entrenados tras aplicar KNN Imputation obtienen mejores resultados que aquellos construidos utilizando imputación simple.
Implementación en Python
Ejemplo básico con KNNImputer
import pandas as pd
from sklearn.impute import KNNImputer
df = pd.DataFrame({
"edad": [25, 28, 27, 60],
"ingresos": [1800, 1900, None, 5000]
})
imputer = KNNImputer(
n_neighbors=2
)
df_imputado = pd.DataFrame(
imputer.fit_transform(df),
columns=df.columns
)
print(df_imputado)
Utilizando escalado previo
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.impute import KNNImputer
pipeline = Pipeline([
("scaler", StandardScaler()),
("imputer", KNNImputer(
n_neighbors=5
))
])
datos_imputados = pipeline.fit_transform(df)
Integración en un flujo de Machine Learning
from sklearn.pipeline import Pipeline
from sklearn.impute import KNNImputer
from sklearn.ensemble import RandomForestClassifier
pipeline = Pipeline([
("imputer",
KNNImputer(n_neighbors=5)),
("model",
RandomForestClassifier())
])
pipeline.fit(X_train, y_train)
Buenas prácticas
Al utilizar imputación por KNN es recomendable:
- Escalar las variables antes de calcular distancias.
- Probar diferentes valores de K.
- Analizar la distribución de los datos antes y después de la imputación.
- Utilizar únicamente datos de entrenamiento para ajustar el imputador.
- Evaluar el impacto sobre el rendimiento del modelo.
- Revisar la presencia de outliers.
Conclusión
La imputación por KNN es una técnica avanzada de tratamiento de datos faltantes que estima los valores ausentes utilizando observaciones similares dentro del conjunto de datos. A diferencia de la imputación simple, aprovecha las relaciones existentes entre variables para generar estimaciones personalizadas y generalmente más precisas.
Aunque presenta un coste computacional superior y requiere prestar atención al escalado de las variables, constituye una alternativa muy eficaz cuando existen patrones de similitud significativos en los datos. Por ello, es una de las técnicas de imputación más utilizadas en proyectos de Data Science y Machine Learning que buscan maximizar la calidad de la información disponible antes del modelado.