09. Gradiente y derivadas parciales
¿Qué variable empuja más la recuperación?
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.
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:
Una derivada parcial mira una sola dirección:
El gradiente junta todas esas sensibilidades en un vector:
3. Traducción operativa
| Concepto | Lectura en planta | Uso |
|---|---|---|
| Derivada parcial positiva | Al subir esa variable, la recuperación tiende a subir. | Puede ser candidata a ajuste favorable. |
| Derivada parcial negativa | Al subir esa variable, la recuperación tiende a bajar. | Puede indicar exceso o condición riesgosa. |
| Gradiente | Direcció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
Cambio de aire
Sensibilidad aproximada de recuperación respecto al aire
Repite la misma idea para nivel_celda, ph, dosificacion_espumante y p80.
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")
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.
