¿Cómo realizar ingeniería de características en características desconocidas?


19

Estoy participando en una competencia de kaggle. El conjunto de datos tiene alrededor de 100 características y todas son desconocidas (en términos de lo que realmente representan). Básicamente son solo números.

La gente está realizando una gran cantidad de ingeniería de características en estas características. Me pregunto cómo exactamente uno puede realizar ingeniería de características en características que son desconocidas. ¿Alguien puede ayudarme a comprender esto y algunos consejos sobre cómo puedo realizar la ingeniería de características en características desconocidas?

Respuestas:


19

No necesita conocimiento de dominio (el conocimiento de lo que significan sus datos ) para realizar ingeniería de características (encontrar formas más expresivas de enmarcar sus datos).


Como explicó Tu N. , puede encontrar combinaciones de funciones "rápidas y sucias" que podrían ser útiles con bastante facilidad. Dada una salida y una característica individual , puede tomar las siguientes transformaciones, . Una comprobación rápida de la utilidad de la transformación es si la correlación entre es mayor que la correlación entre .yXX{miX,Iniciar sesión(X),X2,X3,tanh(X)}{y,X}{y,X}

Advertencia sobre la correlación: la correlación no muestra todo y, según el modelo que esté utilizando (altamente no lineal, como NN o RF) y la interacción con otras variables, un cambio en la correlación podría no significar nada.

Sin embargo, si está utilizando un modelo lineal simple como la regresión logística, es un buen indicador de rendimiento. Sin embargo, la mejor manera de evaluar dicha transformación, como lo señaló Fokhruz Zaman , sería construir un modelo con y sin su función transformada, y ver cómo evoluciona el error de validación (en sus pliegues de Validación cruzada).

Es bastante fácil detectar transformaciones de una sola característica de esta manera. Esos se aplican a muchos datos, donde una relación más expresiva entre su entrada y salida podría estar en una escala diferente. Por ejemplo, la relación entre Ingresos y "Felicidad" parece ser logarítmica, pero nunca registraría el registro de los ingresos de un participante directamente.


Encontrar combinaciones de características es más difícil. Para empezar, si desea probar cada adición de 2 características, y tiene características , tiene un orden de transformaciones para probar. Para encontrar tales transformaciones, puede aplicar un modelo no lineal (como NN o RF) al problema e intentar ver qué es lo que está aprendiendo. Si puede identificar lo que está haciendo una capa intermedia en un NN, puede calcular previamente su resultado y agregarlo como una nueva característica. No necesitará calcularlo nuevamente, y probablemente intentará aprender algo nuevo.rere2

Puede ser difícil interpretar la representación interna de un NN, o incluso interpretar la importancia de la característica en un bosque aleatorio. Un método más fácil, y probablemente más adecuado para este propósito, sería impulsar con árboles de decisión. Hay muchas bibliotecas que implementan Boosting, y si estás en la competencia de Kaggle como parece implicar tu publicación, muchos participantes usan XGBoost , por lo que puedes encontrar ayuda / tutoriales sobre lo que voy a describir.

Primero, ejecute su algoritmo de refuerzo utilizando solo tocones , árboles de decisión de 1 nivel. Los tocones son muy débiles, pero Boosting lo convierte en un modelo razonable. Esto actuará como su línea de base. Dependiendo de la biblioteca que esté utilizando, debería poder visualizar con bastante facilidad cuáles son las características más utilizadas, y debería trazarlas contra la respuesta (o hacer un histograma si la respuesta es categórica) para identificar algún patrón. Esto podría darle una intuición sobre lo que sería una buena transformación de una sola característica.

A continuación, ejecute el algoritmo Boosting con árboles de decisión de 2 niveles. Este modelo es mucho más complejo que el anterior; Si dos variables tomadas juntas tienen más poder que el tomado individualmente, este modelo debería superar al anterior (de nuevo, no en términos de error de entrenamiento, ¡sino en el error de validación!). En base a esto, debería poder extraer qué variables se usan a menudo juntas, y esto debería llevarlo a posibles transformaciones de funciones múltiples.


En material relacionado, recomendaría los siguientes videos, ya que son fáciles de seguir.


4

Puede tomar diferentes combinaciones de características, como la suma de características: feat_1 + feat_2 + feat_3... o producto de ellas. O puede transformar entidades por registro, o exponencial, sigmoide ... o incluso discretizar la función numérica en una categórica. Es un espacio infinito para explorar.

Cualquier combinación o transformación que aumente su rendimiento de validación cruzada o conjunto de pruebas, entonces debe usarla.


2
Tendría un pequeño problema con "Cualquier combinación o transformación que aumente su rendimiento de validación cruzada o conjunto de pruebas, entonces debería usarla". Probar cosas ciegamente hasta que algo mejore su métrica de rendimiento podría resultar en descubrir una relación que no tiene sentido y causa un sobreajuste. Esto realmente podría perjudicar el rendimiento en nuevas observaciones en el futuro.
Hersheezy

1

¿Podría explicar más con ejemplos específicos sobre su siguiente declaración?

The dataset has around 100 features and all are unknown (in terms of what actually they represent). Basically they are just numbers.

¡No estoy seguro de cómo puedes hacer Ingeniería de Características sin un buen conocimiento de tu Conjunto de Datos y los atributos dados!

Los datos tabulares se describen en términos de observaciones o instancias (filas) que se componen de variables o atributos (columnas). Un atributo podría ser una característica.

"La idea de una característica, separada de un atributo, tiene más sentido en el contexto de un problema. Una característica es un atributo que es útil o significativo para su problema. Es una parte importante de una observación para aprender sobre la estructura de el problema que se está modelando ... ... ...

En la visión por computadora, una imagen es una observación, pero una característica podría ser una línea en la imagen.

En el procesamiento del lenguaje natural, un documento o un tweet podría ser una observación, y un recuento de palabras o frases podría ser una característica.

En el reconocimiento de voz, un enunciado podría ser una observación, pero una característica podría ser una sola palabra o fonema. "

Visite la siguiente URL para obtener más información:

Descubra la ingeniería de características, cómo diseñar características y cómo obtener buenos resultados


Los atributos en el caso del OP se han anonimizado hasta el punto en que no se puede utilizar el conocimiento del dominio. Esto es bastante común en las competiciones de Kaggle, pero aún son posibles formas limitadas de ingeniería de características. Por lo general, las nuevas características se crean de forma masiva y luego se prueban, en lugar de utilizar el conocimiento del tema para guiar su generación. Un ejemplo: kaggle.com/c/bnp-paribas-cardif-claims-management/data
Neil Slater

Como dijo Neil, las características son anónimas, eso es lo que quiero decir de mi declaración.
user2409011
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.