Entendiendo la División de Datos y el Escalado de Características en el Aprendizaje Automático
Tabla de Contenidos
- División de Datos: Conjuntos de Entrenamiento y Prueba
- ¿Qué es un Conjunto de Prueba?
- ¿Qué es un Conjunto de Entrenamiento?
- Ratio de División Típico
- Implementando la División de Datos con scikit-learn
- Escalado de Características: Estandarización y Normalización
- ¿Por qué Escalar las Características?
- Estandarización vs. Normalización
- Enfoque Recomendado
- Implementando el Escalado de Características con scikit-learn
- Resumen de Pasos
- Conclusión
División de Datos: Conjuntos de Entrenamiento y Prueba
¿Qué es un Conjunto de Prueba?
Un conjunto de prueba es un subconjunto de tu conjunto de datos que se reserva para evaluar el rendimiento de tu modelo de aprendizaje automático. Al alimentar al modelo con estos datos reservados, puedes evaluar cuán precisamente predice nuevos datos no vistos, entendiendo así el rendimiento real del modelo en el mundo real.
¿Qué es un Conjunto de Entrenamiento?
Por el contrario, un conjunto de entrenamiento es la porción de tus datos utilizada para entrenar el modelo. El modelo aprende patrones, relaciones y estructuras dentro de estos datos para hacer predicciones o clasificaciones sobre nuevos datos.
Ratio de División Típico
Una práctica común es dividir los datos en 80% para entrenamiento y 20% para prueba. Esta proporción proporciona un equilibrio entre permitir que el modelo tenga suficientes datos para aprender y retener suficientes datos para evaluar su rendimiento de manera robusta.
Implementando la División de Datos con scikit-learn
A continuación, una guía paso a paso para dividir tus datos usando la función train_test_split
de scikit-learn:
- Importar las Bibliotecas Necesarias
1from sklearn.model_selection import train_test_split
- Preparar Tus Datos
Asume que tienes tus características almacenadas en
X
y tu variable objetivo enY
:12X = data.drop('target', axis=1) # CaracterísticasY = data['target'] # Variable objetivo - Dividir los Datos
123X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=42)
- test_size=0.2: Asigna el 20% de los datos para prueba.
- random_state=42: Asegura la reproducibilidad controlando el proceso de mezcla. Usar un
random_state
fijo significa que obtendrás la misma división cada vez que ejecutes el código, lo cual es crucial para una evaluación consistente del modelo.
- Verificar la División
Puedes comprobar el número de registros en cada conjunto:
12print(len(X_train)) # Debería ser el 80% del total de datosprint(len(X_test)) # Debería ser el 20% del total de datos
Escalado de Características: Estandarización y Normalización
¿Por qué Escalar las Características?
Los algoritmos de aprendizaje automático funcionan mejor cuando las características numéricas de entrada están en una escala comparable. Las características con rangos más grandes pueden influir desproporcionadamente en el modelo, llevando a un rendimiento subóptimo. El escalado de características estandariza el rango de las características, mejorando la eficiencia y precisión del modelo.
Estandarización vs. Normalización
- Estandarización:
- Fórmula: \( z = \frac{(X – \mu)}{\sigma} \)
- Transforma los datos para que tengan una media de 0 y una desviación estándar de 1.
- Adecuada para características con una distribución Gaussiana (normal).
- Ampliamente utilizada y generalmente efectiva, incluso cuando los datos no son perfectamente normales.
- Normalización:
- Fórmula: \( X_{norm} = \frac{(X – X_{min})}{(X_{max} – X_{min})} \)
- Escala los datos a un rango fijo, típicamente 0 a 1.
- Se utiliza mejor cuando los datos siguen una distribución conocida o cuando se requieren límites específicos.
Enfoque Recomendado
En general, es aconsejable dividir los datos antes de realizar el escalado de características. Esta práctica asegura que los parámetros de escalado (como la media y la desviación estándar) se derivan únicamente de los datos de entrenamiento, previniendo la fuga de datos y asegurando que los datos de prueba permanezcan como un conjunto de reserva verdadero.
Implementando el Escalado de Características con scikit-learn
- Importar el StandardScaler
1from sklearn.preprocessing import StandardScaler
- Inicializar el Escalador
1scaler = StandardScaler()
- Ajustar y Transformar los Datos de Entrenamiento
1X_train_scaled = scaler.fit_transform(X_train)
- Transformar los Datos de Prueba
1X_test_scaled = scaler.transform(X_test)
- Importante: Ajusta el escalador solo con los datos de entrenamiento. La misma transformación se aplica luego a los datos de prueba. Esto asegura que los datos de prueba se escalen de manera consistente sin introducir información del conjunto de prueba en el proceso de entrenamiento.
- Manejo de Variables Categóricas
Si tu conjunto de datos incluye variables categóricas codificadas como valores numéricos (por ejemplo, 0, 1, 2), evita aplicar escalado a estas columnas, ya que puede distorsionar su significado. Asegúrate de que solo las características numéricas continuas sean escaladas.
Resumen de Pasos
- Importar Datos: Carga tu conjunto de datos en un formato adecuado (por ejemplo, pandas DataFrame).
- Dividir Datos: Divide el conjunto de datos en características (
X
) y variable objetivo (Y
), luego realiza una división de entrenamiento-prueba 80/20. - Manejar Datos Faltantes: Aborda cualquier brecha en tus datos a través de imputación o eliminación.
- Selección de Características: Elimina características irrelevantes o redundantes para mejorar el rendimiento del modelo.
- Codificar Datos: Convierte variables categóricas en formatos numéricos si es necesario.
- Escalado de Características: Aplica estandarización o normalización para asegurar que todas las características contribuyan equitativamente al modelo.
Conclusión
La preparación adecuada de los datos es una piedra angular de los proyectos exitosos de aprendizaje automático. Al dividir meticulosamente tus datos y aplicar un escalado de características adecuado, estableces las bases para construir modelos que son tanto precisos como confiables. A medida que continúas explorando el aprendizaje automático, estas prácticas fundamentales te servirán bien para enfrentar desafíos más complejos.
Estate atento a nuestro próximo artículo, donde profundizaremos en técnicas de preprocesamiento y otros aspectos críticos para construir modelos de aprendizaje automático robustos.