Agregaciones por entidad: Feature engineering en SQL
Introducción
El feature engineering es una etapa crucial en la ciencia de datos, donde creamos características (features) a partir de los datos brutos para mejorar el rendimiento y precisión de nuestros modelos de machine learning. En este artículo, exploraremos cómo realizar agregaciones por entidad utilizando SQL como paso previo a Machine Learning.
Las agregaciones por entidad implican agrupar los datos según una variable específica y luego aplicar funciones de agregación (como COUNT, SUM, AVG) en otras columnas del conjunto de datos. Esta técnica es fundamental para crear características relevantes que pueden mejorar el rendimiento de nuestros modelos.
Explicación principal con ejemplos
Consideremos un dataset de pedidos en una tienda en línea:
CREATE TABLE pedidos (
id_pedido INT PRIMARY KEY,
fecha TIMESTAMP,
usuario_id VARCHAR(50),
producto_id VARCHAR(50),
cantidad INT,
precio DECIMAL(10, 2)
);
Vamos a crear algunas características relevantes por usuario y producto.
Ejemplo: Agregaciones por usuario
SELECT
usuario_id,
COUNT(*) AS num_pedidos,
SUM(cantidad) AS total_cantidad,
AVG(precio) AS precio_medio_pedido
FROM pedidos
GROUP BY usuario_id;
Este ejemplo nos proporciona las siguientes características:
- num\_pedidos: Cantidad de pedidos realizados por cada usuario.
- total\_cantidad: Total de productos comprados por cada usuario.
- precio\_medio\_pedido: Promedio del precio de los productos en los pedidos realizados por cada usuario.
Ejemplo: Agregaciones por producto
SELECT
producto_id,
COUNT(*) AS num_pedidos_producto,
SUM(cantidad) AS total_cantidad_producto,
AVG(precio) AS precio_medio_pedido_producto
FROM pedidos
GROUP BY producto_id;
Este ejemplo nos proporciona las siguientes características:
- num\_pedidos\_producto: Cantidad de veces que el producto fue comprado.
- total\_cantidad\_producto: Total de unidades vendidas del producto.
- precio\_medio\_pedido\_producto: Promedio del precio en los pedidos que contuvieron ese producto.
Errores típicos / trampas
- Omitir columnas relevantes en el
GROUP BY:
- Errores comunes: Olvidar agregar alguna columna a la lista de agrupación puede llevar a resultados inexactos o incluso error en la consulta.
- Solución: Siempre verifique que todas las columnas utilizadas en una función de agregación estén incluidas en
GROUP BY.
- Usar funciones de agregación incorrectamente:
- Errores comunes: A menudo, se confunden los usos adecuados de funciones como
SUM,AVGyCOUNT. - Solución: Familiarízase con las diferencias entre estas funciones. Por ejemplo,
COUNT(*)cuenta todos los registros, mientras queSUM(columna)suma valores numéricos.
- Olvidar ordenar la salida:
- Errores comunes: No ordenar los resultados puede llevar a interpretaciones erróneas de las características generadas.
- Solución: Asegúrese siempre de usar
ORDER BYsi necesita ordenar los resultados para una mejor comprensión.
Checklist accionable
- Verifique que todas las columnas utilizadas en funciones de agregación estén incluidas en
GROUP BY. - Asegurese de utilizar correctamente las funciones de agregación como
SUM,AVG, yCOUNT. - Ordenar los resultados con
ORDER BYpara una mejor comprensión. - Utilice subconsultas o CTEs (WITH) para consultas complejas que requieren múltiples pasos.
- Validar los datos agregados utilizando consultas simples como
SELECT DISTINCT ... FROM ...yWHERE.
Siguientes pasos
- Análisis de datos adicional: Explorar más características por usuario, producto o cualquier otra entidad relevante en su conjunto de datos.
- Modelado de Machine Learning: Utilizar las características generadas para entrenar modelos de machine learning y evaluar su rendimiento.
- Optimización del feature engineering: Continuar iterando sobre el proceso de feature engineering para mejorar la precisión de los modelos.
A través de esta técnica, podemos crear una base sólida de características relevantes que pueden mejorarse constantemente en función de las necesidades del proyecto.