🔄 PCA (Análisis de Componentes Principales)


🧠 ¿Qué es PCA?

PCA es un método de reducción de dimensionalidad que transforma tus datos en un nuevo sistema de coordenadas, donde:

  • Cada eje (llamado componente principal) explica la máxima variación posible en los datos.
  • Los primeros componentes contienen la mayor parte de la información, y los demás pueden descartarse sin perder mucho.

Es como hacer zoom-out para ver mejor: reduces el número de variables pero conservas lo más importante.


🎯 ¿Para qué sirve?

  • Visualizar datos complejos en 2D o 3D.
  • Reducir el número de columnas (features) para acelerar modelos.
  • Eliminar ruido o redundancia en los datos.
  • Preparar datos para clustering o machine learning.

📈 ¿Cómo funciona?

  1. Centra los datos (resta la media).
  2. Calcula la covarianza entre todas las variables.
  3. Encuentra los ejes (componentes principales) donde la variación es máxima.
  4. Reproyecta todos los datos sobre esos ejes nuevos.
  5. Puedes descartar los componentes menos útiles.

📦 Ejemplo visual (idea simplificada)

Imagina que tienes una nube de puntos en 3D. PCA te permite «aplanar» esos puntos en un plano 2D sin perder la forma general.


🔧 Ventajas

✅ Reduce columnas (ideal con cientos de variables)
✅ Mejora visualización y comprensión
✅ Elimina variables redundantes
✅ Útil antes de aplicar clustering o modelos


❌ Desventajas

Pierde interpretación directa (los nuevos ejes no tienen nombres claros)
❌ Puede perder información si se eliminan componentes importantes
❌ No sirve para clasificación ni predicción directa


🧑‍💻 Código en Python

pythonCopyEditimport pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# Datos de ejemplo
data = pd.DataFrame({
    'edad': [25, 45, 35, 33, 52, 23, 41, 38],
    'ingresos': [50000, 80000, 60000, 58000, 120000, 45000, 70000, 64000],
    'gastos': [2000, 4000, 3000, 2900, 5000, 1800, 3500, 3200]
})

# Escalar datos
scaler = StandardScaler()
X_scaled = scaler.fit_transform(data)

# Aplicar PCA para reducir a 2 dimensiones
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)

# Convertir a DataFrame
pca_df = pd.DataFrame(X_pca, columns=['PC1', 'PC2'])

# Visualizar
plt.scatter(pca_df['PC1'], pca_df['PC2'])
plt.title("Datos reducidos con PCA")
plt.xlabel("Componente Principal 1")
plt.ylabel("Componente Principal 2")
plt.show()

📌 ¿Cómo saber cuántos componentes conservar?

Puedes usar el atributo explained_variance_ratio_ de PCA:

pythonCopyEditprint(pca.explained_variance_ratio_)

Esto te dice qué porcentaje de la información guarda cada componente. Si los primeros 2 te dan, por ejemplo, el 95% → genial, puedes descartar los demás.


🧩 En resumen

AspectoDetalle
Tipo de modeloNo supervisado (reducción de dimensionalidad)
¿Predice?No
¿Visualiza?
¿Pierde información?Puede, si no se eligen bien los componentes
Ideal paraDatos con muchas variables, clustering

Comentarios

Aún no hay comentarios. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *