Ir al contenido principal

Función objetivo: definición, ejemplos y optimización

Descubre qué es una función objetivo, cómo funciona en optimización y machine learning, y cómo definirla e interpretarla con ejemplos reales.
Actualizado 4 may 2026  · 11 min leer

Todo modelo de machine learning que entrenas está resolviendo un problema de optimización, y lo que en realidad intentas optimizar se llama función objetivo.

En pocas palabras, es una función matemática que mide lo "buena" que es una solución. Toma un conjunto de entradas y devuelve una única puntuación. El objetivo siempre es encontrar los valores que maximizan o minimizan esa puntuación. Las funciones objetivo están en el corazón de todo, desde la programación lineal hasta el deep learning. Una vez entiendes cómo funcionan, las verás por todas partes.

En este artículo, te explico qué son las funciones objetivo, en qué se diferencian de las funciones de pérdida y de coste, y cómo se usan en machine learning y en optimización.

¿Buscas un recorrido a fondo por el deep learning que siga siendo relevante en 2026? Apúntate a nuestro curso Deep Learning in Python y crea tu porfolio con PyTorch.

¿Qué es una función objetivo?

Una función objetivo es una función matemática que evalúa lo buena que es una solución.

Le pasas un conjunto de entradas —parámetros del modelo, variables de decisión— y te devuelve un único número. Ese número te dice qué tal rinde tu solución actual. Cuanto mayor (o menor) sea ese número, mejor (o peor) es tu solución.

Ya que hablamos del tema, hablemos de optimización en general.

La optimización es el proceso de encontrar las entradas que empujan ese número en la dirección correcta. Si minimizas, quieres el valor más pequeño posible. Si maximizas, el más grande. En ambos casos, la función objetivo es contra lo que mides.

Dicho de forma sencilla, es un sistema de puntuación. Cada solución candidata recibe una puntuación y tu trabajo es encontrar la que tenga la mejor.

Función objetivo vs función de pérdida vs función de coste

Estos tres términos se usan a menudo como sinónimos, pero no significan exactamente lo mismo.

Función objetivo es el término más amplio. Es cualquier función que intentas maximizar o minimizar. No tiene por qué implicar error ni predicciones: simplemente define qué significa "mejor" para tu problema.

Una función de pérdida mide el error para un único ejemplo de entrenamiento: cuán lejos está la predicción del modelo del valor real. El error cuadrático medio para un solo dato, por ejemplo, es una función de pérdida.

Una función de coste agrega la pérdida en todo tu conjunto de datos, normalmente promediándola. Así que la función de coste es lo que realmente minimizas durante el entrenamiento: resume el rendimiento del modelo en todos los ejemplos, no solo en uno.

En la práctica, la mayoría de frameworks y artículos de ML usan estos términos con cierta soltura. Verás "pérdida" donde "coste" sería más preciso, y "objetivo" para referirse a los tres.

Las distinciones importan cuando lees artículos científicos. El contexto te dirá a cuál se refiere realmente el autor.

Para una comparación más concreta, consulta la tabla siguiente:

Tabla comparativa de función objetivo/pérdida/coste

Tabla comparativa de función objetivo/pérdida/coste

Funciones objetivo en optimización

Todo problema de optimización tiene un objetivo y un conjunto de límites.

La función objetivo define el objetivo —lo que intentas maximizar o minimizar—. Las restricciones definen los límites —las fronteras dentro de las que tu solución debe mantenerse—. Juntas enmarcan el problema.

Veamos un ejemplo sencillo de asignación de recursos.

Imagina que diriges una fábrica que produce dos productos y quieres maximizar el beneficio. Tu función objetivo recoge el beneficio total en función de cuántas unidades fabricas de cada producto. Tus restricciones recogen los límites: materias primas disponibles, horas de máquina, capacidad de mano de obra. La función objetivo te dice qué optimizar y las restricciones te dicen con qué cuentas.

La programación lineal es uno de los contextos más comunes donde esto aplica. Es un método para optimizar una función objetivo lineal sujeta a restricciones lineales. Se usa en todas partes: logística, planificación, cadena de suministro, finanzas. Las matemáticas están muy estudiadas y los solvers pueden manejar problemas con miles de variables.

