Enfoque guia: Valores y vectores propios
¿Que patron explica mejor la variabilidad?
Ver concepto general MathPlay →Valores y vectores propios
Comprimir 6 variables de flotación en patrones dominantes (PCA)
Conexión con el Paso 5
Paso 5: X ∈ ℝ120×6 — filas = horas, columnas = sensores.
Paso 6: ¿Qué patrones explican la variación? → valores y vectores propios de la covarianza.
Objetivo: pasar de 6 columnas a 2–3 componentes interpretables (aireación, molienda, espuma–nivel) — base de PCA en ML.
1. Matemática simple
A · v = λ · v
| Símbolo | Significado | En planta |
|---|---|---|
| A | Matriz (covarianza 6×6) | Cómo varían juntas las variables |
| v | Vector propio | Dirección del patrón |
| λ | Valor propio | Varianza en esa dirección |
Flujo: centrar X → matriz covarianza C → resolver C v = λ v → cada par (λ, v) es un componente principal.
% varianza PCk = λk / Σλ × 100
2. Resultados demo
Varianza explicada
| Componente | λ | % varianza |
|---|---|---|
| PC1 | 121,4 | 31,3 % |
| PC2 | 112,5 | 29,0 % |
| PC3 | 78,6 | 20,2 % |
| PC4 | 75,7 | 19,5 % |
| PC5–PC6 | ~0 | ~0 % |
PC1 + PC2 ≈ 60 % — con 2 patrones capturas la mayor parte del movimiento.
Cargas (vectores propios) — lectura cualitativa
| Variable | PC1 | PC2 | PC3 |
|---|---|---|---|
| Flujo de aire | −0,78 | −0,45 | −0,27 |
| P80 | −0,51 | +0,85 | +0,13 |
| Espumante | −0,36 | −0,25 | +0,50 |
| Nivel celda | +0,04 | −0,13 | +0,81 |
| pH / ley cabeza | ~0 | ~0 | ~0 |
PC1 (~31 %): aire + P80 + espumante — régimen global de flotación.
PC2 (~29 %): contraste P80 vs aire — alimentación vs aireación.
PC3 (~20 %): nivel + espumante — espuma–pulpa en celda.
Coherente con correlaciones del Paso 2 (aire, espumante, nivel vs evento).
3. Excel
Excel básico no calcula eigenvalues con una sola fórmula. En clase:
- Repasa matriz X y covarianza (Pasos 2 y 5).
- Opcional: Datos → Análisis de datos → Covarianza.
- Python valida los números — mismo criterio que SCADA vs lab.
4. Python (núcleo)
Abre o descargue CSV demo.
import pandas as pd
import numpy as np
from sklearn.decomposition import PCA
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].values
Xc = X - X.mean(axis=0)
C = np.cov(Xc, rowvar=False)
eigvals, eigvecs = np.linalg.eig(C)
order = np.argsort(eigvals)[::-1]
eigvals = eigvals[order].real
eigvecs = eigvecs[:, order].real
print("Var %:", np.round(100*eigvals/eigvals.sum(), 1))
print("PC1 cargas:", dict(zip(features, np.round(eigvecs[:,0], 3))))
pca = PCA().fit(X)
print("sklearn %:", np.round(pca.explained_variance_ratio_*100, 1))
5. Proyección a Machine Learning
| Hoy | En ML |
|---|---|
| λ, % varianza | explained_variance_ratio_ |
| Vector propio v | pca.components_ |
| 6 → 2 dimensiones | Menos ruido, visualización PC1–PC2 |
| Sin etiqueta evento | PCA es no supervisado; alerta = clasificador aparte |
6. Investigación Sugerida
Tarea: scatter PC1 vs PC2 coloreado por sobre_espumacion. ¿Se separan eventos?
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.
