• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Encuestas: Tamaño de Muestra
    • Lotería: Probabilidad de Ganar
    • Reparto de Escaños (D’Hondt)
    • Tres en Raya con IA
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad
    • Tiendas afiliadas
      • AliExpress
      • Amazon
      • Banggood
      • GeekBuying
      • Lenovo

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • Excel
  • Matlab

Cómo determinar el número de componentes en PCA usando el Criterio de Kaiser

febrero 14, 2025 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 6 minutos

El análisis de componentes principales (PCA, por sus siglas en inglés) es una de las herramientas más populares para reducir la dimensionalidad de los conjuntos de datos. Sin embargo, uno de los mayores desafíos al trabajar con PCA es decidir cuántos componentes principales conservar para capturar la mayor cantidad de información posible sin incluir ruido innecesario. Una estrategia popular para abordar este problema es el Criterio de Kaiser, que se basa en la magnitud de los valores propios (eigenvalues) asociados a los componentes principales. Este método se presenta como una alternativa al criterio de la varianza explicada acumulada, que se exploró en una entrada anterior.

En esta entrada, se explicará en detalle cómo funciona el Criterio de Kaiser, se mostrará un ejemplo práctico utilizando datos reales y se proporcionará una función en Python para automatizar su aplicación.

Tabla de contenidos

  • 1 ¿Qué es el Criterio de Kaiser?
    • 1.1 ¿Por qué funciona el Criterio de Kaiser?
    • 1.2 Limitaciones del Criterio de Kaiser
    • 1.3 ¿Cómo aplicar el Criterio de Kaiser en Scikit-learn?
  • 2 Ejemplo práctico: Conjunto de datos de diabetes
    • 2.1 Paso 1: Carga y preprocesamiento de los datos
    • 2.2 Paso 2: Aplicar PCA y calcular los valores propios
    • 2.3 Paso 3: Seleccionar componentes según el Criterio de Kaiser
    • 2.4 Paso 4: Visualizar los valores propios
  • 3 Función en Python para automatizar el Criterio de Kaiser
  • 4 Conclusión

¿Qué es el Criterio de Kaiser?

El Criterio de Kaiser es una regla sencilla y práctica para decidir cuántos componentes principales conservar en un análisis PCA. Según este criterio, únicamente deben conservarse aquellos componentes cuyos valores propios (eigenvalues) sean mayores que 1. Esto se debe a que un valor propio mayor que 1 indica que el componente explica más varianza que las variables originales estandarizadas, cuya varianza es igual a 1.

En Scikit-learn, este criterio se aplica fácilmente utilizando el atributo explained_variance_ de la clase PCA. Este atributo proporciona los valores propios de la matriz de covarianza o correlación de los datos transformados, que representan la varianza explicada por cada componente principal. Por tanto, explained_variance_ es fundamental para implementar el Criterio de Kaiser de forma rápida y precisa.

Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo
En Analytics Lane
Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo

Publicidad


¿Por qué funciona el Criterio de Kaiser?

Los valores propios son una medida directa de la cantidad de varianza que cada componente principal captura en el espacio transformado. Si un valor propio es mayor que 1, significa que el componente está capturando más información que una variable original estandarizada. Esto lo convierte en un componente valioso para describir las relaciones subyacentes en los datos. Por el contrario, un valor propio menor o igual a 1 sugiere que el componente no aporta suficiente información adicional y puede ser descartado sin pérdida significativa.

Limitaciones del Criterio de Kaiser

Aunque el Criterio de Kaiser es ampliamente utilizado por su simplicidad, presenta algunas limitaciones que deben considerarse:

  • Subestimación o sobreestimación: En conjuntos de datos con muchas variables, el criterio tiende a seleccionar demasiados componentes. Por otro lado, en conjuntos de datos pequeños, puede seleccionar menos componentes de los necesarios.
  • Falta de flexibilidad: Este criterio no tiene en cuenta el contexto específico del análisis o la naturaleza de los datos. En algunos casos, puede ser necesario combinarlo con otros enfoques, como el gráfico de sedimentación (scree plot) o un porcentaje mínimo de varianza explicada acumulada (por ejemplo, entre el 70% y el 90%).

