Cómo atacar un problema de aprendizaje automático con una gran cantidad de funciones

Shehroz Khan dio una gran respuesta, pero tiendo a pensar en esta pregunta en términos más simples.

¿Tienes la intuición de que muchas de estas variables son importantes?

En caso afirmativo , utilice una técnica de extracción de características para proyectarlos en un espacio de dimensiones más bajas para una mejor eficiencia de entrenamiento.

Las técnicas de extracción de características tienen diferentes fortalezas y debilidades. Aquí hay un resumen que di en una charla reciente:

Si no (es decir, tiene la intuición de que no son importantes muchas variables), no realice la extracción de características.

En este caso, la extracción de características daría como resultado que la señal en las variables importantes se diluya con el ruido de las variables sin importancia. Así que simplemente alimente todas las variables originales en una técnica de selección. Tenga en cuenta que los métodos como la regresión paso a paso o LASSO requerirán mucho tiempo para una gran cantidad de variables. Para una gran cantidad de variables, sugeriría una simple correlación de Pearson o una detección de chi-cuadrado de cada variable de entrada original contra el objetivo (variable dependiente). Para otro método de detección realmente ingenioso, vea la opción PANTALLA aquí:
https://support.sas.com/document…

Si no tiene una intuición de ninguna manera , debe probar ambos enfoques y ver cuál ofrece el mejor modelo en datos de reserva.

¿Quieres las ventajas de ambos enfoques? Use un enfoque de correlación o de detección de chi-cuadrado para seleccionar las variables originales con la relación más obvia con el objetivo (variable dependiente), luego use una técnica de extracción de características en las variables originales restantes. Combine las variables originales obviamente importantes seleccionadas con las características extraídas para crear el nuevo conjunto de variables de entrada para su modelo.

Depende de la cantidad de características sugeridas por Matthew. Tal vez podría aclarar un poco si su problema es la “maldición de la dimensionalidad” debido a la proporción de número de muestras: número de características o si es más un problema de eficiencia computacional.

Aquí hay algunas opciones:

A) Si está utilizando modelos regularizados, recomendaría la regularización L1 o ElasticNet para poner a cero algunas características.

B) puede probar algoritmos de selección de características (por ejemplo, selección por varianza o búsqueda codiciosa: selección secuencial hacia atrás / adelante, algoritmos genéticos, etc.)

C) Puede comprimir su espacio de características mediante transformación en un subespacio de menor dimensión. Un ejemplo sería PCA como usted mencionó. Pero tenga cuidado, PCA es una técnica de transformación lineal. Para darle un ejemplo simple de por qué esto puede ser problemático:

Aquí, tracé un conjunto de datos de círculos concéntricos simples.

Supongamos que las muestras azules pertenecen a una clase, y los círculos rojos pertenecen a una segunda clase. Nuestro objetivo es entrenar un modelo para la clasificación. Además, suponemos que este conjunto de datos tiene demasiadas dimensiones (está bien, aquí solo tenemos 2 características, pero debemos mantenerlo “simple” para fines de visualización). Ahora, queremos comprimir los datos en un subespacio de dimensiones inferiores, aquí: 1 dimensión.

Comencemos con PCA “estándar”. ¿Puedes ver el problema?


Las dos clases ya no son separables …
Usemos kernel PCA …

Esto es mucho mejor, ahora podemos entrenar un clasificador lineal para separar esas dos clases. Sin embargo, el problema es que introducimos un hiperparámetro adicional (gamma) que debe ajustarse. Además, este “truco del kernel” no funciona para ningún conjunto de datos, y también hay muchas más técnicas de aprendizaje simplificadas que son “más potentes” / apropiadas que la PCA del kernel.
Por ejemplo, incrustación localmente lineal (LLE) para desplegar el famoso Swiss Roll:

