DatiLab - Laboratorio de datos

Tutorial: Creación de Datasets Sintéticos para Proyectos de IA

Publicado el 23 de octubre de 2026

#Inteligencia Artificial,Datasets Sintéticos,Machine Learning,Python,Data Science,Entrenamiento de Modelos,Programación IA
Tutorial: Creación de Datasets Sintéticos para Proyectos de IA

Tutorial: Creación de Datasets Sintéticos para Proyectos de IA

En el ecosistema tecnológico latinoamericano, y especialmente en Colombia, el desarrollo de soluciones basadas en Inteligencia Artificial enfrenta un reto común: la escasez de datos de calidad. Empresas como Rappi, Bancolombia y startups del hub tecnológico de Medellín han tenido que buscar alternativas creativas para entrenar sus modelos cuando los datos reales son insuficientes, costosos o simplemente no existen. Aquí es donde los datasets sintéticos se convierten en una herramienta fundamental.

En este tutorial completo aprenderás qué son los datasets sintéticos, por qué son esenciales para el desarrollo de IA en Colombia, y cómo crearlos paso a paso utilizando Python y las bibliotecas más populares del ecosistema de Data Science.

¿Qué son los Datasets Sintéticos?

Un dataset sintético es un conjunto de datos generado artificialmente mediante algoritmos, modelos estadísticos o redes neuronales, en lugar de ser recopilado directamente del mundo real. Estos datos imitan las propiedades estadísticas y estructurales de datos reales, pero no corresponden a ningún individuo, transacción o evento específico.

La generación de datos sintéticos ha ganado enorme popularidad gracias a tres factores clave:

  • Privacidad de datos: En Colombia, la Ley 1581 de 2012 (Ley de Habeas Data) y sus decretos reglamentarios imponen restricciones importantes sobre el uso de datos personales. Los datasets sintéticos permiten entrenar modelos sin comprometer información sensible.
  • Escasez de datos etiquetados: Etiquetar datos manualmente es costoso y lento. Generar datos sintéticos etiquetados automáticamente acelera el proceso.
  • Desbalance de clases: En problemas como detección de fraude financiero, los eventos positivos (fraudes) son raros. Los datos sintéticos permiten balancear las clases de entrenamiento.

Herramientas Principales para Generar Datos Sintéticos

Antes de escribir código, conozcamos las bibliotecas más utilizadas por la comunidad de Data Science en Colombia y el mundo:

1. Faker

La biblioteca Faker de Python es perfecta para generar datos tabulares ficticios como nombres, direcciones, correos electrónicos y números de teléfono. Incluso tiene soporte para localización en español colombiano.

2. SDV (Synthetic Data Vault)

SDV es una de las bibliotecas más completas para generar datos sintéticos tabulares, relacionales y de series de tiempo. Utiliza modelos probabilísticos y redes neuronales para aprender la distribución de los datos reales y generar nuevas muestras.

3. CTGAN y TVAE

Estos modelos basados en Generative Adversarial Networks (GANs) y Variational Autoencoders (VAEs) son especialmente útiles para datos tabulares complejos con variables mixtas (numéricas y categóricas).

4. Scikit-learn

Para casos más simples, scikit-learn ofrece funciones como make_classification, make_regression y make_blobs que generan datasets sintéticos para tareas específicas de Machine Learning.

Tutorial Paso a Paso: Creación de un Dataset Sintético

Paso 1: Instalación de Dependencias

Abre tu terminal o entorno de desarrollo (recomendamos Google Colab, muy popular entre desarrolladores colombianos por su acceso gratuito a GPUs) e instala las bibliotecas necesarias:

pip install faker sdv ctgan pandas numpy scikit-learn matplotlib seaborn

Paso 2: Generación de Datos Tabulares con Faker

Comencemos con un caso práctico: generar un dataset de clientes de una fintech colombiana.

import pandas as pd
from faker import Faker
import random
import numpy as np

fake = Faker('es_CO')  # Localización colombiana
Faker.seed(42)
random.seed(42)
np.random.seed(42)

