Módulo 3 · Cálculo aplicado

09. Gradiente y derivadas parciales

¿Qué variable empuja más la recuperación?

Mate MathPlay · Flotación Cu · Archivo de trabajo: flotacion_cobre.xlsx

Flotación CuExcelPythonML básico

Gradiente y derivadas parciales

Usamos derivadas parciales para leer sensibilidad local de la recuperación frente a aire, nivel, pH, espumante y P80.

1. Pregunta de planta

Ya sabemos combinar variables con modelos lineales. Ahora damos el siguiente paso: medir hacia dónde cambia la recuperación cuando movemos una variable de operación.

Idea central: una derivada parcial responde: si todo lo demás queda casi igual, ¿cuánto cambia la recuperación cuando cambia el aire, el nivel, el pH o el espumante?

Variable de salida

recuperacion_cu, porque es el KPI metalúrgico que queremos proteger.

Variables de entrada

flujo_aire, nivel_celda, ph, dosificacion_espumante, p80.

2. Matemática simple

Si la recuperación depende de varias variables, podemos escribir:

R = f(aire, nivel, pH, espumante, P80)

Una derivada parcial mira una sola dirección:

∂R / ∂aire = cambio aproximado de recuperación cuando cambia el aire ∂R / ∂nivel = cambio aproximado de recuperación cuando cambia el nivel

El gradiente junta todas esas sensibilidades en un vector:

∇R = [∂R/∂aire, ∂R/∂nivel, ∂R/∂pH, ∂R/∂espumante, ∂R/∂P80]
Si una componente del gradiente es grande, esa variable está empujando fuerte la recuperación. Si es pequeña, su efecto local es menor.

3. Traducción operativa

ConceptoLectura en plantaUso
Derivada parcial positivaAl subir esa variable, la recuperación tiende a subir.Puede ser candidata a ajuste favorable.
Derivada parcial negativaAl subir esa variable, la recuperación tiende a bajar.Puede indicar exceso o condición riesgosa.
GradienteDirección combinada de mayor cambio.Ayuda a priorizar qué variable revisar primero.

4. Excel: ejercicio guiado

En Excel se puede aproximar una derivada usando diferencias entre filas consecutivas.

Cambio de recuperación

=F3-F2

Cambio de aire

=I3-I2

Sensibilidad aproximada de recuperación respecto al aire

=(F3-F2)/(I3-I2)

Repite la misma idea para nivel_celda, ph, dosificacion_espumante y p80.

Advertencia: si el denominador es cero o muy pequeño, la sensibilidad puede salir exagerada. En clase conviene filtrar esos casos.

5. Python: derivadas parciales aproximadas

import pandas as pd
import numpy as np

archivo = "flotacion_cobre.xlsx"
df = pd.read_excel(archivo)

variables = [
    "flujo_aire",
    "nivel_celda",
    "ph",
    "dosificacion_espumante",
    "p80"
]

# Diferencias entre una hora y la siguiente
delta_y = df["recuperacion_cu"].diff()

sensibilidades = {}
for var in variables:
    delta_x = df[var].diff()
    sens = delta_y / delta_x.replace(0, np.nan)
    sensibilidades[var] = sens.replace([np.inf, -np.inf], np.nan).median()

pd.Series(sensibilidades).sort_values()

La salida no debe interpretarse como verdad absoluta. Es una primera lectura de sensibilidad local con datos históricos.

6. Puente hacia Machine Learning

En ML, un modelo aprende relaciones entre entradas y salida. El gradiente aparece cuando el algoritmo pregunta: ¿cómo debo mover mis pesos para reducir el error?

from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline

features = ["flujo_aire", "nivel_celda", "ph", "dosificacion_espumante", "p80"]
X = df[features]
y = df["recuperacion_cu"]

modelo = make_pipeline(StandardScaler(), LinearRegression())
modelo.fit(X, y)

coef = modelo.named_steps["linearregression"].coef_
pd.DataFrame({"variable": features, "peso": coef}).sort_values("peso")
Lectura: los pesos de un modelo lineal estandarizado son una versión simple de sensibilidad. Nos dicen qué variable empuja más la predicción.

7. Cierre conceptual

Mensaje final: las derivadas parciales convierten una pregunta operativa en una pregunta medible: si muevo esta variable, ¿en qué dirección cambia la recuperación? El gradiente junta esas respuestas y prepara el terreno para optimización.

← Lección anteriorDescargar datosSiguiente lección →