Utilidad de la ingeniería de características: ¿Por qué crear nuevas características basadas en características existentes?


30

A menudo veo que las personas crean nuevas funciones basadas en las funciones existentes en un problema de aprendizaje automático. Por ejemplo, aquí: https://triangleinequality.wordpress.com/2013/09/08/basic-feature-engineering-with-the-titanic-data/ las personas han considerado el tamaño de la familia de una persona como una nueva característica, basada sobre el número de hermanos, hermanas y padres, que eran características existentes.

Pero, ¿qué sentido tiene esto? No entiendo por qué es útil la creación de nuevas funciones correlacionadas. ¿No es el trabajo del algoritmo hacerlo solo?


Respuestas:


30

El ejemplo más simple utilizado para ilustrar esto, es el problema XOR (ver imagen a continuación). Imagine que se le dan datos que contienen coordenadas e coordinados y la clase binaria para predecir. Podría esperar que su algoritmo de aprendizaje automático descubra el límite de decisión correcto por sí mismo, pero si generó la característica adicional , entonces el problema se vuelve trivial ya que le da un criterio de decisión casi perfecto para la clasificación y usted usó aritmética simple !y z = x y z > 0xyz=xyz>0

Problema XOR

Entonces, si bien en muchos casos puede esperar que el algoritmo encuentre la solución, alternativamente, mediante la ingeniería de características, podría simplificar el problema. Los problemas simples son más fáciles y rápidos de resolver, y necesitan algoritmos menos complicados. Los algoritmos simples a menudo son más robustos, los resultados son a menudo más interpretables, son más escalables (menos recursos computacionales, tiempo de entrenamiento, etc.) y portátiles. Puede encontrar más ejemplos y explicaciones en la maravillosa charla de Vincent D. Warmerdam, dada en la conferencia PyData en Londres .

Además, no creas todo lo que te dicen los vendedores de aprendizaje automático. En la mayoría de los casos, los algoritmos no "aprenderán solos". Por lo general, tiene un tiempo, recursos, potencia computacional limitados y los datos generalmente tienen un tamaño limitado y son ruidosos, nada de esto ayuda.

Llevando esto al extremo, podría proporcionar sus datos como fotos de notas escritas a mano del resultado del experimento y pasarlas a una red neuronal complicada. Primero aprendería a reconocer los datos en las imágenes, luego aprendería a comprenderlos y a hacer predicciones. Para hacerlo, necesitaría una computadora poderosa y mucho tiempo para entrenar y ajustar el modelo y necesitaría grandes cantidades de datos debido al uso de redes neuronales complicadas. Proporcionar los datos en formato legible por computadora (como tablas de números) simplifica enormemente el problema, ya que no necesita todo el reconocimiento de caracteres. Puede pensar en la ingeniería de características como el siguiente paso, donde transforma los datos de tal manera para crear significativoscaracterísticas, por lo que su algoritmo tiene aún menos que resolver por sí mismo. Para dar una analogía, es como si quisieras leer un libro en un idioma extranjero, por lo que primero necesitas aprender el idioma, en lugar de leerlo traducido en el idioma que entiendes.

En el ejemplo de datos del Titanic, su algoritmo necesitaría descubrir que sumar miembros de la familia tiene sentido, para obtener la función "tamaño de la familia" (sí, la estoy personalizando aquí). Esta es una característica obvia para un humano, pero no es obvio si ve los datos como solo algunas columnas de los números. Si no sabe qué columnas son significativas cuando se consideran junto con otras columnas, el algoritmo podría resolverlo probando cada combinación posible de dichas columnas. Claro, tenemos formas inteligentes de hacer esto, pero aún así, es mucho más fácil si la información se proporciona al algoritmo de inmediato.


¡Gracias, está muy bien explicado y es muy interesante!
Matthieu Veron

Su respuesta me parece muy buena, pero creo que es mejor calificarla un poco. Específicamente, creo que la ingeniería de características en términos de términos de interacción no simplifica demasiado las cosas para algoritmos como los RF (aunque todavía puede ayudar) ya que los RF capturan los términos de interacción en cierta medida por sí mismos. Avísame si me falta algo importante. Pero sí, en general, la ingeniería de características simplifica y ayuda mucho las cosas.
Poete Maudit

@PoeteMaudit es cierto que el árbol de decisión (y, por lo tanto, RF) modela una gran interacción, pero es un cierto tipo de interacciones, no todas las posibles. Además, la ingeniería de características no se trata solo de interacciones.
Tim

