17. Clasificación de algoritmos
¿Cómo anticipar si una condición pertenece a zona normal o zona de riesgo?
Clasificación de algoritmos
Usamos clasificadores para estimar la probabilidad de sobre-espumación y entender los errores de decisión.
1. Pregunta de planta
La clasificación se usa cuando la respuesta pertenece a una categoría.
Idea central: usamos datos históricos con etiqueta para aprender a clasificar una condición: normal o sobre-espumación.
Entrada X = variables de planta
Salida y = evento_sobre_espumacion (0 = no, 1 = sí)
2. Matemática simple
Un clasificador aprende una frontera entre clases.
Clase 0: operación normal
Clase 1: evento de sobre-espumación
En regresión logística, el modelo calcula una probabilidad:
P(evento) = función_sigmoide(b0 + b1*x1 + b2*x2 + ...)
Lectura simple: no solo interesa decir sí o no; interesa saber cuánto riesgo estima el modelo.
3. Algoritmos de clasificación
| Algoritmo | Idea simple | Uso en clase |
|---|---|---|
| Regresión logística | Calcula probabilidad de evento. | Modelo base interpretable. |
| Árbol de decisión | Aprende reglas tipo si-entonces. | Explicar condiciones de riesgo. |
| Random Forest | Combina muchos árboles. | Mejor desempeño, menor interpretabilidad. |
| SVM / vecinos | Separan clases por distancia o frontera. | Comparar enfoques, no iniciar por aquí. |
4. Excel: clasificador simple tipo semáforo
Antes de entrenar un modelo, se puede construir una regla transparente.
Regla de riesgo
=SI(Y(J2>80,L2>40,P2>60),"Alto riesgo","Normal")
Comparar contra evento real
Predicción: Alto riesgo / Normal
Real: N2 = 1 o 0
Matriz de confusión manual
Verdadero positivo: predijo riesgo y hubo evento
Falso positivo: predijo riesgo y no hubo evento
Falso negativo: predijo normal y hubo evento
Verdadero negativo: predijo normal y no hubo evento
Clave: en eventos raros, la exactitud puede engañar. Importan falsos negativos y falsos positivos.
5. Python: clasificación de sobre-espumación
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix, classification_report, roc_auc_score
archivo = "flotacion_cobre.xlsx"
df = pd.read_excel(archivo)
features = [
"flujo_aire", "nivel_celda", "ph", "dosificacion_espumante",
"dosificacion_colector", "p80", "densidad_pulpa", "score_riesgo"
]
X = df[features]
y = df["evento_sobre_espumacion"]
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y
)
modelo = make_pipeline(StandardScaler(), LogisticRegression(max_iter=1000))
modelo.fit(X_train, y_train)
pred = modelo.predict(X_test)
prob = modelo.predict_proba(X_test)[:, 1]
print(confusion_matrix(y_test, pred))
print(classification_report(y_test, pred))
print("AUC:", roc_auc_score(y_test, prob))
6. Lectura operativa
Un clasificador no debe verse como una orden automática, sino como una alerta de revisión.
- Probabilidad baja: operación dentro de zona esperada.
- Probabilidad media: revisar tendencia y contexto.
- Probabilidad alta: revisar nivel, aire, espumante y condiciones de espuma.
Mensaje final: la clasificación ayuda a anticipar condiciones de riesgo, pero su valor depende de reducir falsos negativos sin llenar la planta de falsas alarmas.
