Fusionar datos escasos y densos en el aprendizaje automático para mejorar el rendimiento

17

Tengo características dispersas que son predictivas, también tengo algunas características densas que también son predictivas. Necesito combinar estas características para mejorar el rendimiento general del clasificador.

Ahora, cuando trato de combinar estos elementos, las características densas tienden a dominar más que las características dispersas, por lo tanto, solo proporcionan un 1% de mejora en el AUC en comparación con el modelo con solo características densas.

¿Alguien ha encontrado problemas similares? Realmente aprecio las entradas, algo atascado. Ya he probado muchos clasificadores diferentes, combinaciones de clasificadores, transformaciones de características y procesamiento con diferentes algoritmos.

Gracias de antemano por la ayuda.

Editar :

Ya he probado las sugerencias que se dan en los comentarios. Lo que he observado es que, para casi el 45% de los datos, las características dispersas funcionan muy bien, obtengo el AUC de alrededor de 0.9 con solo características dispersas, pero para las restantes, las características densas funcionan bien con AUC de alrededor de 0.75. Intenté separar estos conjuntos de datos, pero obtengo el AUC de 0.6, por lo que no puedo simplemente entrenar un modelo y decidir qué características usar.

Con respecto al fragmento de código, he probado tantas cosas que no estoy seguro de qué compartir exactamente :(

Sagar Waghmode
fuente
¿Qué tan escasas son tus características? ¿Están llenos al 1% o incluso menos?
João Almeida
2
También debe tener en cuenta que si sus características son escasas, entonces solo deberían ayudar a clasificar una pequeña parte de su conjunto de datos, lo que significa que, en general, la precisión no debería cambiar significativamente. Esto es una especie de suposición, ya que no sé cuáles son las características de su conjunto de datos.
João Almeida
@ JoãoAlmeida No son tan escasos. Están alrededor del 5% lleno. El problema es cuando miro la diferencia en las predicciones de dos modelos, donde las predicciones difieren, el modelo con características dispersas tiende a funcionar mejor, es por eso que esperaba ver el impulso en AUC también cuando las combiné con características densas . Estoy recibiendo un impulso, pero parece muy bajo.
Sagar Waghmode
hum ... no tengo idea para ti entonces
João Almeida
Me encontré con el mismo problema, tal vez simplemente poner una característica densa y escasa en un solo modelo no es una buena opción. Tal vez puedas probar el modelo ancho y profundo. ancho para características dispersas y profundo para características densas, si probó este método, dígame la respuesta.
Jianye Ji

Respuestas:

6

Esto parece un trabajo para el análisis de componentes principales. En Scikit, PCA está bien implementado y me ayudó muchas veces.

PCA, de cierta manera, combina sus características. Al limitar el número de componentes, obtiene su modelo con datos sin ruido (en el mejor de los casos). Porque su modelo es tan bueno como sus datos.

Considere a continuación un ejemplo simple.

from sklearn.pipeline import Pipeline
pipe_rf = Pipeline([('pca', PCA(n_components=80)),
                    ('clf',RandomForestClassifier(n_estimators=100))])
pipe_rf.fit(X_train_s,y_train_s)

pred = pipe_rf.predict(X_test)

¿Por qué elegí 80? Cuando trazo la varianza acumulativa, obtuve esto a continuación, que me dice que con ~ 80 componentes, alcanzo casi toda la varianza. varianza acumulativa

Así que diría que lo pruebes, úsalo en tus modelos. Debería ayudar

HonzaB
fuente
4

La mejor manera de combinar características es a través de métodos de conjunto. Básicamente hay tres métodos diferentes: ensacado, refuerzo y apilamiento. Puede usar Adabbost aumentado con la selección de características (en este caso, considere características dispersas y densas) o basado en apilamiento (característica aleatoria - subespacio aleatorio). Prefiero la segunda opción: puede entrenar a un conjunto de aprendices básicos (decisiones. Árboles) mediante el uso aleatorio subconjuntos y características aleatorias (mantenga a los alumnos de la base de entrenamiento hasta que cubra todo el conjunto de características) El siguiente paso es probar el conjunto de Entrenamiento para generar los metadatos. Utilice estos metadatos para entrenar un metaclasificador. El metaclasificador determinará qué característica es más importante y qué tipo de relación debe utilizarse

Bashar Haddad
fuente
¿Puedes por favor compartir la documentación relevante? ¿No entendiste exactamente lo que querías decir?
Sagar Waghmode
Puede leer un artículo sobre replanteo "problemas en las técnicas de apilamiento, 1999", lea sobre stackingC. Es muy importante saber que estoy hablando del vector completo (por ejemplo, 1x36 en el caso de Hog) como una característica única, pero no las dimensiones dentro de él. Debe realizar un seguimiento de qué función se utiliza con qué alumno base. Tenga cuidado con el problema del sobreajuste
Bashar Haddad
Si proporciona más detalles sobre la base de datos, el número de clases, el número de muestras, el código, las cosas que ha intentado, las cosas que notó, ¿tiene un problema de desequilibrio de datos, muestras ruidosas, etc.? Todos estos detalles son importantes y pueden ayudar a seleccionar el mejor método. Dame más detalles si esto está bien y puedo ayudarte de una mejor manera
Bashar Haddad
1

Los grupos variables pueden ser multicolineales o la conversión entre disperso y denso puede salir mal. ¿Has pensado en usar un clasificador de votación / clasificación de conjunto? http://scikit-learn.org/stable/modules/ensemble.html De esa forma, podría lidiar con los dos problemas anteriores.

Diego
fuente
Ya he probado las técnicas de conjunto y los clasificadores de votación. Aún no hay suerte.
Sagar Waghmode
Entonces, ¿ves mucha superposición entre las predicciones de los dos conjuntos de datos? Puede ser que de hecho no hay información nueva? Es decir, los datos cuentan la misma historia.
Diego
Sí, he hecho exactamente eso. Aunque las predicciones no son completamente diferentes, el número de muestras donde las predicciones difieren son bastante altas (alrededor del 15-20%) de los datos. Para estas muestras, el modelo con características dispersas funciona mejor que el modelo con características densas. Mi punto es que si las características dispersas funcionan mejor, ¿por qué no son características importantes en ninguno de los modelos que he probado hasta ahora?
Sagar Waghmode
¿Qué algoritmo predictor usas?
Diego
Probé bastantes algoritmos y me decidí por el modelo potenciado por gradiente, también uso bastante los bosques aleatorios para mi problema.
Sagar Waghmode
1

Además de algunas de las sugerencias anteriores, recomendaría usar un enfoque de modelado de dos pasos .

  1. Use las características dispersas primero y desarrolle el mejor modelo.
  2. Calcule la probabilidad predicha de ese modelo.
  3. Alimente esa estimación de probabilidad en el segundo modelo (como una característica de entrada), que incorporaría las características densas. En otras palabras, use todas las características densas y la estimación de probabilidad para construir el segundo modelo.
  4. La clasificación final se basará en el segundo modelo.
Vishal
fuente
0

Pruebe PCA solo en funciones dispersas y combine la salida de PCA con características densas.

Por lo tanto, obtendrá un conjunto denso de características (originales) + un conjunto de características denso (que originalmente eran dispersas).

+1 para la pregunta. Por favor actualícenos con los resultados.

Tagar
fuente
Wow, esto realmente ha reducido AUC :( No estoy seguro, lo que significa, necesita verificar la importancia de la característica y todo. Pero mi filosofía es que, de alrededor de 2.3k características dispersas, utilicé características de 1k que explicaban la relación de varianza de 0.97, esta pérdida de información puede haber reducido las AUC.
Sagar Waghmode
Interesante. Gracias por compartir. Tenemos un conjunto de datos muy similar al suyo (características dispersas de 1k-2k). Solo por curiosidad, ¿cuántos componentes principales ha generado? Si ese número es demasiado bajo, esto puede explicar por qué AUC bajó.
Tagar
Como ya dije, he generado 1k componentes principales que explicaban la variación de 0.97.
Sagar Waghmode