Caso aplicado · Curso 2 · Módulo 1 · Unidad 16

Enfoque guía: Modelos de regresión

Soft sensor de recuperación Cu — de y = Xβ (Curso 1) a regresión supervisada entrenada

Mate MathPlay · Flotación Cu · Material complementario

Flotación CuExcelPythonML supervisado
Ver concepto general MathPlay · Ruta IA matemática (MathPlay) →
Curso 2 — Aprendizaje supervisado · Módulo 1 · Unidad 1 de 4
Caso flotación Cu · Curso 2 · Unidad 16

Modelos de regresión

Estimar recuperación de Cu (%) a partir de sensores — el soft sensor como regresión supervisada

Puente desde Curso 1

En la unidad 8 ya estimaste recuperación con y = Xβ a mano. Eso es regresión lineal. Hoy formalizamos el aprendizaje supervisado: entrenar β con histórico, medir error y validar antes de confiar en planta.

Problema: sobre-espumación desestabiliza la celda y cae recuperación (~76 % con evento vs ~86 % sin evento en el demo). Objetivo: predecir recuperación hora a hora para detectar desvíos tempranos.

1. Matemática — regresión supervisada

ÿ = β0 + β1x1 + … + βpxp = Xβ

Entrenamiento = encontrar β que minimiza la pérdida (error cuadrático medio):

L(β) = (1/n) Σi (yi − ÿi

Métricas en planta (demo n=120)

MétricaDemoQué significa
Media rec.85,3 %Línea base del KPI
σ rec.3,41 %Planta nerviosa
~0,79El modelo lineal explica ~79 % de variación
MAE~1,3 ppError medio absoluto en puntos de rec.
β espumante−0,27Más espumante → menor rec. (modelo)
Regla operativa: empieza siempre con regresión lineal. Sube a Random Forest / XGBoost solo si el salto de precisión paga el costo de explicabilidad y mantenimiento.

2. Escalera de modelos (flotación)

Nivel 1 Regresión lineal (OLS) → y = Xβ · explicable · baseline obligatorio Nivel 2 Ridge / Lasso → muchas variables correlacionadas Nivel 3 Random Forest regresor → no linealidades suaves Nivel 4 Gradient boosting → máxima precisión · menos transparencia

Salida operativa: soft sensor — ÿ vs laboratorio. Si ÿ cae > 2σ bajo lo esperado, revisar espumante y nivel.

3. Excel — regresión y error

CSV demo · datos_flotacion_demo.csv

Columnas: G = recuperación · H:M = features (pH, P80, aire, espumante, nivel, ley cabeza).

=' Coeficientes (LINEST multivariable):
=LINEST(G2:G121; H2:M121; VERDADERO; VERDADERO)

=' Predicción fila 2:
=$B$0 + $B$1*H2 + $B$2*I2 + $B$3*J2 + $B$4*K2 + $B$5*L2 + $B$6*M2

=' Error absoluto:
=ABS(G2 - predicción)

=' MAE global:
=PROMEDIO(error_abs)

=' R²:
=COEF.DE.CORRELACIÓN(G2:G121; pred:G121)^2

4. Python — entrenar y evaluar

import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score, mean_absolute_error

features = ["ph","p80_um","flujo_aire","dosif_espumante_ml_min","nivel_celda_pct","ley_cabeza_cu_pct"]
df = pd.read_csv("datos_flotacion_demo.csv")
X = df[features]
y = df["recuperacion_cu_pct"]

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

reg = LinearRegression()
reg.fit(X_train, y_train)
pred = reg.predict(X_test)

print("R2 test:", round(r2_score(y_test, pred), 3))
print("MAE test:", round(mean_absolute_error(y_test, pred), 2), "pp")
for name, b in zip(features, reg.coef_):
    print(f"  beta {name}: {b:.3f}")

# Soft sensor última hora
ult = X.iloc[[-1]]
print("Rec. real:", y.iloc[-1], "| Estimada:", round(reg.predict(ult)[0], 1))

5. Investigación sugerida

Calcula MAE separado para horas con sobre_espumacion=1 vs 0. ¿El modelo falla más cuando hay espuma? ¿Qué implica para el turno?

Regístrate al boletín MathPlay

Datos, simulación, visualización, IA y tecnología aplicada a problemas reales de industria y minería.

Sin calendario fijo. Sin spam.

Listo. Te escribo cuando haya algo nuevo.

← Cierre Curso 1 Siguiente: Clasificación → Descargar CSV