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?
machine-learning
feature-engineering
Matthieu Veron
fuente
fuente
Respuestas:
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 > 0X y z= x y z> 0
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.
fuente
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.
fuente
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.
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 2x1 x2 y=x0+c1x1+c2x2 y=x0+c1x21+c2x22
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.
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.
fuente