Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Aprendizaje no supervisado, Unidad 12 — Mini-proyecto no supervisado, 12.1 — Proyecto guiado ·

Reducción de dimensionalidad

Reducción de dimensionalidad

Introducción

La reducción de dimensionalidad es una técnica fundamental en ciencia de datos y aprendizaje no supervisado que ayuda a simplificar los datos sin perder información crucial. Este proceso permite visualizar mejor los datos, mejorar el rendimiento del modelo y prevenir el mal de la dimensionalidad (curse of dimensionality). En esta guía, exploraremos cómo aplicar reducción de dimensionalidad mediante clustering y detección de estructuras en un conjunto de datos real.

Explicación principal con ejemplos

Para demostrar la aplicación de reducción de dimensionalidad, consideremos el dataset "iris". Este conjunto de datos consta de 150 flores de tres especies (setosa, versicolor y virginica), cada una con cuatro características: longitud del pétalo, ancho del pétalo, longitud del sépalo y ancho del sépalo.

Paso 1: Importar bibliotecas necesarias

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

Paso 2: Cargar el dataset iris

iris = load_iris()
df_iris = pd.DataFrame(data=np.c_[iris['data'], iris['target']],
                       columns=iris['feature_names'] + ['target'])
print(df_iris.head())

Paso 3: Aplicar PCA

PCA (Principal Component Analysis) es una técnica que transforma los datos a un espacio de menor dimensión manteniendo la varianza máxima.

pca = PCA(n_components=2)
principal_components = pca.fit_transform(iris.data)

Paso 4: Visualizar los componentes principales

plt.figure(figsize=(8,6))
colors = ['r', 'g', 'b']
for i in range(len(np.unique(iris.target))):
    plt.scatter(principal_components[iris.target==i, 0], 
                principal_components[iris.target==i, 1],
                c=colors[i], label=iris.target_names[i])
plt.legend()
plt.title('PCA de los datos iris')
plt.xlabel('Componente Principal 1')
plt.ylabel('Componente Principal 2')
plt.show()

Errores típicos / trampas

  1. Sobreinterpretación del número de componentes: Se debe escoger cuidadosamente el número de componentes principales (n_components) para no perder información crucial y evitar sobreinterpretar la importancia de las componentes.
  2. Ignorar la interpretabilidad: Aunque PCA es una técnica efectiva, las nuevas variables pueden ser difíciles de interpretar en términos del dominio real. Es importante evaluar si el nuevo espacio de características sigue siendo significativo y útil para los fines del proyecto.
  3. Omitir validación externa: La evaluación interno (como el score de Silhouette) no siempre refleja la validez del modelo en aplicaciones reales. Se debe validar el modelo con datos externos.

Checklist accionable

  1. Establecer el objetivo: Identificar claramente qué se desea lograr con la reducción de dimensionalidad.
  2. Explorar los datos: Realizar un análisis exploratorio detallado para entender las características y relaciones existentes en los datos.
  3. Elegir el método adecuado: Seleccionar una técnica de reducción de dimensionalidad (como PCA, t-SNE o UMAP) basada en el tipo y la cantidad de datos.
  4. Entender la interpretación: Verificar que las nuevas características generadas sean significativas para el problema en cuestión.
  5. Validar el modelo: Usar conjuntos de prueba externos para evaluar el rendimiento del modelo después de reducir la dimensionalidad.

Cierre: Siguientes pasos

  1. Profundizar en otros algoritmos: Explorar otras técnicas como t-SNE y UMAP, que pueden ser más efectivas para datos no lineales.
  2. Aplicar a proyectos reales: Usar la reducción de dimensionalidad en proyectos de ciencia de datos reales para mejorar el rendimiento del modelo.
  3. Validar sistemáticamente: Realizar validaciones exhaustivas antes de aplicar los modelos de aprendizaje no supervisado en entornos reales.

Con estas herramientas y mejores prácticas, podrás aplicar reducción de dimensionalidad con confianza y eficacia en tus proyectos de ciencia de datos.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).