Publicidad


¿Cómo aplicar el Criterio de Kaiser en Scikit-learn?

Para aplicar este criterio en Scikit-learn, los pasos son los siguientes:

  1. Calcular el PCA del conjunto de datos: Ajustamos el modelo PCA a los datos utilizando la clase PCA de Scikit-learn. Esto nos permite calcular los valores propios y la varianza explicada por cada componente.
  2. Seleccionar los componentes principales relevantes: Examinamos el atributo pca.explained_variance_ para identificar los valores propios mayores que 1. Estos valores corresponden a los componentes principales que conservaremos.

Ejemplo práctico: Conjunto de datos de diabetes

Para ilustrar este criterio, utilizaremos el conjunto de datos Diabetes de Scikit-learn. Este conjunto contiene múltiples variables relacionadas con la salud que se usarán para reducir la dimensionalidad del espacio de datos.

Publicidad


Paso 1: Carga y preprocesamiento de los datos

Primero, cargamos los datos y los normalizamos para garantizar que todas las variables contribuyan por igual al análisis.

import numpy as np
import pandas as pd
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_diabetes

# Cargar el conjunto de datos de diabetes
data = load_diabetes()
X = data.data
df = pd.DataFrame(X, columns=data.feature_names)

# Normalizar los datos
scaler = StandardScaler()
X_scaled = scaler.fit_transform(df)

Paso 2: Aplicar PCA y calcular los valores propios

Después de normalizar los datos, aplicamos PCA para calcular los valores propios utilizando el atributo explained_variance_. Estos valores representan cuánta varianza explica cada componente principal.

# Aplicar PCA
pca = PCA()
pca.fit(X_scaled)

# Obtener valores propios
valores_propios = pca.explained_variance_

# Imprimir valores propios
print("Valores propios de los componentes principales:")
print(valores_propios)
Valores propios de los componentes principales:
[4.03333594 1.49570362 1.20870088 0.95764302 0.66368294 0.60408378
0.53778235 0.43466544 0.07849762 0.00858014]

En este ejemplo, observamos que solo las tres primeras componentes tienen valores propios mayores que 1, lo que significa que cumplen con el Criterio de Kaiser.

Publicidad


Paso 3: Seleccionar componentes según el Criterio de Kaiser

Ahora, solamente se tiene que contar el número de valores propios que pasan el criterio. Lo que se puede conseguir fácilmente mediante el uso de la función np.sum.

# Seleccionar componentes con valores propios > 1
componentes_kaiser = np.sum(valores_propios > 1)
print(f"Número de componentes seleccionados según el Criterio de Kaiser: {componentes_kaiser}")
Número de componentes seleccionados según el Criterio de Kaiser: 3

Paso 4: Visualizar los valores propios

Para complementar el análisis, podemos visualizar los valores propios en un gráfico de sedimentación (scree plot). Este gráfico muestra cómo disminuyen los valores propios a medida que aumenta el número de componentes. Añadir una línea horizontal en el valor 1 ayuda a identificar visualmente los componentes que cumplen con el Criterio de Kaiser.

import matplotlib.pyplot as plt

plt.figure(figsize=(8, 5))
plt.plot(range(1, len(valores_propios) + 1), valores_propios, marker='o', linestyle='--', color='b')
plt.axhline(y=1, color='r', linestyle='-')
plt.xlabel('Número de componentes principales')
plt.ylabel('Valores propios (eigenvalues)')
plt.title('Criterio de Kaiser para selección de componentes principales')
plt.grid()
plt.show()
Este gráfico muestra la relación entre los valores propios (eigenvalues) y el número de componentes principales en un análisis PCA. Cada punto representa un componente, y la línea horizontal en y = 1 señala el umbral del Criterio de Kaiser. Solo los componentes con valores propios por encima de esta línea se consideran relevantes según este criterio.
Gráfico de valores propios y número de componentes principales. La línea horizontal indica el umbral del Criterio de Kaiser (eigenvalue = 1), utilizado para seleccionar los componentes que explican más varianza que una variable original estandarizada.