No hay una respuesta firme, pero ciertas pautas … .PCA puede ser una opción, pero tiene varios inconvenientes como se describe en @Sebastian. Otras posibles estrategias son:

  • Selección de características (una revisión de las técnicas de selección de características en bioinformática). La idea general es usar las características más importantes que son útiles (basadas en algunos criterios) para el propósito de clasificación. La mayoría de los paquetes como Weka, MATLAB, scikit-learn, etc. admiten diferentes métodos de selección de funciones.
  • Subespacio aleatorio (El método de subespacio aleatorio para construir bosques de decisión). La idea general es elegir aleatoriamente diferentes características y entrenar diferentes clasificadores y usar un enfoque de conjunto para combinar sus decisiones. Básicamente, en lugar de todas las características, está tomando un subespacio de muestra con la esperanza de que los subespacios defectuosos se cancelen eventualmente. El popular enfoque Random Forest básicamente combina el subespacio aleatorio y el embolsado.
  • Proyección aleatoria (página en ime.unicamp.br). Este es un enfoque interesante, similar a PCA, pero requiere muy pocos cálculos y tiene un rendimiento equivalente. La idea general es usar una matriz aleatoria y proyectar la matriz de datos en K dimensiones aleatorias; donde K es el número de dimensiones reducidas. Puede usar una iteración o aprender varios clasificadores y usar el enfoque de conjunto.
  • Características del núcleo (conjuntos de árboles de decisión basados ​​en las características del núcleo). Este es un enfoque alternativo para usar núcleos para mejorar el poder de representación de las características mediante el aprendizaje de características no lineales reducidas. Sin embargo, puede haber ciertos parámetros del núcleo que deben ajustarse.
  • Características profundas (página en mit.edu). Como su nombre lo indica, puede probar técnicas de aprendizaje profundo como ConvNet, Autoencoders, etc. para reducir la cantidad de funciones en diferentes capas de abstracción. Pero normalmente funcionan bien con datos sin procesar, por ejemplo, imágenes sin procesar o datos sin procesar del sensor. Si ya ha calculado las características, ¿qué tan útiles son estos enfoques? No lo sé.

Advertencia:
La elección del clasificador ML también es importante Sin embargo, siempre comience con los modelos más simples, por ejemplo, árboles de decisión, naive bayes, etc. para que pueda saber qué está pasando. Pasar a modelos complejos sin saber mucho sobre ello, por ejemplo, redes convolucionales, SVM, etc. puede atascarte.

Definitivamente lea la respuesta de Shehroz y Patrick si desea una respuesta detallada. En realidad, estoy abordando este problema ahora mismo para aprender de las huellas dactilares químicas que son de naturaleza escasa.

Ahora depende de si estas características son en su mayoría escasas o densas.

Puede encontrar la documentación de selección de funciones de scikit-learn muy útil. 1.13. Selección de características

El primer paso podría ser eliminar características con baja varianza (sklearn.feature_selection.VarianceThreshold – documentación de scikit-learn 0.17.1). Ahora, dependiendo de la cantidad de filas restantes que tenga en este momento, puede ver otras técnicas. Mira el manual de scikit-learn sobre esto.

Nota: También depende de cuántas filas tengas. Si tiene cien mil o un millón de filas, 10,000 filas no es tan alto en comparación con si tiene <1000 filas. Preferiblemente, te gustaría, no. de filas a no. de relación de columnas para ser al menos más de 1 (idealmente 5–10).

Depende de cómo se relacionan las características entre sí.

Si no son linealmente independientes, entonces sí, PCA es probablemente una buena idea.

Si están correlacionados espacialmente (píxeles de una imagen), puede probar métodos de aprendizaje automático que le permitan restringir la conectividad de bajo nivel (por ejemplo, redes neuronales convolucionales) para evitar el sobreajuste.

Si todos son datos verdaderamente independientes, entonces si tiene suficientes ejemplos de capacitación para evitar el sobreajuste en tantas funciones, puede alimentarlos directamente.

Yo diría que la pregunta no tiene sentido, porque hay un mapeo 1: 1 entre espacios de baja dimensión y espacios de alta dimensión.

Para responder realmente a la pregunta, necesitamos saber cómo se ven las características, lo que generalmente significa discutir el problema específico.