Caso aplicado · Enfoque clase

Enfoque clase: Probabilidad y distribucion

¿Que tan frecuente es el evento y donde aparece?

Mate MathPlay · Flotación Cu · Material revisado

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

Probabilidad y distribución en flotación de cobre

Cómo medir qué tan frecuente es la sobre-espumación y qué valores del proceso son normales, altos o raros.

Idea Central

Ya vimos si la planta está estable y qué variables se mueven juntas. Ahora necesitamos una pregunta clave para construir alertas:

¿Qué tan frecuente es el evento de sobre-espumación y cómo se distribuyen los indicadores del proceso?

Antes de predecir un evento, necesitamos saber si ocurre mucho, poco o casi nunca. También necesitamos saber qué valores son normales y cuáles ya son poco frecuentes.

1. Matemática Simple

Probabilidad

¿Qué tan posible es un evento?

Probabilidad = número de veces que ocurre el evento / número total de observaciones

Si en 100 horas hubo 12 horas con sobre-espumación, la probabilidad base es 12 %.

Distribución

¿Cómo se reparten los valores?

Recuperación frecuente: 89 % a 94 % Recuperación rara: 85 % o menos

La distribución ayuda a distinguir operación normal, valores raros y zonas de alerta.

Ejemplo visual de distribución

82-84 %
bajo
84-86 %
raro
86-88 %
alerta
88-90 %
medio
90-92 %
normal
92-94 %
normal
94-96 %
alto

Percentiles

P2525 % de los datos está por debajo.
P50Mediana: mitad abajo, mitad arriba.
P75Zona alta: solo 25 % está por encima.
P90Zona muy alta o poco frecuente.

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 probabilidad y distribución, la pregunta se vuelve: ¿qué tan frecuente es la sobre-espumación y qué valores de proceso aparecen cuando ocurre?

3. Preguntas De Planta Que Responde

Pregunta Herramienta Interpretación
Qué tan frecuente es la sobre-espumación? Probabilidad base Riesgo histórico del evento
La recuperación baja es común o rara? Histograma / percentiles Distingue operación normal vs anormal
Qué nivel de celda se considera alto? Percentil 75 o 90 Define umbral de alerta
Los eventos ocurren en una zona específica? Distribución condicionada Compara evento vs no evento
Hay pocos eventos críticos? Conteo de clases Advierte problema de clase desbalanceada en ML

4. Ejercicio En Clase

La pregunta de trabajo será:

¿Qué tan frecuente es la sobre-espumación en el histórico simulado?

Luego compararemos:

Recuperación sin evento vs Recuperación con evento Nivel de celda sin evento vs Nivel de celda con evento
Indicador Sin evento Con evento Diferencia Lectura
Recuperación fórmula fórmula con - sin Impacto en KPI
Nivel de celda fórmula fórmula con - sin Señal operativa
Flujo de aire fórmula fórmula con - sin Condición de control
Espumante fórmula fórmula con - sin Posible causa

Lectura esperada: si el evento ocurre en pocas horas, pero cuando ocurre cambia la recuperación, nivel, aire y espumante, entonces el evento tiene una huella estadística.

5. Excel: Fórmulas Básicas

Archivo de trabajo: Abre o descargue flotacion_cobre.xlsx

flotacion_cobre.xlsx

Hoja: Datos

Probabilidad base del evento

=CONTAR.SI(Datos!N2:N241,1)/CONTARA(Datos!N2:N241)

Frecuencia por severidad

Normal: =CONTAR.SI(Datos!O2:O241,"Normal") Baja: =CONTAR.SI(Datos!O2:O241,"Baja") Media: =CONTAR.SI(Datos!O2:O241,"Media") Alta: =CONTAR.SI(Datos!O2:O241,"Alta")

Percentiles para umbrales

Percentil 75 de nivel: =PERCENTIL.INC(Datos!J2:J241,0.75) Percentil 90 de nivel: =PERCENTIL.INC(Datos!J2:J241,0.90) Percentil 75 de flujo de aire: =PERCENTIL.INC(Datos!I2:I241,0.75) Percentil 75 de espumante: =PERCENTIL.INC(Datos!L2:L241,0.75)

Promedios condicionados por evento

Recuperación sin evento: =PROMEDIO.SI(Datos!N2:N241,0,Datos!F2:F241) Recuperación con evento: =PROMEDIO.SI(Datos!N2:N241,1,Datos!F2:F241) Nivel sin evento: =PROMEDIO.SI(Datos!N2:N241,0,Datos!J2:J241) Nivel con evento: =PROMEDIO.SI(Datos!N2:N241,1,Datos!J2:J241)

6. Python: Mismo Cálculo, Más Automatizado

Archivo de trabajo: Abre o descargue flotacion_cobre.xlsx

import pandas as pd

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

Probabilidad base

prob_evento = df["evento_sobre_espumacion"].mean()
prob_evento

Frecuencia por severidad

df["severidad_sobre_espumacion"].value_counts(normalize=True)

Percentiles

df[[
    "nivel_celda",
    "flujo_aire",
    "dosificacion_espumante",
    "recuperacion_cu"
]].quantile([0.25, 0.50, 0.75, 0.90])

Distribución condicionada por evento

df.groupby("evento_sobre_espumacion")[
    [
        "recuperacion_cu",
        "nivel_celda",
        "flujo_aire",
        "dosificacion_espumante",
        "ley_relave_cu"
    ]
].mean()
Ver funcionando código python

7. Puente Hacia Machine Learning

Archivo de trabajo: Abre o descargue flotacion_cobre.xlsx

La probabilidad y la distribución son claves antes de entrenar un modelo.

En eventos raros, la exactitud puede mentir. Si el evento ocurre solo 3 % de las veces, un modelo que diga siempre "no hay evento" tendría 97 % de exactitud, pero sería inútil para planta.

Crear banderas basadas en percentiles

p90_nivel = df["nivel_celda"].quantile(0.90)
p75_espumante = df["dosificacion_espumante"].quantile(0.75)

df["nivel_muy_alto"] = (df["nivel_celda"] > p90_nivel).astype(int)
df["espumante_alto"] = (df["dosificacion_espumante"] > p75_espumante).astype(int)

Preparar variables para ML

features_ml = [
    "flujo_aire",
    "nivel_celda",
    "dosificacion_espumante",
    "nivel_muy_alto",
    "espumante_alto"
]

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

Clasificador posterior

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, confusion_matrix

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

modelo = LogisticRegression(max_iter=1000)
modelo.fit(X_train, y_train)

pred = modelo.predict(X_test)

print(confusion_matrix(y_test, pred))
print(classification_report(y_test, pred))
Ver funcionando código python

8. Cierre Conceptual

La probabilidad y la distribución permiten pasar de esta pregunta:

¿Hubo o no hubo sobre-espumación?

A esta otra:

¿Qué tan frecuente es, en qué condiciones aparece y qué tan rara era la condición antes del evento?
Mensaje final: antes de predecir un evento, debemos entender su frecuencia y la distribución de las variables que lo rodean. En flotación, un nivel alto, un espumante alto o una recuperación muy baja tienen más sentido cuando sabemos si son valores normales, altos o raros dentro del histórico de planta.

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