def generar_cliente():
    edad = random.randint(18, 70)
    ingreso_mensual = round(random.gauss(3500000, 1500000), -3)
    ingreso_mensual = max(1160000, ingreso_mensual)  # Salario mínimo Colombia 2024
    return {
        'nombre': fake.name(),
        'cedula': fake.numerify('##########'),
        'ciudad': random.choice(['Bogotá', 'Medellín', 'Cali', 'Barranquilla', 'Bucaramanga', 'Pereira']),
        'edad': edad,
        'ingreso_mensual': ingreso_mensual,
        'tiene_credito': random.choice([True, False]),
        'score_crediticio': random.randint(300, 850),
        'meses_cliente': random.randint(1, 120)
    }

df_clientes = pd.DataFrame([generar_cliente() for _ in range(10000)])
print(df_clientes.head())
print(f'Shape: {df_clientes.shape}')

Este código genera 10,000 registros de clientes ficticios con características realistas para el mercado colombiano, incluyendo ciudades principales y rangos de ingresos acordes al contexto local.

Paso 3: Generación de Datos Sintéticos con SDV

Cuando ya tienes un dataset real pequeño y quieres amplificarlo manteniendo sus distribuciones estadísticas, SDV es tu mejor aliado:

from sdv.single_table import GaussianCopulaSynthesizer
from sdv.metadata import SingleTableMetadata

# Definir metadata del dataset
metadata = SingleTableMetadata()
metadata.detect_from_dataframe(df_clientes)

# Configurar y entrenar el sintetizador
sintetizador = GaussianCopulaSynthesizer(metadata)
sintetizador.fit(df_clientes)

# Generar nuevos datos sintéticos
df_sintetico = sintetizador.sample(num_rows=50000)
print(df_sintetico.describe())

Paso 4: Generación de Datos para Clasificación con Scikit-learn

Para proyectos de Machine Learning donde necesitas datos etiquetados para entrenar clasificadores:

from sklearn.datasets import make_classification
import matplotlib.pyplot as plt

# Crear dataset para detección de fraude
X, y = make_classification(
    n_samples=10000,
    n_features=20,
    n_informative=10,
    n_redundant=5,
    n_classes=2,
    weights=[0.97, 0.03],  # 3% de fraudes (realista)
    random_state=42
)

df_fraude = pd.DataFrame(X, columns=[f'feature_{i}' for i in range(20)])
df_fraude['es_fraude'] = y

print(f'Distribución de clases:')
print(df_fraude['es_fraude'].value_counts(normalize=True))

Paso 5: Balanceo de Clases con SMOTE

Una técnica muy utilizada para generar datos sintéticos de la clase minoritaria es SMOTE (Synthetic Minority Over-sampling Technique):

from imblearn.over_sampling import SMOTE

smote = SMOTE(random_state=42, sampling_strategy=0.3)
X_balanced, y_balanced = smote.fit_resample(X, y)

print(f'Antes del balanceo: {pd.Series(y).value_counts().to_dict()}')
print(f'Después del balanceo: {pd.Series(y_balanced).value_counts().to_dict()}')

Paso 6: Validación de la Calidad del Dataset Sintético

Generar datos no es suficiente; debes validar que sean estadísticamente similares a los datos reales:

from scipy import stats
import seaborn as sns

# Comparar distribuciones
def validar_calidad(df_real, df_sintetico, columna):
    stat, p_valor = stats.ks_2samp(df_real[columna], df_sintetico[columna])
    print(f'Columna: {columna}')
    print(f'Estadístico KS: {stat:.4f}, p-valor: {p_valor:.4f}')
    if p_valor > 0.05:
        print('✅ Las distribuciones son estadísticamente similares')
    else:
        print('⚠️ Las distribuciones difieren significativamente')
    print()

validar_calidad(df_clientes, df_sintetico, 'edad')
validar_calidad(df_clientes, df_sintetico, 'ingreso_mensual')

Casos de Uso en el Contexto Colombiano

Los datasets sintéticos tienen aplicaciones concretas y valiosas en el mercado tecnológico colombiano:

  • Sector financiero: Bancos como Bancolombia, Davivienda y Nequi pueden usar datos sintéticos para entrenar modelos de scoring crediticio sin exponer información de sus clientes reales.
  • Salud digital: Startups de HealthTech pueden generar historiales clínicos sintéticos para desarrollar sistemas de diagnóstico asistido por IA, cumpliendo con la normativa de protección de datos en salud.
  • Comercio electrónico: Plataformas como Mercado Libre Colombia pueden simular patrones de comportamiento de usuarios para mejorar sus sistemas de recomendación.
  • Sector público: Entidades como el DANE o el MinTIC pueden generar datos sintéticos derivados de censos para permitir análisis sin comprometer la privacidad ciudadana.

