Caso aplicado · Curso 2 · Módulo 2 · Unidad 22

Enfoque guía: Detección de anomalías (no supervisada)

Isolation Forest y puntajes de rareza — alerta sin etiqueta de espuma

Mate MathPlay · Flotación Cu · Material complementario

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

Detección de anomalías (no supervisada)

Cuando no hay bitácora de espuma — marcar horas raras solo con sensores

Puente desde unidad 18

En la unidad 18 combinamos distancia + clasificador con etiqueta sobre_espumacion. Aquí el modelo no ve esa columna: aprende qué es “normal” y puntúa rareza.

Caso real: planta nueva, historiador lleno, pocos eventos documentados. Necesitas una primera alarma antes de tener 50 espumas etiquetadas.

1. Matemática — tres enfoques sin etiqueta

Distancia + umbral → igual unidad 18 capa B · baseline geométrico Isolation Forest → aísla puntos raros con pocos cortes aleatorios LOF / One-Class SVM → densidad baja vs vecinos / frontera solo-normal

score(x) alto ⇒ más anómalo  ·  alerta si score > percentil 90

Demo (Isolation Forest, contam=0,12 ≈ 14/120)

MétricaReferenciaLectura
Horas marcadas anómala~14Cercano a eventos reales
Rec. media anómala~76 %Coincide con cluster estrés (U20)
Rec. media normal~86 %Operación estable
Importante: el umbral (percentil, contam) lo define metalurgía según tolerancia a falsas alarmas — no el notebook.

2. Panel integrado Módulo 2

U20 Clustering → ¿En qué modo opera la celda? U21 PCA → ¿Dónde cae en el mapa 2D? U22 Anomalía NS → ¿Puntaje de rareza alto? Comparar con Módulo 1 supervisado (U16–U19) cuando ya hay etiquetas y KPI claro.

Cierre Curso 2 Módulo 2: sin etiquetas aún puedes explorar la planta (clusters, PCA) y alertar rarezas. Cuando documentes eventos, subes al Módulo 1 supervisado para más precisión.

3. Excel — puntaje de rareza simple

CSV demo · distancia estandarizada a la mediana (como unidad 18).

=' Distancia d (6 sensores estandarizados):
=RAIZ(SUMAPRODUCTO(...))

=' Puntaje anomalía = PERCENTIL.INC de d en toda la serie
=PERCENTIL.INC(d_col; 0,9)

=' Alerta:
=SI(d2 > umbral_p90; "ANOMALIA"; "OK")

=' Validar: ¿coincide con sobre_espumacion?

4. Python — Isolation Forest

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import IsolationForest

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 = StandardScaler().fit_transform(df[features])

iso = IsolationForest(contamination=0.12, random_state=42)
df["anom"] = iso.fit_predict(X)  # -1 = anómala, 1 = normal
df["score"] = -iso.score_samples(X)  # mayor = más rara

print("Anómalas detectadas:", (df["anom"] == -1).sum())
print("Espuma real en anómalas:",
      df.loc[df["anom"] == -1, "sobre_espumacion"].mean())
print("Rec. media anómala:",
      df.loc[df["anom"] == -1, "recuperacion_cu_pct"].mean().round(1))

# Comparar con distancia unidad 18
from numpy.linalg import norm
import numpy as np
med = np.median(X, axis=0)
d = norm(X - med, axis=1)
print("Corr score vs distancia:", np.corrcoef(df["score"], d)[0,1].round(2))

5. Investigación sugerida

De las 14 horas con espuma real, ¿cuántas detecta Isolation Forest vs umbral de distancia vs cluster estrés (U20)? Arma una tabla de comparación para el comité de metalurgia.

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.

← PCA Siguiente: Ingeniería features (M3) → Descargar CSV