Caso aplicado · Enfoque clase

Enfoque clase: Transformaciones lineales

¿Como combino variables para estimar una salida?

Mate MathPlay · Flotación Cu · Material revisado

Flotación CuExcelPython
Ver concepto general MathPlay →
Inteligencia artificial aplicada a minería · Módulo 2

Transformaciones lineales en flotación de cobre

Cómo combinar variables de planta para estimar recuperación, construir scores y preparar modelos básicos.

Idea Central

Cerramos el bloque de álgebra con una idea clave:

Una transformación lineal convierte variables de entrada en una nueva salida.

En planta, esa salida puede ser recuperación estimada, score de riesgo o probabilidad de evento.

VariablesP80, aire, nivel, espumante.
PesosCoeficientes que indican cuánto aporta cada variable.
SalidaRecuperación estimada o score de riesgo.

1. Matemática Simple

Un vector de planta puede ser:

x = [p80, aire, nivel, espumante]

Una transformación lineal toma ese vector y lo convierte en un número:

y = b0 + b1*p80 + b2*aire + b3*nivel + b4*espumante
Ejemplo pedagógico

Recuperación estimada

recuperacion_estimada = 100 - 0.03*p80 - 0.01*aire - 0.05*nivel - 0.08*espumante
Forma matricial

Muchas filas a la vez

y_estimado = X @ beta + b0 X = matriz de variables beta = coeficientes

2. Aplicación Al Caso De Sobre-Espumación

Problema: en una planta concentradora de cobre ocurre sobre-espumación en celdas de flotación. Esto desestabiliza nivel de pulpa, espuma, arrastre, ley de concentrado y recuperación.

Pregunta operativa: ¿podemos detectar condiciones que anticipan la sobre-espumación y estimar su impacto sobre la recuperación?

Con transformaciones lineales, la pregunta se vuelve: ¿podemos combinar variables de proceso para estimar recuperación o construir un score de riesgo?

3. Dos Usos Principales

Regresión

Estimar recuperación

recuperacion_estimada = b0 + b1*ley_cabeza + b2*p80 + b3*aire + b4*nivel + b5*espumante

La salida es un número.

Clasificación

Estimar riesgo

score_riesgo = b0 + b1*aire + b2*nivel + b3*espumante + b4*p80

El score puede convertirse en probabilidad o semáforo.

4. Indicadores Del PPT En Forma De Modelo

Salida deseada Variables de entrada candidatas Modelo básico
Recuperación estimada ley_cabeza_cu, p80, densidad_pulpa, flujo_aire, nivel_celda, ph, reactivos Regresión lineal
Riesgo de sobre-espumación flujo_aire, nivel_celda, espumante, p80, ph, distancia_operativa Regresión logística
Ley de relave estimada p80, recuperación, aire, nivel, ley_cabeza Regresión lineal
Score de inestabilidad aire, nivel, espumante, desviaciones móviles Score lineal

5. Excel: Ejercicio Guiado

Archivo de trabajo: Abre o descargue flotacion_cobre.xlsx

flotacion_cobre.xlsx

Hoja: Datos

Recuperación estimada

=100 - 0.03*H2 - 0.01*I2 - 0.05*J2 - 0.08*L2

Error

Error: =F2 - recuperacion_estimada Error absoluto: =ABS(F2 - recuperacion_estimada) Promedio del error absoluto: =PROMEDIO(rango_error_absoluto)

Score de riesgo lineal

=0.03*H2 + 0.04*I2 + 0.08*J2 + 0.10*L2

Semáforo

=SI(score>umbral_alto,"Rojo",SI(score>umbral_medio,"Amarillo","Verde"))

6. Python: Mismo Concepto

Archivo de trabajo: Abre o descargue flotacion_cobre.xlsx

import pandas as pd

df = pd.read_excel(
    "flotacion_cobre.xlsx",
    sheet_name="Datos"
)

Fórmula manual

df["recuperacion_estimada_manual"] = (
    100
    - 0.03 * df["p80"]
    - 0.01 * df["flujo_aire"]
    - 0.05 * df["nivel_celda"]
    - 0.08 * df["dosificacion_espumante"]
)

df["error_abs"] = (
    df["recuperacion_cu"] - df["recuperacion_estimada_manual"]
).abs()

df["error_abs"].mean()

Regresión lineal entrenada

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error, r2_score

features = [
    "ley_cabeza_cu",
    "densidad_pulpa",
    "p80",
    "flujo_aire",
    "nivel_celda",
    "ph",
    "dosificacion_espumante",
    "dosificacion_colector"
]

X = df[features]
y = df["recuperacion_cu"]

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

modelo = LinearRegression()
modelo.fit(X_train, y_train)

pred = modelo.predict(X_test)

mean_absolute_error(y_test, pred), r2_score(y_test, pred)

Coeficientes

coeficientes = pd.DataFrame({
    "variable": features,
    "coeficiente": modelo.coef_
}).sort_values("coeficiente")

coeficientes
Ver funcionando código python

7. Puente Hacia Machine Learning

Archivo de trabajo: Abre o descargue flotacion_cobre.xlsx

Las transformaciones lineales son el puente más directo hacia ML básico.

Regresión logística para riesgo

z = b0 + b1*x1 + b2*x2 + ... + bn*xn probabilidad = función_sigmoide(z)
from sklearn.linear_model import LogisticRegression

X = df[features]
y = df["evento_sobre_espumacion"]

modelo = LogisticRegression(max_iter=1000)
modelo.fit(X, y)

prob_evento = modelo.predict_proba(X)[:, 1]
Idea clave: entrenar un modelo lineal significa aprender los pesos desde los datos históricos.
Ver funcionando código python

8. Advertencia Profesional

Empezamos con modelos lineales porque son interpretables, no porque la planta siempre sea lineal.

En flotación, muchas relaciones pueden ser no lineales: poco aire puede ser malo, aire moderado puede ser bueno y exceso de aire también puede ser malo.

9. Cierre Conceptual

Las transformaciones lineales permiten pasar de esta pregunta:

Tengo muchas variables, ¿cómo las combino?

A esta otra:

¿Qué salida puedo estimar a partir de una combinación ponderada de variables?
Mensaje final: una transformación lineal combina variables de planta con pesos para producir una salida: recuperación estimada, score de riesgo o probabilidad de evento. En machine learning, entrenar un modelo lineal significa aprender esos pesos desde los datos históricos.

10. Puente al Módulo 3: Cálculo aplicado

Hasta aquí aprendimos a combinar variables con pesos. El siguiente paso es preguntar cómo cambia la recuperación cuando movemos una variable de planta.

Siguiente idea: las derivadas parciales y el gradiente nos ayudan a medir sensibilidad: aire, nivel, pH, espumante y P80 no solo entran al modelo; también empujan la salida en distintas direcciones.

Continuar con 09. Gradiente y derivadas parciales →

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.

← Volver al caso