Seguramente estoy de acuerdo con tus puntos. En primer lugar, que los RF modelan un cierto tipo de interacciones (¿te refieres principalmente a x * y?). En segundo lugar, esa ingeniería de características ciertamente no se trata solo de interacciones.
Poete Maudit

14

Bueno, si planea usar un clasificador lineal simple, tiene mucho sentido generar nuevas características que sean una función no lineal de las existentes, especialmente si su conocimiento del dominio indica que la característica resultante será significativa e informativa. Tenga en cuenta que un clasificador lineal no puede considerar esas características complejas a menos que las proporcione explícitamente.

Idealmente, si utiliza un algoritmo de clasificación no lineal suficientemente potente, debería ser capaz de crear un límite de decisión que considere transformaciones no lineales arbitrarias de las características de entrada si son informativas para la clasificación. Sin embargo, en la práctica, la mayoría de los clasificadores no lineales solo observan algún tipo de transformaciones. Por ejemplo, un SVM de núcleo polinómico considerará las interacciones polinómicas entre características, pero tal vez se pueda crear una característica más informativa aplicando otros tipos de transformaciones ...

En resumen, si el conocimiento del dominio indica que una combinación de características no lineal hecha a mano podría ser informativa, tiene sentido agregar eso al conjunto de características existente.


Vale, entiendo ! Pero, ¿cómo puedo saber si mis características que creé son significativas e informativas? Quiero decir, los problemas pueden tener explicaciones contra-intuitivas. Por lo que entiendo, crear características es una forma de dirigir el algoritmo en una dirección, para ahorrar tiempo en sus predicciones. Entonces, de algunas maneras, estamos influyendo en el algoritmo. ¿Cómo verificar que influimos correctamente?
Matthieu Veron

2
Bueno, ahí es donde entra el conocimiento del dominio. Por ejemplo, si está diseñando un sistema de diagnóstico médico, puede hablar con los médicos y preguntarles qué información utilizan para diagnosticar a un paciente. Por ejemplo, si un médico dice "Si el paciente tiene fiebre y dolor de cabeza, es probable que tenga gripe". Esa oración podría indicar que incluir una nueva característica de indicador que indique la presencia de fiebre y dolores de cabeza podría ser una buena idea (especialmente si usa un clasificador lineal, que no puede "ver" las características de interacción polinomiales por sí mismo).
Daniel López

1
Sin embargo, esto es más un arte que una ciencia. Al final, debe validar la efectividad de sus características hechas a mano probando sus modelos en un conjunto de prueba con un protocolo experimental imparcial ...
Daniel López

3

Es cierto que algunos de los modelos de aprendizaje automático tienen la capacidad de manejar la no linealidad y la interacción entre variables, sin embargo, depende de la situación, veo tres razones por las que se hace necesario.

  1. Algunos modelos como la regresión lineal no manejan la no linealidad automáticamente, en ese caso, debe crear características adicionales para ayudar. Por ejemplo a continuación: si tiene el siguiente conjunto de datos en el que todas las de la variable objetivo se agrupan en el centro de un círculo como área.Y=1

Límite del círculo

Si solo tiene dos funciones, y . Un modelo lineal simple de no encontrará ninguna forma de clasificar la variable objetivo. Entonces, en cambio, necesita nuevas características cuárticas para capturar la no linealidad: .x 2 y = x 0 + c 1 x 1 + c 2 x 2 y = x 0 + c 1 x 2 1 + c 2 x 2 2x1x2y=x0+c1x1+c2x2y=x0+c1x12+c2x22

  1. Si sabe de antemano que algunas características (por experiencia o conocimiento empresarial), puede ayudar a crearlas para acelerar el tiempo de ejecución del modelo y facilitar su modelo. Por ejemplo, en su ejemplo de los datos del Titanic y si está utilizando un modelo de clasificación de árbol de decisión. Si sabe que las ancianas (edad y género) tienen más probabilidades de sobrevivir, al crear una única característica que captura la información, su árbol puede dividir una en la nueva variable en lugar de dividir dos en las dos variables. Puede acelerar el tiempo de cálculo si sabe de antemano que la función es importante.

  2. En el mundo real, no obtendrá un solo conjunto de datos como el que ofrece Kaggle. En cambio, obtienes información de todo el lugar. Por ejemplo, si desea predecir el abandono del cliente para una empresa minorista en línea como Amazon, tiene información demográfica del cliente, información de la transacción de compra. Necesita generar muchas características de diferentes fuentes, en este caso, encontrará que se pueden obtener / agregar muchas características útiles desde el nivel de transacción. Como lo expresa Andrew Ng: a menudo, la capacidad de realizar ingeniería de características define el éxito o el fracaso de un proyecto de aprendizaje automático.

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.