Es importante entender que la función objetivo no cambia las restricciones existentes: solo le dice al solver qué perseguir. Si cambias la función objetivo, obtendrás una solución completamente distinta, incluso con las mismas restricciones.

Funciones objetivo en machine learning

En machine learning, la función objetivo define qué está aprendiendo realmente tu modelo.

Cada vez que entrenas un modelo, ejecutas un algoritmo de optimización (piensa en gradient descent, Adam, RMSProp) que ajusta los parámetros para minimizar o maximizar la función objetivo. El modelo no sabe nada de tu problema: solo conoce la puntuación que le da la función objetivo e intenta mejorarla en cada actualización.

Esto significa que tu elección de función objetivo condiciona el resultado. Conviene probar varias para ver cuál funciona mejor en tu caso.

Error cuadrático medio (regresión)

El error cuadrático medio (MSE) es la función objetivo por defecto en problemas de regresión. Mide la diferencia cuadrática media entre las predicciones del modelo y los valores reales del objetivo.

Fórmula del MSE

Fórmula del MSE

Elevar al cuadrado las diferencias hace que todos los errores sean positivos y penaliza más los grandes que los pequeños. Una predicción que se equivoca en 10 aporta 100 a la suma, no solo 10. Esto hace que el MSE sea sensible a valores atípicos, algo a vigilar con datos reales y desordenados.

import numpy as np

y_true = np.array([3.0, 5.0, 2.5, 7.0])
y_pred = np.array([2.8, 5.2, 2.0, 6.5])

mse = np.mean((y_true - y_pred) ** 2)
print(f"MSE: {mse:.4f}")

Salida de MSE

Salida de MSE

Pérdida de entropía cruzada (clasificación)

La pérdida de entropía cruzada es la función objetivo estándar para problemas de clasificación. Mide la distancia entre la distribución de probabilidades predicha por tu modelo y la distribución real de clases.

Función de pérdida de entropía cruzada

Función de pérdida de entropía cruzada

Si tu modelo asigna alta probabilidad a la clase correcta, la pérdida es baja. Si está muy seguro pero se equivoca, la pérdida es alta y lo penaliza. Esto empuja al modelo a predecir la clase correcta y a hacerlo con confianza.

import numpy as np

# True labels (one-hot encoded)
y_true = np.array([1, 0, 0])

# Model's predicted probabilities
y_pred = np.array([0.7, 0.2, 0.1])

cross_entropy = -np.sum(y_true * np.log(y_pred))
print(f"Cross-Entropy Loss: {cross_entropy:.4f}")

Salida de entropía cruzada

Salida de entropía cruzada

Log-verosimilitud

La log-verosimilitud es habitual en modelos probabilísticos y estadísticos. La función maximiza la probabilidad de que los parámetros de tu modelo hayan generado los datos observados.

Fórmula de la log-verosimilitud

Fórmula de la log-verosimilitud

Se trabaja con el logaritmo de la verosimilitud en lugar de con la verosimilitud porque convierte un producto de probabilidades en una suma, mucho más fácil de calcular y optimizar.

En la práctica, la mayoría de frameworks minimizan la log-verosimilitud negativa (NLL) en lugar de maximizar la log-verosimilitud. Es lo mismo, solo que invertido para que gradient descent pueda trabajar con ello.

import numpy as np
from scipy.stats import norm

# Observed data
data = np.array([1.2, 2.3, 1.8, 2.1, 1.9])

# Assumed model parameters
mu, sigma = 2.0, 0.5

# Compute negative log-likelihood
nll = -np.sum(norm.logpdf(data, loc=mu, scale=sigma))
print(f"Negative Log-Likelihood: {nll:.4f}")

Salida de log-verosimilitud

Salida de log-verosimilitud

El entrenamiento, en esencia, es optimización. Cada pasada hacia delante calcula el valor de la función objetivo. Cada pasada hacia atrás calcula gradientes. Y cada actualización de parámetros mueve el modelo en la dirección que mejora la puntuación.

Funciones objetivo convexas y no convexas

