¿Vale la pena probar PCA en sus datos antes de alimentar a SVM?

Esta respuesta puede ser algo tangencial a la pregunta en cuestión porque el uso de PCA fue secundario (después de la aplicación de un algoritmo de clasificación de características para reducir la dimensionalidad del conjunto de datos) antes de la clasificación con un SVM.

Trabajé en un proyecto de clasificación de imágenes el año pasado que usó un enfoque SVM de uno contra todos para clasificar imágenes de arte por temas con cuatro etiquetas de clase. Tuve cierto éxito al usar PCA como métrica para clasificar las características antes de la clasificación. Primero se usó un algoritmo de clasificación de características para reducir la cantidad de características para cada par de clases y luego se usó PCA para ayudar a fusionar las principales “mejores” características de todas las clasificaciones antes de la clasificación. Experimenté con una serie de diferentes características bien conocidas utilizadas en el reconocimiento de escenas y la clasificación de imágenes. También combiné vectores de características que demostraron ser complementarios. Los vectores de características sin procesar que resultaron de esto fueron bastante grandes (> 10K elementos de características en algunos casos) que creo que conducen a una variación mayor a la deseada durante el tren / prueba.

En un esfuerzo por minimizar la varianza y el error de prueba, me cansé de usar un algoritmo de clasificación de características para reducir la cantidad de características para cada uno de los 6 pares de clases. Cada par de clases resultó en una clasificación de características diferente y necesitaba una forma de fusionar colectivamente las características clasificadas N principales de las 6 listas clasificadas. Una combinación uniforme es un enfoque, pero elegí probar y usar PCA como base para derivar una métrica simple que podría usarse para seleccionar un conjunto “mejor” de las principales características de N de todas las listas clasificadas. Utilicé 20 PC para el ranking, pero menos parecían funcionar igual de bien. La siguiente gráfica muestra el atractivo intuitivo para las dos primeras PC. Por ejemplo, la proximidad de las dos etiquetas de clase (“Naturaleza muerta” y “Gente”) aumenta el énfasis para esas etiquetas al seleccionar el conjunto final de N características en todas las etiquetas de clase. Por otro lado, para “Personas” y “Paisajes marinos”, la separabilidad en el espacio de la PC es más clara y, por lo tanto, se dio menos énfasis a esas clasificaciones de características basadas en la métrica derivada de la PCA.

Al final, no estoy seguro de cuánto beneficio tendría esto con otros conjuntos de datos. El resultado final fue una varianza reducida y una reducción de aproximadamente el 1-2% en el error de prueba sobre la clasificación uniforme (sin embargo, la precisión de la clasificación ya era bastante alta ~ 90%).

Si … y no 😉

PCA ayuda a reducir el número de dimensiones interesadas en el espacio de datos. Pero, al mismo tiempo, puede afectar el rendimiento de su módulo SVM al cambiar drásticamente el espacio de datos. Como puede estar ignorando las dimensiones con menor varianza / información, la PCA tiene pérdidas. Esto puede ser peligroso si se aplica a ciegas sin el conocimiento de los datos. No he encontrado ninguna base teórica / prueba / teorema / axioma sobre la cual uno pueda decidir cuándo y cuándo no usar PCA. La regla del pulgar es que use PCA. Ejecute su SVM en datos PCA-ed y no PCA-ed. Compare el equilibrio entre precisión y rendimiento. Haz tu llamada. 🙂

La forma en que PCA causa la reducción de datos es algo diferente de la forma en que el uso de kernel no lineal en SVM aumenta la dimensión del espacio de datos. Intentar encontrar una compensación, una comparación, etc. es en sí mismo, creo, un tema de investigación.

El uso de técnicas de normalización simples, como el escalado de características y la normalización media, a menudo puede dar como resultado una buena precisión en lugar de utilizar PCA con SVM.
A pesar de que PCA puede ayudar a mejorar el poder discriminativo de los clasificadores, creo que esto no va bien con los SVM ya que su cálculo de kernel no es característico.
He trabajado en un par de experimentos SVM, donde PCA no funcionó bien con SVM. Simplemente compartir mi experimento, sino que depende de los datos

