Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

SQL para ciencia de datos, Unidad 6 — Funciones avanzadas para análisis, 6.3 — Funciones condicionales ·

Feature engineering básico

Feature engineering básico

Introducción

En la ciencia de datos, feature engineering (ingeniería de características) es una etapa crítica que determina la calidad y precisión de los modelos predictivos. Las funciones condicionales son herramientas poderosas para transformar y crear nuevas variables a partir de los datos existentes. A través de estas funciones, podemos extraer información relevante, simplificar problemas complejos y mejorar el rendimiento de nuestros modelos.

Explicación principal con ejemplos

Las funciones condicionales permiten definir reglas que se aplican a los datos en función de diferentes condiciones. En SQL, esto se realiza principalmente con el uso del CASE statement. Veamos un ejemplo simple:

SELECT 
    id,
    valor,
    CASE 
        WHEN valor < 0 THEN 'Negativo'
        WHEN valor = 0 THEN 'Cero'
        ELSE 'Positivo'
    END AS categoria_valor
FROM tabla_datos;

En este ejemplo, creamos una nueva columna categoria_valor que clasifica el valor en "Negativo", "Cero" o "Positivo" basándose en su signo. Esta transformación puede ser útil para simplificar la lógica de negocio o agrupar datos en categorías más significativas.

Ejemplo avanzado: Creación de características temporales

Imagina que tienes una tabla con datos de clientes y sus compras, donde cada fila representa una compra realizada por un cliente. Queremos crear una característica para indicar si el cliente ha realizado al menos una compra en los últimos 30 días.

WITH recientes_compradores AS (
    SELECT 
        cliente_id,
        MAX(fecha_compra) AS ultima_compra
    FROM compras
    GROUP BY cliente_id
)
SELECT 
    c.cliente_id,
    c.fecha_compra,
    CASE 
        WHEN (c.fecha_compra >= r.ultima_compra - INTERVAL '30 days') THEN 1
        ELSE 0
    END AS reciente_comprador
FROM compras c
JOIN recientes_compradores r ON c.cliente_id = r.cliente_id;

En este ejemplo, utilizamos una subconsulta para obtener el máximo de las fechas de compra por cliente y luego aplicamos un CASE statement en la consulta principal para identificar si la fecha de la compra actual está dentro del último mes.

Errores típicos / trampas

  1. Olvido de condición: Asegúrate de cubrir todos los posibles casos en tus WHEN statements. No olvides agregar un ELSE o una combinación de condiciones que abarquen todos los escenarios.
  2. Errores con el uso de operadores lógicos: SQL puede tener comportamientos inesperados con la lógica booleana, especialmente si no utilizas paréntesis para agrupar expresiones. Por ejemplo, CASE WHEN valor = 0 OR valor &gt; 1 THEN &#039;Outro&#039; END podría dar resultados inesperados.
  3. Desconsideración de tipos de datos: Asegúrate de que los valores en las condiciones y las columnas resultantes sean del mismo tipo para evitar errores de sintaxis o resultados incorrectos.

Checklist accionable

  • Verifica que todas las combinaciones posibles estén cubiertas por tus WHEN statements.
  • Utiliza paréntesis para agrupar las condiciones en expresiones complejas.
  • Asegúrate de que los valores utilizados en las condiciones sean del mismo tipo que las columnas en tu consulta.
  • Prueba tus consultas con datos conocidos para asegurarte de que funcionan como esperas.

Cierre: Siguientes pasos

Ahora que has aprendido cómo utilizar funciones condicionales en SQL para crear características, es importante seguir mejorando tus habilidades y explorar otras técnicas avanzadas. Aquí te presentamos algunas sugerencias:

  • Explora el uso de múltiples columnas en las condiciones: SQL permite usar valores de diferentes columnas en las condiciones de un CASE statement.
  • Aprende a manejar valores NULL: Asegúrate de cómo se comporta el CASE statement con valores nulos y considera si necesitas manejarlos de manera especial.
  • Practica con datasets más grandes: Trabaja en proyectos reales o usa conjuntos de datos más extensos para mejorar tu habilidad en la creación de características.

¡Eso es todo por ahora! ¿Qué te parece si pruebas a aplicar estas técnicas a tus propios proyectos y comparte tus resultados?

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).