DEV Community

Kybumo
Kybumo

Posted on • Originally published at innovacion-tech.es

Tutorial Completo: Cómo Entrenar un Modelo de ML desde Cero

Tutorial Completo: Cómo Entrenar un Modelo de ML desde Cero

## Puntos clave (TL;DR)


  - Entrenar un modelo de machine learning requiere seguir al menos **7 etapas** bien definidas.

  - La calidad del dato es responsable de hasta el **80 % del rendimiento final** del modelo.

  - Python es el lenguaje utilizado por mas del **75 % de los profesionales de ML** segun encuestas del sector.

  - Un modelo mal validado puede tener un error en produccion **3 veces mayor** que el medido en entrenamiento.

  - Este tutorial cubre desde la definicion del problema hasta el despliegue, con codigo real incluido.





## Que es entrenar un modelo de machine learning
Enter fullscreen mode Exit fullscreen mode

Foto: Joshua Reddekopp en Unsplash

**Entrenar un modelo de machine learning** consiste en ajustar los parametros internos de un algoritmo a partir de datos etiquetados o no etiquetados, de modo que el modelo aprenda a generalizar patrones y realizar predicciones sobre datos nuevos. Si quieres saber *como crear un modelo ML desde cero*, este tutorial te guia en cada paso, con codigo practico y criterios de decision reales.

### Definicion formal del aprendizaje automatico

