Hay muchas publicaciones de blog, videos de YouTube, etc. sobre las ideas de embolsar o impulsar árboles. Mi comprensión general es que el pseudocódigo para cada uno es:
Harpillera:
- Tome N muestras aleatorias de x% de las muestras y y% de las características
- Ajuste su modelo (p. Ej., Árbol de decisión) en cada uno de N
- Predecir con cada N
- Promedio de las predicciones para obtener la predicción final
Impulso:
- Ajuste su modelo (p. Ej., Árbol de decisión) a sus datos
- Obtener los residuos
- Ajuste su modelo a los residuos
- Ir a 2 para N rondas de refuerzo
- La predicción final es una suma ponderada de los predictores secuenciales.
Tomaré cualquier aclaración a mi entender más arriba, pero mi pregunta prevista es la siguiente:
Tanto XGBoost como LightGBM tienen parámetros que permiten el ensacado. La aplicación no es Bagging OR Boosting (que es de lo que habla cada publicación de blog), sino Bagging AND Boosting. ¿Cuál es el pseudocódigo para dónde y cuándo se produce el embolsado y el refuerzo combinados?
Esperaba que fuera "Árboles impulsados embolsados", pero parece que es "Árboles embolsados impulsados". La diferencia parece sustancial.
Árboles impulsados en bolsas:
- Tome N muestras aleatorias de x% de las muestras y y% de las características
- Ajustar árboles potenciados en cada una de las N muestras
- Predecir con cada N
- Promedio de las predicciones para obtener la predicción final
Esta parece ser la mejor manera de hacerlo. Después de todo, el riesgo de aumentar es el sobreajuste y el beneficio principal del embolsado es reducir el sobreajuste; Empacar un montón de modelos potenciados parece una gran idea.
Sin embargo, al mirar, por ejemplo, el scikit-learn
gradient_boosting.py (que hace una muestra de bolsas, pero no una selección aleatoria de características), y juntar algunas pequeñas pepitas en las publicaciones sobre LightGBM y XGBoost, parece que XGBoost y LightGBM funcionan de la siguiente manera:
Árboles en bolsas impulsados:
- Ajuste un árbol de decisión a sus datos
- Para i en N rondas de refuerzo:
- Obtener los residuos
- si modifico bag_frequency == 0 (es decir, saco cada 5 rondas):
- Tome una sola muestra aleatoria de x% de las muestras y y% de las características; usa esta muestra aleatoria en el futuro
- ajustar el árbol a los residuos
- La predicción final es una suma ponderada de los predictores secuenciales.
Corrija mi comprensión aquí y complete los detalles. El árbol embolsado reforzado (con solo 1 árbol aleatorio por frecuencia de bolsa) no parece tan poderoso como el árbol reforzado embolsado.