A menos que tenga una cantidad prohibitivamente grande de características, recomendaría no hacer una reducción de dimensionalidad de antemano. En la práctica, he encontrado mejores resultados usando las características “en bruto” frente a las características reducidas. Y si sus características individuales tienen un significado teórico, su relación con la tarea de clasificación se perdería u oscurecería con la reducción.

Puede observar la distribución de los valores de Eigen para la matriz de covarianza de sus datos y ver si se vuelven muy pequeños. En general, los SVM son bastante robustos en los casos en que sus datos abarcan un subespacio de la dimensión de características completas. La razón de esto es que el SVM opera en el nivel de muestra (el núcleo se calcula entre muestras) y no en el nivel de característica. Este tipo de cosas puede generar una regresión logística sin regularización.

¿Por qué querrías reducir tus dimensiones antes de alimentarlo a un clasificador no lineal? ¿No le gustaría conservar la no linealidad en los datos para que le ayude a capturar esa no linealidad?

Podría estar equivocado, pero personalmente creo que podría aplicar SVM (núcleo lineal) directamente sin hacer PCA si tiene problemas de escala. He leído en alguna parte que cuando tienes núcleos lineales de datos de dimensiones excepcionalmente altas no funcionan tan mal como crees.

También tenga en cuenta: PCA destruye sus datos (sus datos pierden su significado)

En general, no. Cuando los conjuntos de datos y / o conjuntos de características se vuelven muy grandes, siempre he descubierto que el descenso de gradiente estocástico hace que el tiempo de cálculo sea razonable para SVM y todavía funciona muy bien. A menos que tenga toneladas de funciones duplicadas, PCA simplemente destruirá sus datos.

Supongo que siempre ayuda a visualizar características multidimensionales trazando primero algunos componentes principales (PC). Puede ver cómo las observaciones se distribuyen a lo largo de los ejes más variables, pero tenga en cuenta que esta variación podría no explicar la variabilidad en las variables de resultado (o etiquetas). Es por eso que hay algo llamado supervisar PCA (página en stanford.edu). Lo que se sugiere en la pregunta es similar, ya que trata de forzar a la PC importante entre las características para explicar el resultado

More Interesting

¿Cuál es la mejor biblioteca SVM utilizable desde Python?

Después de dominar el aprendizaje profundo, ¿es posible conseguir un trabajo en aprendizaje automático?

¿Cuáles son las ventajas y desventajas de usar R vs. C ++ para el aprendizaje automático?

Me gustaría trabajar en Apple como ingeniero de Machine Learning. Sé un poco de Python y R, ¿cómo me distingo de otros candidatos?

¿Cuál es el tamaño de equipo típico para un proyecto de aprendizaje automático?

¿Qué significa el término difusión en bibliotecas numéricas con matrices como MATLAB, Numpy o TensorFlow?

¿Cuáles son las áreas más activas de investigación de aprendizaje automático para la aplicación de datos tabulares? Mis datos están en forma de CSV con unos pocos miles de instancias.

¿Qué sucede cuando las computadoras aprenden a componer música mejor que los humanos?

Cómo elegir un optimizador para mi modelo de tensorflow

¿Cómo podría usarse el aprendizaje automático para ayudar a las personas enfermas en los países del tercer mundo?

Si las redes neuronales son opacas y poco entendidas, ¿cómo pueden los ingenieros mejorar aún más el modelo de aprendizaje automático?

Soy doctora en ingeniería informática con experiencia en aprendizaje automático y optimización bayesiana. Me encantaría evolucionar mi investigación hacia la mecánica estadística y la biofísica. ¿Cómo podría lograr eso? ¿Qué colaboraciones vale la pena buscar?

¿Cuál es la diferencia entre un modelo paramétrico y un modelo no paramétrico?

¿Cómo puede ser posible la IA si las máquinas se limitan a la lógica y el lenguaje?

¿Cuáles son las ventajas y desventajas de tener mi propio servidor en la nube?