El [**aprendizaje automatico**](https://es.wikipedia.org/wiki/Aprendizaje_autom%C3%A1tico) es una rama de la inteligencia artificial que permite a los sistemas aprender de los datos sin ser programados explicitamente para cada tarea. El modelo mejora su rendimiento a medida que se expone a mas ejemplos.

En la practica, entrenar un modelo implica minimizar una **funcion de perdida**: una metrica que cuantifica cuanto se equivoca el modelo respecto a las etiquetas reales.

### Por que importa hacerlo bien desde el principio

Un error comun es saltar directamente al codigo sin entender el problema de negocio. Los expertos coinciden en que el **60 % de los proyectos de ML que fracasan** lo hacen por una mala definicion del objetivo, no por limitaciones tecnicas.

Si te interesa ver como estas tecnicas se aplican en contextos reales, puedes consultar nuestra [guia completa sobre machine learning en aplicaciones empresariales](https://innovacion-tech.es/como-funciona-el-machine-learning-en-aplicaciones-empresariales-guia-completa-2024/), donde analizamos casos de uso con impacto medible.




## Paso 1 - Definir el problema y elegir el tipo de modelo
Enter fullscreen mode Exit fullscreen mode

Foto: Deng Xiang en Unsplash

Antes de escribir una sola linea de codigo para **entrenar un modelo de machine learning**, debes responder tres preguntas clave: que quieres predecir, que datos tienes disponibles y cual es el criterio de exito.

### Tipos de aprendizaje: supervisado, no supervisado y por refuerzo

El **aprendizaje supervisado** es el mas comun: el modelo aprende a partir de pares entrada-salida etiquetados. Se usa en clasificacion (spam o no spam) y regresion (prediccion de precios).

El **aprendizaje no supervisado** trabaja sin etiquetas y busca estructura en los datos, como agrupaciones o anomalias. El **aprendizaje por refuerzo** entrena un agente mediante recompensas y penalizaciones en un entorno.

### Tabla comparativa: tipos de problemas de ML




      Tipo de problema
      Ejemplo de tarea
      Algoritmo tipico
      Metrica principal




      Clasificacion binaria
      Deteccion de fraude
      Regresion logistica, XGBoost
      AUC-ROC, F1-score


      Clasificacion multiclase
      Reconocimiento de imagenes
      Red neuronal convolucional
      Accuracy, macro-F1


      Regresion
      Prediccion de ventas
      Random Forest, Gradient Boosting
      RMSE, MAE


      Clustering
      Segmentacion de clientes
      K-Means, DBSCAN
      Silhouette score


      Deteccion de anomalias
      Control de calidad industrial
      Isolation Forest, Autoencoder
      Precision, Recall






## Paso 2 - Recopilar y preparar los datos para entrenar el modelo
Enter fullscreen mode Exit fullscreen mode

Foto: Florian Olivo en Unsplash

Los datos son la materia prima del machine learning. La tendencia del sector indica que los equipos de datos dedican entre el **60 % y el 80 % de su tiempo** a tareas de preparacion y limpieza, no al modelado en si.

### Fuentes de datos y formatos habituales

Los datos pueden provenir de bases de datos relacionales (SQL), APIs externas, archivos CSV o JSON, o datasets publicos como los disponibles en [repositorios de benchmarking de ML](https://es.wikipedia.org/wiki/Aprendizaje_autom%C3%A1tico#Conjuntos_de_datos_de_prueba). En la practica, casi nunca estan listos para usar directamente.

### Limpieza y transformacion: los pasos imprescindibles

La **limpieza de datos** consiste en eliminar o imputar valores nulos, corregir tipos de variables, eliminar duplicados y tratar outliers. La **transformacion** incluye la normalizacion, la codificacion de variables categoricas y la ingenieria de caracteristicas.

Un error comun en este paso es aplicar la normalizacion antes de dividir el dataset, lo que produce *data leakage* y metricas artificialmente buenas. Siempre ajusta el scaler solo con los datos de entrenamiento.




## Paso 3 - Dividir el dataset antes de entrenar modelo machine learning

La division correcta del dataset es una de las decisiones mas criticas al **crear un modelo ML**. Si la division es incorrecta, las metricas no reflejan el rendimiento real en produccion.

### La regla 70-15-15 y sus variantes

La practica mas extendida es dividir los datos en **3 subconjuntos**: entrenamiento (70 %), validacion (15 %) y test (15 %). Para datasets pequenos (menos de **10 000 muestras**), se recomienda usar validacion cruzada de **5 o 10 folds** en lugar de un split fijo.

### Codigo Python: division del dataset con scikit-learn
Enter fullscreen mode Exit fullscreen mode

from sklearn.model_selection import train_test_split
import pandas as pd

Cargar datos

df = pd.read_csv("datos.csv")
X = df.drop("target", axis=1)
y = df["target"]

Division train / test (80 % / 20 %)

X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y
)

Division adicional para validacion (del 80 %, extraemos 15 %)

X_train, X_val, y_train, y_val = train_test_split(
X_train, y_train, test_size=0.1875, random_state=42, stratify=y_train
)

print(f"Entrenamiento: {X_train.shape[0]} muestras")
print(f"Validacion: {X_val.shape[0]} muestras")
print(f"Test: {X_test.shape[0]} muestras")

El parametro `stratify=y` garantiza que la proporcion de clases se mantenga en cada subset, lo que es especialmente importante en datasets desbalanceados.




## Paso 4 - Seleccionar y configurar el algoritmo de machine learning

No existe un unico algoritmo optimo: la eleccion depende del tipo de problema, el volumen de datos y los requisitos de interpretabilidad. Esta premisa se conoce en el campo como el teorema *No Free Lunch*.

### Algoritmos recomendados segun el caso de uso


  - **Regresion logistica:** rapido, interpretable, excelente linea base para clasificacion binaria.

  - **Gradient Boosting (XGBoost, LightGBM):** muy potente en datos tabulares; gana la mayoria de competiciones de Kaggle con datos estructurados.

  - **Random Forest:** robusto frente a outliers, facil de ajustar, buen rendimiento con menos hiperparametros.

  - **Redes neuronales (MLP, CNN, LSTM):** necesarias para texto, imagen o series temporales; requieren mas de **50 000 muestras** para superar a los algoritmos clasicos en datos tabulares.

  - **K-Means:** estandar para clustering cuando el numero de grupos es conocido.



### Hiperparametros: que ajustar primero

Los **hiperparametros** son configuraciones externas al modelo que no se aprenden durante el entrenamiento. Para Random Forest, los mas impactantes son `n_estimators` (numero de arboles) y `max_depth`. Para redes neuronales, la **tasa de aprendizaje** (*learning rate*) es el hiperparametro con mayor efecto sobre la convergencia.

En nuestra experiencia, realizar una busqueda con `RandomizedSearchCV` sobre **20-50 combinaciones** ofrece resultados equivalentes a una busqueda exhaustiva en una fraccion del tiempo.




## Paso 5 - Entrenar modelo machine learning y monitorizar el proceso

El entrenamiento es el proceso en el que el algoritmo ajusta sus parametros internos iterando sobre los datos de entrenamiento. La clave aqui es *observar*, no solo ejecutar.

### Codigo Python: entrenamiento con scikit-learn
Enter fullscreen mode Exit fullscreen mode

from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report

Definir el modelo

modelo = RandomForestClassifier(
n_estimators=200,
max_depth=10,
random_state=42,
n_jobs=-1
)

Entrenar el modelo de machine learning

modelo.fit(X_train, y_train)

Evaluar en validacion

y_pred_val = modelo.predict(X_val)
print(classification_report(y_val, y_pred_val))

### Senales de alerta durante el entrenamiento


  - **Overfitting (sobreajuste):** la metrica en entrenamiento es alta pero en validacion cae mas de **10 puntos porcentuales**. Solucion: reducir complejidad, aumentar regularizacion o conseguir mas datos.

  - **Underfitting (subajuste):** el modelo no aprende ni siquiera el conjunto de entrenamiento. Solucion: aumentar la capacidad del modelo o mejorar las features.

  - **Convergencia lenta:** en redes neuronales, puede indicar que el learning rate es demasiado bajo o que los datos no estan normalizados.





## Paso 6 - Evaluar y optimizar el modelo entrenado

La evaluacion rigurosa distingue un modelo de produccion de uno experimental. Solo tras validar en el conjunto de test —al que el modelo no ha tenido acceso en ningun momento— puedes confiar en las metricas reportadas.

### Metricas clave segun el tipo de problema


  - **Clasificacion:** Accuracy, Precision, Recall, F1-score, AUC-ROC. En datasets desbalanceados, la *Accuracy* puede ser enganosa; usa siempre F1 o AUC.

  - **Regresion:** MAE (error medio absoluto), RMSE (raiz del error cuadratico medio), R2. El RMSE penaliza mas los errores grandes.

  - **Clustering:** Silhouette score, Davies-Bouldin index.



### Tecnicas de optimizacion avanzadas

Mas alla del ajuste de hiperparametros, tecnicas como el **ensamblado de modelos** (stacking, bagging, boosting) permiten reducir el error entre un **5 % y un 15 %** adicional. Para flujos de trabajo mas avanzados, puedes profundizar en el [tutorial para entrenar un modelo de IA personalizado paso a paso](https://innovacion-tech.es/tutorial-entrenar-un-modelo-de-ia-personalizado-paso-a-paso/), donde abordamos pipelines de produccion con MLflow y gestion de versiones de modelos.




## Paso 7 - Desplegar y mantener el modelo en produccion

Desplegar un modelo de machine learning es tan importante como entrenarlo. Un modelo no genera valor hasta que esta integrado en un sistema real que lo usa para tomar decisiones.

### Formatos de exportacion y herramientas de despliegue

Las opciones mas usadas para **serializar modelos** son:


  - **Pickle / Joblib:** estandar para modelos scikit-learn; rapido pero limitado a Python.

  - **ONNX:** formato interoperable que permite ejecutar el modelo en cualquier lenguaje.

  - **TensorFlow SavedModel / PyTorch TorchScript:** para modelos de deep learning.


Para el despliegue, las opciones mas populares son **FastAPI + Docker** para APIs REST, o servicios gestionados como AWS SageMaker, Google Vertex AI o Azure ML, que incluyen monitoreo automatico de *data drift*.

### Monitorizacion continua: el ciclo no termina

Un modelo entrenado degrada su rendimiento con el tiempo debido al **concept drift**: los patrones en los datos de produccion cambian respecto a los de entrenamiento. Los expertos recomiendan reentrenar el modelo cuando la metrica principal cae mas de un **5 % respecto al baseline** inicial. Herramientas como MLflow facilitan el seguimiento de experimentos y el registro de versiones del modelo de forma sistematica.




## Buenas practicas al entrenar modelos de machine learning

Resumimos las practicas que marcan la diferencia entre un proyecto de ML exitoso y uno que nunca llega a produccion:


  - Define el criterio de exito antes de empezar a modelar.

  - Establece una **linea base simple** (por ejemplo, un modelo de regresion logistica) antes de probar arquitecturas complejas.

  - Versiona los datos y el codigo con herramientas como **DVC o Git**.

  - Documenta cada experimento: hiperparametros, metricas y notas de contexto.

  - Valida el modelo con datos representativos del entorno real de produccion.

  - Incorpora tests automatizados para detectar regresiones cuando reentrenas el modelo.

  - Monitoriza el rendimiento en produccion desde el primer dia de despliegue.





## Conclusion: empieza a entrenar tu modelo de machine learning hoy

Seguir un proceso estructurado para **entrenar un modelo de machine learning** no es opcional: es la diferencia entre un prototipo que funciona en un notebook y un sistema robusto que genera valor en produccion. En este tutorial has visto los **7 pasos esenciales**: definicion del problema, preparacion de datos, division del dataset, seleccion del algoritmo, entrenamiento, evaluacion y despliegue.

Recuerda que **entrenar un modelo ML desde cero** es un proceso iterativo. No esperes resultados perfectos en la primera iteracion; en la practica, los mejores modelos son el resultado de docenas de experimentos documentados y ajustados con criterio.

El siguiente nivel es automatizar este flujo completo con pipelines de MLOps. Si quieres dar ese paso, explora nuestra seccion de recursos sobre [machine learning en aplicaciones empresariales](https://innovacion-tech.es/machine-learning-aplicaciones-empresariales/) para ver como estas tecnicas escalan en entornos reales.
Enter fullscreen mode Exit fullscreen mode

Top comments (0)