Consideraciones Éticas y Legales en Colombia

Al trabajar con datos sintéticos en Colombia, ten en cuenta:

  • La Ley 1581 de 2012 y el Decreto 1377 de 2013 regulan el tratamiento de datos personales. Los datos sintéticos bien generados no constituyen datos personales, pero debes documentar tu metodología.
  • La Superintendencia de Industria y Comercio (SIC) es la autoridad de protección de datos en Colombia. Mantén registros de cómo generaste tus datasets sintéticos.
  • Evita que los datos sintéticos puedan ser utilizados para re-identificar individuos reales, especialmente en datasets pequeños o con variables muy específicas.

Preguntas Frecuentes (FAQ)

¿Los datos sintéticos son tan buenos como los datos reales para entrenar modelos de IA?

Depende del caso de uso y la calidad del proceso de síntesis. Para muchas aplicaciones, los datos sintéticos de alta calidad pueden igualar o incluso superar a los datos reales, especialmente cuando los datos reales tienen sesgos o están desbalanceados. Sin embargo, siempre es recomendable validar el modelo final con datos reales cuando sea posible.

¿Cuánto tiempo toma generar un dataset sintético de calidad?

Con herramientas como Faker, puedes generar millones de registros en minutos. Con SDV o CTGAN, el tiempo de entrenamiento del sintetizador puede variar de minutos a horas dependiendo del tamaño del dataset original y la complejidad de las relaciones entre variables.

¿Necesito datos reales para generar datos sintéticos?

No necesariamente. Puedes generar datos completamente desde cero usando distribuciones estadísticas conocidas o reglas de negocio. Sin embargo, si tienes aunque sea una pequeña muestra de datos reales, los modelos como SDV o CTGAN producirán datos sintéticos mucho más realistas.

¿Los datos sintéticos son aceptados en publicaciones académicas y competencias de Data Science?

Sí, cada vez más. Competencias como Kaggle aceptan datasets sintéticos, y muchas publicaciones académicas los utilizan para demostrar metodologías cuando los datos reales no pueden compartirse públicamente. En Colombia, universidades como los Andes, EAFIT y la Nacional están incorporando estas técnicas en sus programas de Ciencia de Datos.

¿Qué diferencia hay entre datos sintéticos y datos anonimizados?

Los datos anonimizados son datos reales a los que se les ha eliminado o modificado información identificable. Los datos sintéticos son completamente nuevos y generados algorítmicamente. Los datos sintéticos ofrecen mayor protección de privacidad porque no existe una correspondencia directa con individuos reales.

Conclusión

La creación de datasets sintéticos es una habilidad fundamental para cualquier desarrollador o científico de datos que trabaje en proyectos de Inteligencia Artificial en Colombia. Desde cumplir con la normativa de protección de datos hasta superar la escasez de información etiquetada, los datos sintéticos abren un mundo de posibilidades para el ecosistema tech colombiano que sigue creciendo a pasos acelerados.

En este tutorial hemos cubierto las herramientas principales (Faker, SDV, CTGAN, Scikit-learn), implementado ejemplos prácticos adaptados al contexto colombiano y explorado consideraciones éticas y legales relevantes. El siguiente paso es que pongas en práctica estos conocimientos en tu próximo proyecto de IA.

¿Ya has utilizado datasets sintéticos en algún proyecto? ¿Tienes preguntas sobre alguna de las técnicas presentadas? Déjanos tus comentarios y comparte este tutorial con tu comunidad de desarrolladores. Si estás en Bogotá, Medellín o cualquier otra ciudad de Colombia, recuerda que comunidades como Python Colombia, MedellinAI y Bogotá Data Science Meetup son excelentes espacios para seguir aprendiendo y conectar con otros profesionales del sector.

📩 Contacto

Hablemos de tu próximo proyecto

¿Listo para llevar tu negocio al siguiente nivel?. Completa el formulario y te contactaremos en unas horas.

Teléfono

+57 321 557 7073

Ubicación

Bogotá, Colombia

Envíanos un mensaje

Al enviar este formulario, aceptas nuestra política de privacidad.