Publicidad


Función en Python para automatizar el Criterio de Kaiser

La siguiente función en Python permite automatizar el proceso de selección de componentes principales basándose en el Criterio de Kaiser. Solo necesitas pasarle los datos para obtener el número óptimo de componentes.

def seleccionar_componentes_kaiser(X):
    """
    Selecciona el número de componentes principales según el Criterio de Kaiser.

    Parámetros:
        X (array-like): Datos de entrada (normalizados).

    Devuelve:
        int: Número de componentes principales seleccionados.
    """
    # Normalizar los datos
    scaler = StandardScaler()
    X_scaled = scaler.fit_transform(X)

    # Aplicar PCA
    pca = PCA()
    pca.fit(X_scaled)

    # Obtener valores propios
    valores_propios = pca.explained_variance_

    # Seleccionar componentes con valores propios > 1
    n_componentes = np.sum(valores_propios > 1)

    return n_componentes

Funciones que se pueden aplicar al conjunto de datos de Diabetes para comprobar que funciona correctamente.

# Ejemplo de uso
n_componentes = seleccionar_componentes_kaiser(df)
print(f"Número de componentes seleccionados: {n_componentes}")
Número de componentes seleccionados: 3

Conclusión

El Criterio de Kaiser es una herramienta sencilla y eficaz para determinar el número de componentes principales a conservar en un análisis PCA. Su interpretación clara y su fácil implementación, como se ha demostrado en esta entrada, lo convierten en una opción excelente para reducir la dimensionalidad de conjuntos de datos. Además, como se ha visto, es posible automatizar este proceso utilizando Python.

Aunque el Criterio de Kaiser puede no ser perfecto en todos los casos, es una alternativa válida al enfoque de la varianza explicada acumulada presentado previamente. Considerar ambas estrategias te permitirá tomar decisiones más informadas al analizar tus datos.

Nota: La imagen de este artículo fue generada utilizando un modelo de inteligencia artificial.

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicidad


Publicaciones relacionadas

  • Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo
  • ¿Está concentrado el MSCI World? Un análisis con Gini, Lorenz y leyes de potencia
  • Curiosidad: ¿Por qué usamos p < 0.05? Un umbral que cambió la historia de la ciencia
  • Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)
  • La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento
  • Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows
  • Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte
  • Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)
  • Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

Publicado en: Ciencia de datos Etiquetado como: Machine learning, PCA

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

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

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

octubre 23, 2025 Por Daniel Rodríguez

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

octubre 21, 2025 Por Daniel Rodríguez

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

octubre 16, 2025 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Método del codo (Elbow method) para seleccionar el número óptimo de clústeres en K-means publicado el junio 9, 2023 | en Ciencia de datos
  • Diferencias entre CPU, GPU, TPU y NPU publicado el abril 19, 2023 | en Herramientas
  • Cuatro libros para aprender Pandas publicado el marzo 31, 2023 | en Reseñas
  • El método de Muller e implementación en Python publicado el marzo 24, 2023 | en Ciencia de datos
  • pandas Pandas: Encontrar la posición y valores de máximos y mínimos en un DataFrame publicado el junio 21, 2021 | en Python

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.5 (10)

Diferencias entre var y let en JavaScript

Publicidad

Comentarios recientes

  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • CARLOS ARETURO BELLO CACERES en Justicio: La herramienta gratuita de IA para consultas legales
  • Piera en Ecuaciones multilínea en Markdown
  • Daniel Rodríguez en Tutorial de Mypy para Principiantes

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2025 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto