Actualmente estoy usando XGBoost en un conjunto de datos con 21 características (seleccionadas de la lista de unas 150 características), luego las codifiqué para obtener ~ 98 características. Algunas de estas 98 características son algo redundantes, por ejemplo: una variable (característica) también aparece como B yC .
Mis preguntas son:
- ¿Cómo ( si? ) Manejan los árboles de decisión potenciados la multicolinealidad?
- ¿Cómo afectaría la existencia de multicolinealidad a la predicción si no se maneja?
Por lo que entiendo, el modelo está aprendiendo más de un árbol y la predicción final se basa en algo así como una "suma ponderada" de las predicciones individuales. Entonces, si esto es correcto, los árboles de decisión potenciados deberían poder manejar la codependencia entre variables.
Además, en una nota relacionada: ¿cómo funciona el objeto de importancia variable en XGBoost?
feature-selection
correlation
xgboost
gbm
usuario140323
fuente
fuente
Respuestas:
Los árboles de decisión son por naturaleza inmunes a la multicolinealidad. Por ejemplo, si tiene 2 características que están 99% correlacionadas, al decidir sobre una división, el árbol elegirá solo una de ellas. Otros modelos, como la regresión logística, utilizarían ambas características.
Dado que los árboles potenciados utilizan árboles de decisión individuales, tampoco se ven afectados por la multicolinealidad. Sin embargo, es una buena práctica eliminar cualquier característica redundante de cualquier conjunto de datos utilizado para el entrenamiento, independientemente del algoritmo del modelo. En su caso, ya que está obteniendo nuevas características, puede usar este enfoque, evaluar la importancia de cada característica y conservar solo las mejores características para su modelo final.
La matriz de importancia de un modelo xgboost es en realidad un objeto data.table con la primera columna que enumera los nombres de todas las características realmente utilizadas en los árboles potenciados. La segunda columna es la métrica de ganancia que implica la contribución relativa de la característica correspondiente al modelo calculada tomando la contribución de cada característica para cada árbol en el modelo. Un valor más alto de esta métrica en comparación con otra característica implica que es más importante para generar una predicción.
fuente
Tenía curiosidad sobre esto e hice algunas pruebas.
He entrenado un modelo en el conjunto de datos de diamantes, y he observado que la variable "x" es la más importante para predecir si el precio de un diamante es más alto que cierto umbral. Luego, agregué varias columnas altamente correlacionadas con x, ejecuté el mismo modelo y observé los mismos valores.
Parece que cuando la correlación entre dos columnas es 1, xgboost elimina la columna adicional antes de calcular el modelo, por lo que la importancia no se ve afectada. Sin embargo, cuando agrega una columna que está parcialmente correlacionada con otra, por lo tanto, con un coeficiente más bajo, la importancia de la variable original x disminuye.
Por ejemplo, si agrego una variable xy = x + y, la importancia de x e y disminuye. De manera similar, la importancia de x disminuye si agrego nuevas variables con r = 0.4, 0.5 o 0.6, aunque solo un poco.
Creo que la colinealidad no es un problema para aumentar cuando se calcula la precisión del modelo, porque al árbol de decisión no le importa cuál de las variables se utiliza. Sin embargo, podría afectar la importancia de las variables, porque eliminar una de las dos variables correlacionadas no tiene un gran impacto en la precisión del modelo, dado que la otra contiene información similar.
Evaluar un modelo en los datos de diamantes.
Predecimos si el precio es superior a 400, dadas todas las variables numéricas disponibles (quilate, profundidad, tabla, x, y, x)
Tenga en cuenta que x es la variable más importante, con una puntuación de ganancia de importancia de 0.375954.
Modelo entrenado en diamantes, agregando una variable con r = 1 a x
Aquí agregamos una nueva columna, que sin embargo no agrega ninguna información nueva, ya que está perfectamente correlacionada con x.
Tenga en cuenta que esta nueva variable no está presente en la salida. Parece que xgboost elimina automáticamente las variables perfectamente correlacionadas antes de comenzar el cálculo. La ganancia de importancia de x es la misma, 0.3759.
Modelo entrenado en diamantes, agregando una columna para x + y
Agregamos una nueva columna xy = x + y. Esto está parcialmente correlacionado con x e y.
Tenga en cuenta que la importancia de x e y se reduce ligeramente, pasando de 0.3759 a 0.3592 para x, y de 0.116 a 0.079 para y.
Modelo entrenado en datos de Diamantes, modificado agregando columnas redundantes
Agregamos tres nuevas columnas que están correlacionadas con x (r = 0.4, 0.5 y 0.6) y vemos qué sucede.
Tenga en cuenta que la importancia de x se reduce, cayendo de 0.3759 a 0.279.
fuente
Hay una respuesta de Tianqi Chen (2018).
Para resumir, Xgboost no utiliza aleatoriamente las características correlacionadas en cada árbol, que modelo de bosque aleatorio sufre de tal situación.
Referencia :
Tianqi Chen, Michaël Benesty, Tong He. 2018. "Comprenda su conjunto de datos con Xgboost" . Https://cran.r-project.org/web/packages/xgboost/vignettes/discoverYourData.html#numeric-vs-categorical-variables .
fuente
Una observación sobre la respuesta de Sandeep: suponiendo que 2 de sus funciones sean altamente colineales (digamos igual al 99% del tiempo) De hecho, solo se selecciona 1 función en cada división, pero para la siguiente división, el xgb puede seleccionar la otra función. Por lo tanto, la clasificación de características xgb probablemente clasificará las 2 características colineales por igual. Sin algún conocimiento previo u otro procesamiento de características, casi no tiene medios de esta clasificación proporcionada para detectar que las 2 características son colineales.
Ahora, en cuanto a la importancia relativa que genera el xgboost, debería ser muy similar (o tal vez exactamente similar) a la clasificación del árbol impulsado por el gradiente de sklearn. Ver aquí para explicaciones.
fuente