No todas las funciones objetivo son iguales. Su forma determina lo difícil que es optimizarlas y si puedes fiarte de la solución que encuentras.

Funciones objetivo lineales

Una función objetivo lineal te da una relación en línea recta entre entradas y salida. Cuando cambias cualquier entrada en una cantidad fija, la salida cambia en una cantidad fija.

Las funciones lineales se usan en programación lineal, donde tanto la función objetivo como las restricciones son lineales. Son la clase de funciones objetivo más fácil de optimizar, ya que los solvers pueden encontrar de forma fiable el óptimo global incluso en problemas grandes.

Funciones objetivo no lineales

Una función objetivo no lineal presenta una relación más compleja entre entradas y salida. La mayoría de problemas reales —y prácticamente todos los modelos de machine learning— caen en esta categoría.

El MSE es no lineal. La entropía cruzada es no lineal. Las superficies de pérdida de las redes neuronales son no lineales. Esta complejidad adicional permite capturar relaciones complejas en los datos, pero también hace que la optimización sea más difícil.

Funciones convexas frente a no convexas

Aquí es donde se pone interesante.

Una función convexa tiene forma de cuenco. Cualquier segmento de recta entre dos puntos de la curva queda por encima o sobre la curva. Esto garantiza que cualquier mínimo local sea también el mínimo global: si tu optimizador encuentra un fondo, es el fondo de verdad.

Una función no convexa tiene una forma más irregular —múltiples valles, mesetas y puntos de silla—. Los optimizadores pueden quedarse atrapados en un mínimo local, un valle que parece el fondo pero no lo es. Las redes neuronales profundas tienen superficies de pérdida altamente no convexas, por eso su entrenamiento requiere afinar bien tasas de aprendizaje, optimizadores e inicialización.

Los problemas convexos se resuelven de forma exacta y los no convexos, de forma aproximada. La calidad de tu solución depende de tu estrategia de optimización.

Si eres visual, aquí tienes una comparación entre funciones objetivo lineales, no lineales, convexas y no convexas:

Comparativa de tipos de funciones objetivo

Comparativa de tipos de funciones objetivo

Cómo se optimizan las funciones objetivo

Una vez tienes una función objetivo, necesitas una forma de minimizarla o maximizarla. Ahí entran los algoritmos de optimización.

El enfoque más común es el gradient descent. La idea es calcular el gradiente de la función objetivo con respecto a los parámetros del modelo y dar un pequeño paso en la dirección que reduce su valor. Después, repetir hasta que deje de mejorar.

El gradiente no es más que la derivada de la función objetivo.

Te indica la pendiente en tu posición actual y hacia dónde está la "cuesta arriba". Para minimizar, te mueves en dirección contraria. Para maximizar, te mueves con ella.

Este proceso es iterativo: para llegar a la solución realizas una serie de pequeños ajustes, cada uno acercando los parámetros al óptimo. El tamaño de cada paso lo controla la tasa de aprendizaje. Si es demasiado grande, puedes pasarte del óptimo; si es demasiado pequeña, el entrenamiento se alarga.

En la práctica, la mayoría de frameworks de ML usan variantes de gradient descent más rápidas y estables que la versión básica:

  • Stochastic Gradient Descent (SGD) calcula el gradiente con un único ejemplo aleatorio por paso en lugar de usar todo el conjunto
  • Mini-batch gradient descent usa un pequeño lote de ejemplos por paso: un término medio entre SGD y el lote completo
  • Adam adapta la tasa de aprendizaje para cada parámetro, lo que facilita el ajuste

La función objetivo debe ser derivable, o al menos casi siempre derivable, para que funcionen los métodos basados en gradiente. Sin derivada no hay gradiente, y el optimizador no tiene nada que seguir. Es una clave a recordar.

Ejemplo de función objetivo

Aterrizémoslo con un problema sencillo de regresión lineal.

Imagina que predices precios de viviendas en función de los metros cuadrados. Tienes un conjunto de casas con precios conocidos y quieres ajustar una recta que minimice el error de predicción. Tu función objetivo es el error cuadrático medio (MSE), cuya fórmula ya conoces.

