Lección 0.2 — Cómo funciona el aprendizaje automático: sus piezas clave

Lección 0.2 — Cómo funciona el aprendizaje automático: sus piezas clave

Curso de inteligencia artificial desde cero
Bloque 0: Fundamentos de inteligencia artificial
Lección 0.2 · Lección 2 de 5 del bloque
Nivel: iniciación · Sin conocimientos previos

Para entender cómo funciona el aprendizaje automático, necesitamos conocer las piezas que permiten a un sistema aprender de ejemplos: los datos, el modelo, el objetivo de entrenamiento y la evaluación.

En la lección anterior vimos que aprender puede consistir en ajustar parámetros para reducir errores. Ahora vamos a conectar esa idea con el proceso completo.

Utilizaremos un ejemplo sencillo: estimar el tiempo de entrega de un pedido según la distancia. Al terminar, podrás identificar qué información recibe un modelo, qué aprende y cómo comprobar si sus resultados son útiles.

Antes del modelo: definir el problema

El primer paso de un proyecto de inteligencia artificial es concretar qué queremos resolver.

«Mejorar los repartos» es un propósito demasiado amplio. Una tarea más precisa sería:

Estimar los minutos que tardará una entrega utilizando la distancia disponible cuando se realiza el pedido.

Esta definición establece tres elementos:

  • Entrada: la distancia de la entrega.
  • Salida: una estimación del tiempo en minutos.
  • Momento de uso: cuando se realiza el pedido.

El momento importa porque solo podemos utilizar información disponible entonces. Si utilizamos datos que se conocen después de completar la entrega, estaremos resolviendo un problema distinto del que tendrá la aplicación real.

También debemos preguntarnos qué error sería aceptable. Equivocarse cinco minutos puede ser tolerable en un contexto e inaceptable en otro.

Un modelo solo puede evaluarse adecuadamente si sabemos para qué lo necesitamos.

1. Los datos: ejemplos de la tarea

Los datos contienen las observaciones que utilizaremos para desarrollar y evaluar el sistema.

En nuestro ejemplo, cada observación representa una entrega terminada:

Distancia en kilómetros Tiempo real en minutos
1 8
2 11
3 14
4 17

Estos datos son inventados y deliberadamente sencillos. Las entregas reales presentarían mucha más variación.

Características y variable objetivo

Una característica, también llamada atributo o feature, es una información que el modelo utiliza como entrada.

Aquí tenemos una característica: la distancia.

La variable objetivo es el resultado que queremos predecir. En este caso, los minutos que tarda la entrega.

Es habitual representar estos elementos así:

Símbolo Significado Ejemplo
X Conjunto de entradas Distancias de las entregas.
y Resultados conocidos Tiempos reales.
ŷ Resultados estimados Tiempos calculados por el modelo.

El símbolo ŷ se lee «y estimada». En el código utilizaremos nombres descriptivos para facilitar la comprensión.

Qué hace que unos datos sean útiles

No basta con acumular observaciones. Debemos revisar:

  • Calidad: ¿hay errores, duplicados o valores ausentes?
  • Representatividad: ¿aparecen las situaciones en las que se utilizará el modelo?
  • Disponibilidad: ¿conoceremos estas características cuando necesitemos predecir?
  • Coherencia: ¿las unidades y los criterios son los mismos en todos los registros?

Si entrenamos únicamente con entregas cortas, no podemos dar por hecho que el modelo funcionará bien en trayectos largos.

Tampoco conviene mezclar kilómetros y metros dentro de una misma columna sin convertir las unidades.

2. El modelo: una relación entre entradas y salidas

Un modelo es una representación que transforma entradas en resultados.

Para empezar, proponemos esta fórmula:

tiempo estimado = a × distancia + b

Tiene dos parámetros:

  • a: cuánto aumenta el tiempo estimado por cada kilómetro adicional.
  • b: el tiempo base que añade el modelo.

Si elegimos a = 3 y b = 5, para una distancia de dos kilómetros obtenemos:

tiempo estimado = 3 × 2 + 5 = 11 minutos

Esta fórmula es un modelo lineal sencillo de una variable.

Parámetros e hiperparámetros

Son conceptos diferentes:

Concepto Qué representa Ejemplo
Parámetro Valor que se ajusta durante el entrenamiento. a y b.
Hiperparámetro Configuración del modelo o del procedimiento de entrenamiento. La profundidad máxima permitida de un árbol de decisión.

Los hiperparámetros pueden elegirse manualmente o mediante búsquedas automatizadas. La diferencia es que no se ajustan del mismo modo que los parámetros dentro del entrenamiento que estamos considerando.

Un modelo es una simplificación

La distancia influye en el tiempo de entrega, pero también pueden influir el tráfico, el clima o el tiempo de preparación.

Un modelo que solo recibe la distancia no puede distinguir directamente entre un trayecto despejado y otro con atasco.

Además, que el parámetro b tenga un valor concreto no demuestra que hayamos descubierto el tiempo real de preparación. Los parámetros describen el ajuste del modelo; su interpretación depende de los datos y de las suposiciones utilizadas.

3. El objetivo: medir qué queremos mejorar

Para entrenar necesitamos una forma de comparar las predicciones con los resultados conocidos.

La función de pérdida asigna un valor al error del modelo. El entrenamiento intenta reducir esa pérdida.

Una opción es el error cuadrático medio, conocido como MSE por sus siglas en inglés:

  1. Calculamos la diferencia entre cada predicción y su resultado real.
  2. Elevamos cada diferencia al cuadrado.
  3. Calculamos la media.

Supongamos que tenemos:

Tiempo real Predicción Diferencia Diferencia al cuadrado
8 10 2 4
12 10 −2 4

El error cuadrático medio es:

MSE = (4 + 4) / 2 = 4

Elevar al cuadrado evita que las diferencias positivas y negativas se cancelen. También penaliza especialmente los errores grandes.

El objetivo matemático y el objetivo real

Reducir una pérdida no garantiza, por sí solo, resolver bien el problema del usuario.

Por ejemplo, podría ser más perjudicial prometer una entrega demasiado pronto que demasiado tarde. Una pérdida que trate ambos errores por igual no expresa esa diferencia.

La función de pérdida debe elegirse teniendo en cuenta qué errores queremos evitar.

Más adelante estudiaremos otras pérdidas, restricciones y objetivos.

4. El entrenamiento: ajustar los parámetros

Entrenar consiste en buscar parámetros que reduzcan la pérdida sobre los datos de entrenamiento.

En nuestro modelo queremos encontrar valores adecuados para a y b.

Un procedimiento elemental sería:

  1. Probar una pareja de valores.
  2. Calcular las predicciones.
  3. Medir su error.
  4. Repetir con otras parejas.
  5. Conservar la pareja con menor pérdida.

Este método funciona para un ejemplo pequeño. Probar todas las combinaciones deja de ser práctico cuando hay muchos parámetros.

En otros modelos utilizaremos procedimientos como el descenso del gradiente, que estudiaremos cuando hayamos introducido sus bases matemáticas.

Ejemplo completo en Python

El siguiente programa utiliza únicamente funciones básicas de Python.

No necesitas comprender todavía toda la sintaxis: el objetivo es reconocer las piezas del sistema.

# Cada pareja contiene:
# (distancia en kilómetros, tiempo en minutos)
datos_entrenamiento = [
    (1, 8),
    (2, 11),
    (3, 14),
    (4, 17),
]

# Estos ejemplos quedan reservados para evaluar.
datos_prueba = [
    (5, 21),
    (6, 22),
]


def predecir(distancia, a, b):
    return a * distancia + b


def calcular_mse(datos, a, b):
    errores_cuadrados = []

    for distancia, tiempo_real in datos:
        estimacion = predecir(distancia, a, b)
        error = estimacion - tiempo_real
        errores_cuadrados.append(error ** 2)

    return sum(errores_cuadrados) / len(datos)


mejor_a = None
mejor_b = None
menor_perdida = float("inf")

# Probamos valores enteros de 0 a 10.
for a in range(11):
    for b in range(11):
        perdida = calcular_mse(
            datos_entrenamiento, a, b
        )

        if perdida < menor_perdida:
            menor_perdida = perdida
            mejor_a = a
            mejor_b = b

print("Parámetros:", mejor_a, mejor_b)
print("MSE de entrenamiento:", menor_perdida)

errores_absolutos = []

for distancia, tiempo_real in datos_prueba:
    estimacion = predecir(
        distancia, mejor_a, mejor_b
    )

    error_absoluto = abs(estimacion - tiempo_real)
    errores_absolutos.append(error_absoluto)

    print(
        f"Distancia: {distancia} km | "
        f"Real: {tiempo_real} min | "
        f"Estimado: {estimacion} min"
    )

mae = sum(errores_absolutos) / len(datos_prueba)

print("MAE de prueba:", mae, "minutos")

Resultado esperado

Parámetros: 3 5
MSE de entrenamiento: 0.0
Distancia: 5 km | Real: 21 min | Estimado: 20 min
Distancia: 6 km | Real: 22 min | Estimado: 23 min
MAE de prueba: 1.0 minutos

Cómo interpretar el código

La función predecir() contiene el modelo.

La función calcular_mse() mide su pérdida. Utilizamos:

  • append() para añadir un elemento a una lista.
  • sum() para sumar sus elementos.
  • len() para contar cuántos hay.

Los dos bucles de entrenamiento prueban 121 parejas: once valores de a multiplicados por once valores de b.

El programa elige a = 3 y b = 5 porque esa pareja obtiene el menor error de entrenamiento entre las candidatas.

Después utiliza los parámetros elegidos sobre los datos de prueba. Estos datos no intervienen en la selección.

abs() calcula el valor absoluto: convierte una diferencia negativa en su magnitud positiva.

Las cadenas que empiezan por f permiten insertar valores entre llaves dentro del texto.

5. La evaluación: comprobar si funciona

La evaluación mide el comportamiento del modelo con datos y criterios adecuados para su uso.

En el ejemplo utilizamos el error absoluto medio, o MAE:

MAE = media de las diferencias absolutas

Las dos predicciones se desvían un minuto de sus valores reales. Por eso el MAE es de un minuto.

El MAE conserva la unidad de la variable objetivo, lo que facilita su interpretación. El MSE, en cambio, se expresa en la unidad al cuadrado.

Pérdida y métrica no son exactamente lo mismo

La pérdida guía el entrenamiento. Una métrica ayuda a evaluar el resultado.

Una misma medida puede desempeñar ambos papeles, pero no es obligatorio. En nuestro ejemplo entrenamos con MSE y evaluamos con MAE.

Ninguna métrica cuenta toda la historia: un promedio pequeño puede ocultar algunos errores muy grandes.

Entrenamiento, validación y prueba

En muchos proyectos distinguimos tres conjuntos:

Conjunto Uso
Entrenamiento Ajustar los parámetros.
Validación Comparar configuraciones y tomar decisiones durante el desarrollo.
Prueba Estimar el rendimiento final del sistema elegido.

Nuestro programa omite la validación para mantener el ejemplo pequeño: hemos fijado de antemano el modelo y la búsqueda de parámetros.

En un proyecto real, si consultamos repetidamente la prueba y modificamos el sistema según sus resultados, acabaremos adaptándonos indirectamente a ella.

Cómo separar los datos depende del problema

No siempre debemos repartir filas al azar:

  • Para predecir el futuro, suele ser necesario respetar el orden temporal.
  • Si hay varios registros de una misma persona, puede ser necesario mantenerlos en el mismo grupo.
  • Los duplicados o ejemplos casi idénticos pueden hacer que la evaluación parezca mejor de lo que realmente es.

La separación debe representar, en la medida de lo posible, la situación que encontrará el modelo al utilizarse.

Comparar con una solución sencilla

Antes de celebrar el resultado de un modelo, necesitamos una referencia o línea base.

En nuestro ejemplo, podríamos predecir siempre la media del tiempo de entrenamiento:

Media = (8 + 11 + 14 + 17) / 4 = 12,5 minutos

Sobre los dos ejemplos de prueba, esa solución obtiene:

MAE = (|12,5 − 21| + |12,5 − 22|) / 2
MAE = 9 minutos

El modelo obtiene un MAE de un minuto, frente a nueve de la referencia.

Es una mejora en este ejemplo, pero dos observaciones inventadas no permiten concluir que funcionará bien en una empresa real.

Problemas que debemos reconocer desde el principio

Sobreajuste

Ocurre cuando un modelo se adapta demasiado a particularidades de los datos de entrenamiento y generaliza mal.

Un error de entrenamiento muy bajo no demuestra por sí solo sobreajuste: debemos compararlo con el comportamiento sobre datos nuevos.

Subajuste

Un modelo demasiado limitado puede no representar los patrones relevantes y funcionar mal incluso en entrenamiento.

Fuga de información

Aparece cuando el desarrollo utiliza información que no debería estar disponible para aprender o predecir.

Por ejemplo, utilizar la hora real de llegada para estimar cuánto tardará un pedido antes de salir.

Cambios en los datos

Un modelo puede perder utilidad si cambian las circunstancias: nuevas rutas, horarios diferentes o una modificación del proceso de reparto.

Evaluarlo una vez no sustituye el seguimiento durante su uso.

Cómo encajan las piezas del aprendizaje automático

Pieza Pregunta que responde En nuestro ejemplo
Problema ¿Qué queremos resolver? Estimar la duración de una entrega.
Datos ¿Qué ejemplos tenemos? Distancias y tiempos observados.
Modelo ¿Cómo calculamos una salida? tiempo = a x distancia + b.
Pérdida ¿Qué error intentamos reducir? Error cuadrático medio.
Entrenamiento ¿Cómo ajustamos parámetros? Probando parejas de a y b.
Evaluación ¿Cómo comprobamos el resultado? MAE sobre ejemplos reservados.
Inferencia ¿Cómo usamos el modelo? Estimando el tiempo de otro pedido.

Estos principios aparecen también en sistemas más avanzados, aunque cambien los datos, las arquitecturas y los procedimientos.

No todos los enfoques necesitan etiquetas escritas manualmente. Por ejemplo, el aprendizaje autosupervisado construye objetivos a partir de los propios datos. Estudiaremos estas diferencias en las siguientes lecciones.

Ejercicios de autoevaluación

  1. En nuestro ejemplo, ¿cuál es la característica y cuál es la variable objetivo?
  2. ¿Qué diferencia hay entre el modelo y sus parámetros?
  3. ¿Por qué reservamos datos para evaluar?
  4. ¿Qué significa un MAE de tres minutos?
  5. ¿Podemos utilizar la hora real de llegada para predecir el tiempo antes de iniciar la entrega?
  6. Si un modelo complejo no mejora una solución sencilla, ¿qué deberíamos revisar?

Soluciones explicadas

1. La característica es la distancia. La variable objetivo es el tiempo real de entrega.

2. El modelo establece la forma del cálculo. Los parámetros son los valores ajustables dentro de esa forma: a y b.

3. Para comprobar el comportamiento con ejemplos que no hayan servido para ajustar los parámetros.

4. Que la magnitud del error es de tres minutos de media en los ejemplos evaluados. No significa que todas las predicciones fallen exactamente tres minutos.

5. No. Esa información no estará disponible en el momento de predecir y produciría una fuga de información.

6. La calidad de los datos, las características, el procedimiento de entrenamiento y la evaluación. También debemos considerar si la complejidad adicional aporta alguna ventaja útil.

Preguntas frecuentes

¿Los datos siempre tienen que estar en una tabla?

No. Pueden ser imágenes, texto, audio u otros formatos. El sistema necesita una representación que sus operaciones puedan procesar, normalmente numérica.

¿Entrenar y evaluar son lo mismo?

No. Entrenar ajusta los parámetros. Evaluar comprueba los resultados. Utilizar los mismos ejemplos para ambas tareas puede dar una impresión demasiado optimista.

¿El mejor modelo es el que tiene menos error?

El error es importante, pero también cuentan el tiempo de respuesta, el coste, la interpretabilidad y las necesidades de la aplicación.

¿Puede un modelo acertar con datos que no se parecen a los de entrenamiento?

Puede ocurrir, pero no debemos darlo por hecho. Cuanto más se aleja una situación de los ejemplos conocidos, más importante resulta comprobar su comportamiento.

Continúa el curso

Has completado la lección 0.2, la segunda de las cinco lecciones del bloque 0: Fundamentos de inteligencia artificial.

Navegación Contenido
Anterior Lección 0.1 — Qué es la inteligencia artificial.
Índice del curso Presentación e índice del curso de inteligencia artificial desde cero.
Siguiente Lección 0.3 — Tipos de aprendizaje automático.

En la siguiente lección conocerás los principales tipos de aprendizaje automático: supervisado, no supervisado, autosupervisado y por refuerzo. Veremos qué los diferencia y en qué situaciones se utiliza cada uno.