Cómo hacer una selección y clasificación de características adecuadas en datos dispersos de alta dimensión y altamente desequilibrados

Un método que me gusta especialmente para seleccionar características útiles, sin importar la dimensionalidad o la escasez, es utilizar técnicas de aprendizaje y / o extracción de características sin supervisión para aprender las características relevantes .
Si está utilizando un método de clasificación como una red neuronal, por ejemplo, puede ejecutar sus datos a través de un algoritmo de análisis de patrones, recuperar los centroides para sus datos de una clase determinada y usarlo como un punto de inicialización para la red neuronal pesas El punto aquí es evitar estar sujeto a un mínimo local irrelevante durante la optimización de descenso más pronunciado, lo que a su vez le brindará un mejor rendimiento.

Dada la suficiente regularización, la escasez y la falta de equilibrio en realidad pueden funcionar para su beneficio, proporcionando una partición extremadamente general del espacio de características, que puede refinar a medida que obtiene más ejemplos.

En términos de métodos de extracción de características, puede hacer algunas cosas. Dado que usted declara que los datos están “desequilibrados” (que para este caso supongo que son muy variados), tiene la opción de aplicar PCA, LDA o CCA.

PCA , o Análisis de componentes principales le permitirá asignar sus datos a un sistema de coordenadas donde los vectores base representan componentes que tienen la mayor varianza entre ellos. (por ejemplo, el primer componente tiene la mayor varianza, el segundo componente tiene la segunda mayor) Esta es una excelente manera de encontrar la estructura subyacente en los datos que explica la alta varianza entre los ejemplos. Yo mismo no he hecho demasiado con PCA, por lo que mis observaciones empíricas sobre la utilidad de los métodos son algo limitadas, pero como método de reducción de dimensionalidad y selección de características, podría hacer lo que necesita.

LDA , o análisis discriminante lineal es un proceso mediante el cual puede encontrar una combinación lineal que separará linealmente dos o más clases dadas. Sin embargo, si tiene más de dos clases, terminará teniendo que implementar un escenario uno contra todos o usar LDA multiclase para encontrar un subespacio lineal para separar sus clases. Dicho esto, las clases deben ser linealmente separables en el espacio de hipótesis para que esto funcione.

El análisis de correlación canónica o CCA es un proceso que encuentra las similitudes y las variaciones entre dos conjuntos de variables aleatorias. Si tiene datos etiquetados, creo que podría organizarlos por etiqueta, dividirlos en unas pocas secciones y ejecutar CCA con esas secciones por pares para ver qué características son relevantes para cada clase. Nota: Solo estoy postulando aquí, en realidad nunca he hecho esto, pero según lo que CCA está definido para hacer, no estoy seguro de por qué no funcionaría.

Sin embargo, si sus datos tienen una dimensión tan alta, que realizar los cálculos como parte de cualquiera de estos métodos se convierte en un problema demasiado grande, existen otras opciones.

Para datos dimensionales extremadamente altos, puede utilizar Hashing sensible a la localidad o proyección aleatoria.

El Hashing sensible a la localidad es exactamente lo que parece, agrupando los datos por ubicación aproximada de modo que elementos espacialmente similares terminen bajo la misma clave hash.

La proyección aleatoria es un proceso mediante el cual proyecta datos desde una dimensión más alta a una dimensión considerablemente más baja mediante alguna matriz de proyección aleatoria. La preservación de las distancias por pares entre ejemplos está directamente relacionada con qué tan baja de una dimensión proyecta. Como tal, termina siendo una compensación entre la dimensión de salida y qué tan bien se preservan las diferencias entre los ejemplos.

Para continuar con eso, como con cualquier técnica de reducción de dimensionalidad, al menos alguna información se perderá en el proceso en la mayoría de los casos. La clave es encontrar una compensación de tal manera que realmente solo pierda los bits más irrelevantes de los datos.

No sé la naturaleza exacta de los datos con los que está trabajando, ni cuál es su objetivo final (aparte de clasificar algo). Sin embargo, dado lo que dice la pregunta y mi interpretación, así es como comenzaría.

¡Espero que ayude de alguna manera!

Editar:

JQ Veenstra me llamó la atención de que los métodos de kernel no funcionarían por definición en la mayoría de los casos. (con la excepción de unos pocos, tal vez en su caso contraejemplos inexistentes) ¡Mi error! Los métodos de kernel buscan mapear datos desde una dimensión inferior a una dimensión implícita superior (o incluso infinita) de tal manera que en esa dimensión, los datos sean separables por hiperplano lineal. Mi conocimiento de los núcleos aún no es demasiado bueno, ¡así que mis disculpas por eso! Pero bueno, todo es parte del proceso de aprendizaje, ¿verdad? 🙂

Hay dos cosas principales de las que depende: los datos; y el clasificador que está utilizando, que debe elegirse de acuerdo con los datos.

Es muy difícil decir algo sobre los datos porque no los tengo.

Sin embargo, el clasificador que usa puede determinar cómo las características son importantes. ¿Regresión logística? Probablemente alguna medida de correlación, o mejor aún, regularice la regresión (o sea bayesiano). Los bosques, los árboles y los árboles potenciados pueden calcular la importancia variable a su manera (aunque esto no significa necesariamente que una variable que sea importante, por ejemplo, en un bosque aleatorio, sea importante en la regresión logística; las suposiciones que está haciendo son completamente diferente.)

Dado que hay tantos clasificadores diferentes, y el que funcionará mejor depende de los datos … y no tengo los datos … eso es todo lo que puedo decir.

Su situación son datos altamente desequilibrados, de alta dimensión y dispersos. Clasificadores tradicionales como Random Forest, la regresión logística puede o no ser adecuada para este problema. Sin embargo, dado que solicita la selección de funciones, una solución viable es utilizar métodos de selección de funciones sin supervisión. En mi experiencia, los conjuntos de proyección aleatoria pueden ser útiles. Pero también depende de qué clasificador base esté utilizando.

Editar – Respuestas relacionadas

  • La respuesta de Shehroz Khan a ¿Cuáles son los diferentes métodos de selección de características no supervisadas además del análisis de componentes principales (PCA)?
  • La respuesta de Shehroz Khan a ¿Cuáles son algunos métodos para realizar la selección de funciones en el aprendizaje automático?
  • La respuesta de Shehroz Khan a ¿Cuáles son algunos buenos recursos para estudiar la selección de características para el aprendizaje no supervisado?

Una cosa que siempre me pareció útil es usar Random Forest y analizar la importancia variable. Eso siempre me ayudó. Técnicas como PCA pueden funcionar, pero es difícil de escalar para una gran cantidad de datos. No hay sustituto para un buen conocimiento del dominio. Si tiene una gran cantidad de características, ejecutar una medida básica de covarianza ayudará a eliminar las variables altamente correlacionadas.

El muestreo estratificado y la reducción de dimensionalidad son buenos lugares para comenzar.