Las entradas son los parámetros de tu modelo: la pendiente y la intersección de la recta. La salida es un único número: el error cuadrático medio en todas las predicciones. En este caso, cuanto menor, mejor.

Así podría verse una posible implementación en Python:

import numpy as np

np.random.seed(42)

# Generate some fake housing data
square_footage = np.random.uniform(500, 3000, 100)
true_price = 150 * square_footage + 50000 + np.random.normal(0, 15000, 100)

def predict(x, slope, intercept):
    return slope * x + intercept

def mse(y_true, y_pred):
    return np.mean((y_true - y_pred) ** 2)

# Try two different parameter sets
slope_a, intercept_a = 150, 50000  # good fit
slope_b, intercept_b = 80, 100000  # bad fit

pred_a = predict(square_footage, slope_a, intercept_a)
pred_b = predict(square_footage, slope_b, intercept_b)

print(f"MSE (good fit):  {mse(true_price, pred_a):,.2f}")
print(f"MSE (poor fit):  {mse(true_price, pred_b):,.2f}")

MSE: buen ajuste frente a mal ajuste

MSE: buen ajuste frente a mal ajuste

El primer conjunto de parámetros produce un MSE mucho menor, lo que significa que se ajusta mejor a los datos. Justo eso es lo que el optimizador utiliza para decidir en qué dirección moverse.

Si eres visual, fíjate en la siguiente imagen:

Ejemplo de MSE

Ejemplo de MSE

Puedes ver ambos ajustes frente a los datos y también la superficie de MSE a lo largo de un rango de valores de la pendiente para ver la propia función objetivo.

El gráfico de la izquierda muestra cómo encajan los dos conjuntos de parámetros con los datos. El de la derecha muestra la superficie del MSE a lo largo de valores de la pendiente: la función objetivo como curva, con un mínimo claro que el optimizador trata de encontrar. Cada paso de gradient descent se mueve por esta curva hacia ese mínimo.

Restricciones y funciones objetivo

La función objetivo te dice qué optimizar. Las restricciones te dicen qué puedes hacer.

En la mayoría de problemas reales, no puedes simplemente maximizar o minimizar sin más. Trabajas con límites como un presupuesto, una ventana de tiempo o una capacidad física. Estos límites se llaman restricciones y definen el conjunto de soluciones válidas entre las que puede elegir tu optimizador.

Piensa en un ejemplo de fabricación.

Quieres maximizar el beneficio en dos líneas de producto. Sin restricciones, la respuesta sería producir tanto como sea posible. Pero cuentas con 500 horas de máquina y 1.000 unidades de materia prima. Esas son tus restricciones. La función objetivo es la misma (maximizar el beneficio), pero el optimizador solo puede buscar dentro de la región que permiten esas restricciones.

Cuando cambias las restricciones, también cambia la solución óptima, incluso si la función objetivo no cambia.

Esta estructura de función objetivo con un conjunto de restricciones es la base de la optimización con restricciones. Así funciona la programación lineal, la optimización de carteras y la formulación de muchos problemas reales de planificación.

Conclusión

Todo problema de optimización —ya sea entrenar una red neuronal, asignar recursos o ajustar un modelo de regresión— se reduce a una cosa: una función que intentas minimizar o maximizar.

Esa función es la función objetivo. Define qué significa "mejor", guía cada actualización de parámetros y determina qué aprende realmente tu modelo. Si aciertas, tu modelo podrá resolver el problema que tienes. Si te equivocas, resolverá otro distinto, a menudo sin una señal evidente que te avise.

Elegir bien la función objetivo es una decisión de diseño en ciencia de datos, porque condiciona todo lo que viene después. Como profesional, siéntete libre de experimentar: hay muchas funciones objetivo entre las que elegir.

¿No sabes por dónde empezar? Nuestros cursos Model Validation in Python y Hyperparameter Tuning in Python son dos grandes puntos de partida para perfiles de nivel inicial e intermedio.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Científico de Datos Senior con base en Croacia. Top Tech Writer con más de 700 artículos publicados, generando más de 10M de visitas. Autor del libro Automatización del aprendizaje automático con TPOT.

