Feature Engineering
Explora la ingeniería de características para mejorar el rendimiento del modelo. Aprende técnicas como el escalado y el aumento de datos para optimizar Ultralytics YOLO26 y obtener una mayor precisión.
La ingeniería de características es el proceso de transformar datos sin procesar en entradas significativas que mejoran el rendimiento de los modelos de aprendizaje automático. Implica aprovechar el conocimiento del dominio para seleccionar, modificar o crear nuevas variables —conocidas como características— que ayudan a los algoritmos a comprender mejor los patrones de los datos. Aunque las arquitecturas modernas de aprendizaje profundo, como las redes neuronales convolucionales (CNNs), son capaces de aprender características automáticamente, la ingeniería de características explícita sigue siendo un paso fundamental en muchos flujos de trabajo, especialmente al trabajar con datos estructurados o al intentar optimizar la eficiencia de los modelos en dispositivos periféricos. Al perfeccionar los datos de entrada, los desarrolladores suelen conseguir una mayor precisión con modelos más sencillos, reduciendo la necesidad de disponer de enormes recursos computacionales.
El papel de la ingeniería de características en la IA#
En el contexto de la inteligencia artificial (AI), los datos sin procesar rara vez están listos para procesarse de inmediato. Puede ser necesario cambiar el tamaño de las imágenes, tokenizar el texto y, a menudo, los datos tabulares contienen valores ausentes o columnas irrelevantes. La ingeniería de características tiende un puente entre la información sin procesar y las representaciones matemáticas que necesitan los algoritmos. Una ingeniería eficaz puede poner de relieve relaciones críticas que, de otro modo, un modelo podría pasar por alto, como combinar «distancia» y «tiempo» para crear una característica de «velocidad». Este proceso está estrechamente relacionado con el preprocesamiento de datos, pero mientras que el preprocesamiento se centra en limpiar y dar formato, la ingeniería de características consiste en mejorar los datos de forma creativa para aumentar la capacidad predictiva.
En las tareas de visión artificial, la ingeniería de características ha evolucionado considerablemente. Los métodos tradicionales consistían en crear manualmente descriptores como la transformación de características invariante a la escala (SIFT) para identificar bordes y esquinas. Hoy en día, los modelos de aprendizaje profundo, como YOLO26, realizan la extracción automatizada de características dentro de sus capas ocultas. Sin embargo, la ingeniería sigue desempeñando un papel fundamental en la preparación de conjuntos de datos, por ejemplo, al generar datos sintéticos o aplicar técnicas de aumento de datos, como mosaicos y mezclas, para exponer a los modelos a variaciones de características más robustas durante el entrenamiento.
Técnicas y aplicaciones habituales#
La ingeniería de características abarca una amplia variedad de estrategias adaptadas al problema específico y al tipo de datos.
- Reducción de dimensionalidad: Las técnicas como el análisis de componentes principales (PCA) reducen el número de variables conservando la información esencial, lo que evita el sobreajuste en conjuntos de datos de alta dimensionalidad.
- Codificación de variables categóricas: Normalmente, los algoritmos necesitan entradas numéricas. Métodos como la codificación one-hot transforman las etiquetas categóricas (p. ej., «Rojo», «Azul») en vectores binarios que los modelos pueden procesar.
- Normalización y escalado: Escalar las características a un intervalo estándar garantiza que las variables con magnitudes mayores (como los precios de las viviendas) no dominen a las que tienen intervalos menores (como el número de habitaciones), algo fundamental para la optimización basada en gradiente en las redes neuronales.
- Agrupación en intervalos y discretización: Agrupar valores continuos en intervalos (p. ej., grupos de edad) puede ayudar a los modelos a gestionar los valores atípicos de forma más eficaz y a capturar relaciones no lineales.
Ejemplos del mundo real#
La ingeniería de características se aplica en diversos sectores para resolver problemas complejos.
-
Mantenimiento predictivo en la fabricación: En la fabricación inteligente, los sensores recopilan datos sin procesar de vibración y temperatura de la maquinaria. Los ingenieros pueden crear características que representen la «tasa de cambio» de la temperatura o la «media móvil» de la intensidad de la vibración. Estas características diseñadas permiten a los modelos de detección de anomalías predecir el fallo de los equipos con varios días de antelación, en lugar de limitarse a reaccionar ante las lecturas actuales de los sensores.
-
Evaluación del riesgo crediticio: Las entidades financieras utilizan la ingeniería de características para evaluar la elegibilidad para un préstamo. En lugar de fijarse únicamente en una cifra de «ingresos» sin procesar, pueden crear una «ratio deuda-ingresos» o un «porcentaje de utilización del crédito». Estas características derivadas ofrecen una visión más matizada de la salud financiera del prestatario y permiten una clasificación del riesgo más precisa.
Ejemplo de código: aumento de características personalizado#
En visión artificial, podemos «diseñar» características aumentando las imágenes para simular distintas condiciones ambientales. Esto ayuda a que los modelos, como YOLO26, generalicen mejor. El siguiente ejemplo muestra cómo aplicar una transformación sencilla a escala de grises mediante las herramientas ultralytics, lo que obliga al modelo a aprender características estructurales en lugar de depender únicamente del color.
import cv2
from ultralytics.data.augment import Albumentations
# Load an example image using OpenCV
img = cv2.imread("path/to/image.jpg")
# Define a transformation pipeline to engineer new visual features
# Here, we convert images to grayscale with a 50% probability
transform = Albumentations(p=1.0)
transform.transform = A.Compose([A.ToGray(p=0.5)])
# Apply the transformation to create a new input variation
augmented_img = transform(img)
# This process helps models focus on edges and shapes, improving robustnessDiferencias con términos relacionados#
Es útil distinguir la ingeniería de características de conceptos similares para evitar confusiones en los debates sobre los flujos de trabajo.
- Ingeniería de características frente a extracción de características: Aunque a menudo se utilizan indistintamente, existe una diferencia sutil. La ingeniería de características implica un proceso manual y creativo de construcción de nuevas entradas basadas en el conocimiento del dominio. En cambio, la extracción de características suele referirse a métodos automatizados o proyecciones matemáticas (como PCA) que condensan datos de alta dimensionalidad en una representación densa. En el aprendizaje profundo (DL), las capas de las redes neuronales convolucionales (CNNs) realizan una extracción automatizada de características mediante el aprendizaje de filtros para bordes y texturas.
- Ingeniería de características frente a embeddings: En el procesamiento del lenguaje natural (NLP) moderno, la creación manual de características (como contar la frecuencia de las palabras) ha sido sustituida en gran medida por los embeddings. Los embeddings son representaciones vectoriales densas que aprende el propio modelo para captar el significado semántico. Aunque los embeddings son un tipo de característica, se aprenden mediante procesos de aprendizaje automático automatizado (AutoML) en lugar de «diseñarse» explícitamente de forma manual.
Al dominar la ingeniería de características, los desarrolladores pueden crear modelos que no solo sean más precisos, sino también más eficientes, ya que necesitan menos potencia computacional para alcanzar un alto rendimiento. Herramientas como la plataforma Ultralytics facilitan este proceso al ofrecer interfaces intuitivas para gestionar conjuntos de datos y entrenar modelos, lo que permite iterar rápidamente sobre las estrategias de características.









