Como señalan otras respuestas, depende del conjunto de datos. Pero, en general, mi consejo sería que nunca use PCA para reducir la dimensionalidad . No entiendo por qué es tan popular (¿probablemente se enseñe en algunos de los famosos cursos en línea de ciencia de datos?). Raramente vería que los principales científicos de datos lo usen. Nunca lo ves en las soluciones ganadoras de las competencias de Kaggle (a veces se usa para diseñar características adicionales pero no para reducir la dimensionalidad).
La razón es simple: desordena los datos. A menudo tiene variables en los datos que contienen fuertes señales predictivas y algunas que no. PCA no puede distinguirlos. Todo lo que hace es reconocer combinaciones lineales de las variables que tienen una alta varianza y combinaciones que no. Esto puede no tener correlación con la variable independiente que se va a predecir. Sus variables malas pueden tener una varianza muy alta, lo que resulta en pesos más altos en los componentes principales. Esto mata el poder predictivo de las variables útiles que tienen poca varianza, ya que se combinan con variables inútiles.
El único lugar donde me sentiría cómodo usando PCA es si todas las variables en el conjunto de datos son generadas por el mismo proceso, tienen la misma distribución (preferiblemente Normal) y tienen un poder predictivo similar. Todavía tengo que encontrar un conjunto de datos que cumpla con todas estas condiciones.
- ¿Cuándo podemos usar la máquina de vectores de soporte básica sobre otros algoritmos de clasificación?
- ¿Por qué alguien usa el hashing cuando el peor tiempo de búsqueda del hashing es O (n) y eso para bbst es logn?
- ¿Cuál ha sido el desarrollo reciente en algoritmos de búsqueda en tiempo real?
- ¿Cuál es la idea central detrás de los algoritmos genéticos?
- Cómo visualizar algunas estructuras de datos básicos y algoritmos
Recomendaría la selección de características sobre PCA cada vez. La eliminación de las malas características mejora el rendimiento y el tiempo de entrenamiento del modelo. Hay dos métodos que uso para esto:
- Eliminación recursiva de características: la idea es entrenar primero un modelo en todas las características, eliminar una característica a la vez y ver cuál ofrece la mejor mejora en las métricas de evaluación. Esto puede llevar mucho tiempo, por lo que las personas generalmente usan modelos simples como la regresión lineal / logística para hacer esto. Scikit-learn tiene una implementación simple para esto en Python sklearn.feature_selection.RFE – documentación de scikit-learn 0.19.1
- Regularización L1 : construya un modelo lineal (regresión lineal para problemas de regresión y regresión logística para problemas de clasificación) con regularización L1. Observe los coeficientes que el modelo asigna a todas las variables. La regularización de L1 funciona presionando las características malas para que tengan un coeficiente 0, lo que resulta en datos dimensionales significativamente más bajos. Esto debe hacerse con cuidado ya que una constante de regularización fuerte puede matar incluso unas pocas variables útiles además de las útiles. Pruebe diferentes valores para ver cuál da los mejores resultados en el conjunto de datos de validación.