FAQs

¿Qué es una función objetivo?

Una función objetivo es una función matemática que mide lo buena que es una solución. Le pasas un conjunto de entradas, como parámetros del modelo y variables de decisión, y devuelve un único número. El objetivo siempre es encontrar las entradas que hagan ese número lo más alto o lo más bajo posible.

¿Cuál es la diferencia entre función objetivo y función de pérdida?

Una función de pérdida es un tipo específico de función objetivo usada en machine learning para medir el error de predicción en un único ejemplo de entrenamiento. La función objetivo es el término más amplio: puede referirse a cualquier función que minimizas o maximizas, no solo al error de predicción. En la práctica, ambos términos se usan a veces indistintamente, pero la distinción importa cuando lees artículos académicos.

¿Dónde se usan las funciones objetivo?

Las funciones objetivo aparecen en cualquier problema que implique optimización: machine learning, programación lineal, asignación de recursos, finanzas, logística y más. En machine learning, la función objetivo define lo que el modelo aprende durante el entrenamiento. Fuera de ML, define el objetivo en cualquier problema de optimización con o sin restricciones.

¿Por qué importa la elección de la función objetivo en machine learning?

La función objetivo determina qué está optimizando realmente tu modelo durante el entrenamiento. Si eliges la equivocada, tu modelo minimizará lo que no debe, y lo hará bien, lo que complica detectarlo. Por ejemplo, usar MSE en un problema de clasificación no solo dará malos resultados: dará malos resultados con mucha confianza, que es peor.

¿Puede una función objetivo tener múltiples mínimos?

Sí, y este es uno de los grandes retos al entrenar modelos de deep learning. Las funciones objetivo no convexas tienen múltiples mínimos locales, por lo que un optimizador puede quedarse en un valle que no es el mejor global. Por eso importan la inicialización de pesos, la planificación de la tasa de aprendizaje y la elección del optimizador: influyen en que el proceso acabe en una buena solución.

Temas

Aprende con DataCamp

Curso

Comprender la ciencia de datos

2 h
848.4K
Introducción a la ciencia de datos, ¡y no hay que programar!
Ver detallesRight Arrow
Iniciar curso
Ver másRight Arrow
Relacionado

blog

Clasificación en machine learning: Introducción

Aprende sobre la clasificación en machine learning viendo qué es, cómo se utiliza y algunos ejemplos de algoritmos de clasificación.
Zoumana Keita 's photo

Zoumana Keita

14 min

blog

¿Qué es la ciencia de datos? Definición, ejemplos, herramientas y más

La ciencia de datos es un campo interdisciplinar que utiliza métodos, procesos, algoritmos y sistemas científicos para extraer conocimientos e ideas de datos estructurados y sin estructurar.
Matt Crabtree's photo

Matt Crabtree

15 min

Machine Learning Concept

blog

¿Qué es el machine learning? Definición, tipos, herramientas y más

Descubre todo lo que necesitas saber sobre el machine learning en 2023, incluidos sus tipos, usos, carreras profesionales y cómo iniciarte en el sector.
Matt Crabtree's photo

Matt Crabtree

14 min

blog

8 modelos de machine learning explicados en 20 minutos

Descubre todo lo que necesitas saber sobre los tipos de modelos de machine learning, incluyendo para qué se utilizan y ejemplos de cómo ponerlos en práctica.
Natassha Selvaraj's photo

Natassha Selvaraj

15 min

Tutorial

Explicación de las funciones de pérdida en el machine learning

Explora el papel crucial de las funciones de pérdida en el machine learning con nuestra completa guía. Comprende la diferencia entre funciones de pérdida y de coste, profundiza en varios tipos como MSE y MAE, y aprende sus aplicaciones en tareas de ML.
Richmond Alake's photo

Richmond Alake

Tutorial

Funciones lambda de Python: Guía para principiantes

Aprende sobre las funciones lambda de Python, su finalidad y cuándo utilizarlas. Incluye ejemplos prácticos y mejores prácticas para una implementación eficaz.
Mark Pedigo's photo

Mark Pedigo

Ver másVer más