¿La ingeniería de características sigue siendo útil cuando se usa XGBoost?


9

Estaba leyendo el material relacionado con XGBoost. Parece que este método no requiere ninguna escala variable ya que se basa en árboles y este puede capturar patrones complejos de no linealidad, interacciones. Y puede manejar variables numéricas y categóricas y también parece que las variables redundantes no afectan demasiado este método.

Por lo general, en el modelado predictivo, puede hacer una selección entre todas las funciones que tiene y también puede crear algunas funciones nuevas a partir del conjunto de funciones que tiene. Por lo tanto, seleccionar un subconjunto de características significa que cree que hay cierta redundancia en su conjunto de características; crear algunas características nuevas a partir del conjunto de características actual significa que realiza algunas transformaciones funcionales en sus características actuales. Entonces, estos dos puntos deben cubrirse en XGBoost. Entonces, ¿significa que para usar XGBoost, solo necesita elegir sabiamente esos parámetros de ajuste? ¿Cuál es el valor de hacer ingeniería de características usando XGBoost?


Si busca una pequeña mejora en el rendimiento, es mejor modelar las interacciones entre las características explícitamente porque los árboles no son buenos: stats.stackexchange.com/questions/147594/…
Anton Tarasenko

Respuestas:


12

Definamos primero la Ingeniería de características:

  1. Selección de características
  2. Extracción de características
  3. Agregar funciones a través de la experiencia de dominio

XGBoost hace (1) por ti. XGBoost no hace (2) / (3) por ti.

Así que todavía tienes que hacer ingeniería de características tú mismo. Solo un modelo de aprendizaje profundo podría reemplazar la extracción de características por usted.


7
  1. Selección de funciones: XGBoost realiza la selección de funciones hasta un nivel. En mi experiencia, siempre selecciono las funciones mediante una ronda de xgboost con parámetros diferentes a los que uso para el modelo final. Normalmente uso números bajos para el muestreo de filas y características, y árboles que no son profundos y solo mantienen las características que ingresan al modelo. Luego, sintonice con otro modelo. Esto evitó el sobreajuste para mí cuando la cantidad de características era muy alta.
  2. Generación de características: XGBoost (clasificación, refuerzo = gbtree) utiliza métodos basados ​​en árboles. Esto significa que el modelo tendría dificultades en las relaciones de picking como AB , A / B y A + B para las características de una y b . Por lo general, agrego la interacción entre características a mano o selecciono las correctas con algunas heurísticas. Dependiendo de la aplicación, esto realmente puede aumentar el rendimiento.

2

¿Cuál es el valor de hacer ingeniería de características usando XGBoost?

Rendimiento tal vez?

(Tenga en cuenta que no usamos XGBoost, sino otra biblioteca de aumento de gradiente, aunque el rendimiento de XGBoost probablemente también depende de alguna manera de la dimensionalidad de los datos).

Tenemos un conjunto de datos donde cada elemento consta de 3 señales, cada una de 6000 muestras de largo, es decir, 18k características. El uso de estas funciones directamente lleva años (días), por lo que realizamos una ingeniería manual de funciones para reducir el número de funciones a aproximadamente 200. Ahora la capacitación (incluida la optimización de parámetros) es cuestión de unas pocas horas.

A modo de comparación: hace poco tiempo también comenzamos a entrenar ConvNets con los mismos datos y las características completas de 18k (sin ingeniería de características). Alcanzan la misma precisión que los modelos de aumento de gradiente después de solo 2 horas de entrenamiento.


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.