Caso aplicado · Enfoque clase

Enfoque clase: Valores y vectores propios

¿Que patron explica mejor la variabilidad?

Mate MathPlay · Flotación Cu · Material revisado

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

Valores propios y vectores propios en flotación de cobre

Cómo descubrir patrones dominantes cuando muchas variables de planta se mueven juntas.

Idea Central

Ya vimos que una tabla histórica puede verse como una matriz. Ahora preguntamos:

Cuando muchas variables se mueven juntas, ¿cuáles son los patrones dominantes de variabilidad?

Un vector propio indica una dirección importante de cambio. Un valor propio indica cuánta importancia tiene esa dirección.

1. Matemática Simple

Vector propio

Dirección del cambio

Vector propio 1: aire sube nivel sube espumante sube

Interpretación: posible patrón de inestabilidad de espuma.

Valor propio

Peso del patrón

Componente 1 explica 48 % Componente 2 explica 22 % Componente 3 explica 10 %

Interpretación: los dos primeros patrones explican 70 % de la variabilidad.

Frase clave: el vector propio dice hacia dónde se mueve el proceso. El valor propio dice cuánto pesa ese movimiento.

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 valores y vectores propios, la pregunta se vuelve: ¿podemos reducir muchas variables de planta a pocos patrones dominantes que expliquen la inestabilidad?

3. Relación Con PCA

En análisis de datos, los valores y vectores propios aparecen en una técnica llamada PCA: Análisis de Componentes Principales.

PCA crea nuevas variables llamadas componentes principales. Cada componente es una combinación de variables originales.

Variables originales aire, nivel, espumante, P80, relave, recuperación, pH.
Componentes PC1: inestabilidad de espuma
PC2: pérdida metalúrgica
PC3: condición de alimentación

Ejemplo de componente

Componente 1 = 0.50*nivel_celda + 0.45*flujo_aire + 0.48*espumante - 0.20*recuperacion Interpretación: patrón de inestabilidad de espuma

4. Patrones Posibles En Los Indicadores Del PPT

Posible patrón dominante Variables que podrían cargar fuerte Interpretación
Inestabilidad de espuma nivel_celda, flujo_aire, dosificacion_espumante Riesgo de sobre-espumación
Pérdida metalúrgica ley_relave_cu, recuperacion_cu, p80 Cobre escapando al relave
Calidad de concentrado ley_concentrado_cu, recuperacion_cu, espumante Trade-off calidad vs recuperación
Condición de alimentación ley_cabeza_cu, p80, densidad_pulpa Cambio de mineral o alimentación
Control químico ph, espumante, colector Régimen de reactivos

5. Excel: Cómo Explicarlo Sin Hacerlo Pesado

Este tema se puede introducir en Excel de forma conceptual. No conviene calcular valores propios a mano en una clase inicial.

Archivo de trabajo: Abre o descargue flotacion_cobre.xlsx

Paso 1: estandarizar variables

Para nivel_celda: =(J2-PROMEDIO(Datos!J$2:J$241))/DESVEST.M(Datos!J$2:J$241) 0 = valor cercano al promedio +1 = una desviación estándar por encima -1 = una desviación estándar por debajo

Paso 2: matriz de correlación

=COEF.DE.CORREL(rango_variable_1,rango_variable_2)

Lectura conceptual

Si aire, nivel y espumante están muy correlacionados, probablemente forman un patrón común. Excel muestra la matriz de relaciones; Python calcula los patrones dominantes.

6. Python: PCA Paso A Paso

Archivo de trabajo: Abre o descargue flotacion_cobre.xlsx

import pandas as pd

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

Seleccionar variables

variables = [
    "ley_cabeza_cu",
    "ley_concentrado_cu",
    "ley_relave_cu",
    "recuperacion_cu",
    "densidad_pulpa",
    "p80",
    "flujo_aire",
    "nivel_celda",
    "ph",
    "dosificacion_espumante",
    "dosificacion_colector"
]

X = df[variables]

Estandarizar

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

Aplicar PCA

from sklearn.decomposition import PCA

pca = PCA()
pca.fit(X_scaled)

Varianza explicada

varianza = pd.DataFrame({
    "componente": [f"PC{i+1}" for i in range(len(variables))],
    "varianza_explicada": pca.explained_variance_ratio_,
    "varianza_acumulada": pca.explained_variance_ratio_.cumsum()
})

varianza

Ejemplo visual de lectura

PC1
48 %
PC2
22 %
PC3
10 %

Cargas de componentes

cargas = pd.DataFrame(
    pca.components_.T,
    index=variables,
    columns=[f"PC{i+1}" for i in range(len(variables))]
)

cargas[["PC1", "PC2", "PC3"]]
Ver funcionando código python

7. Puente Hacia Machine Learning

Archivo de trabajo: Abre o descargue flotacion_cobre.xlsx

PCA puede usarse antes de un modelo para reducir muchas variables a pocos componentes.

Reducir dimensionalidad

En vez de usar 11 variables originales: ley_cabeza, concentrado, relave, recuperación, densidad, P80, aire, nivel, pH, espumante, colector Podemos usar: PC1, PC2, PC3

Alimentar un modelo

X_pca = pca.transform(X_scaled)

X_modelo = X_pca[:, :3]
y = df["evento_sobre_espumacion"]
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

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

modelo = LogisticRegression(max_iter=1000)
modelo.fit(X_train, y_train)
Ver funcionando código python

8. Advertencia Profesional

PCA sirve para descubrir patrones, pero no reemplaza el criterio metalúrgico.

Puede ser útil, pero tiene límites: puede perder interpretabilidad, los componentes no son sensores reales y una alerta de planta debe ser entendible por operación.

9. Cierre Conceptual

Los valores propios y vectores propios permiten pasar de esta pregunta:

Tengo muchas variables, ¿cómo las miro todas juntas?

A esta otra:

¿Cuáles son los patrones dominantes que explican cómo cambia la planta?
Mensaje final: los vectores propios nos muestran direcciones importantes de cambio; los valores propios nos dicen cuánto pesan esas direcciones. En flotación, esto puede ayudarnos a resumir muchas variables en pocos patrones operativos, como inestabilidad de espuma, pérdida metalúrgica o cambio de alimentación.

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