Existem muitas postagens de blog, vídeos do YouTube etc. sobre as idéias de empacotar ou aumentar árvores. Meu entendimento geral é que o pseudo-código para cada um é:
Ensacamento:
- Coletar N amostras aleatórias de x% das amostras e% de recursos
- Ajuste seu modelo (por exemplo, árvore de decisão) em cada um dos N
- Preveja com cada N
- Faça a média das previsões para obter a previsão final
Impulsionar:
- Ajuste seu modelo (por exemplo, árvore de decisão) aos seus dados
- Obter os resíduos
- Ajuste seu modelo aos resíduos
- Vá para 2 para N rodadas de reforço
- A previsão final é uma soma ponderada dos preditores sequenciais.
Levarei esclarecimentos ao meu entendimento acima, mas minha pergunta pretendida é a seguinte:
O XGBoost e o LightGBM possuem parâmetros que permitem o empacotamento. O aplicativo não é Bagging OR Boosting (que é o que cada post de blog fala), mas Bagging AND Boosting. Qual é o pseudo-código para onde e quando ocorre a ensacadeira e o reforço combinados?
Eu esperava que fosse "Árvores Impulsionadas em Saco", mas parece que é "Árvores Ensacadas em Impacto". A diferença parece substancial.
Árvores impulsionadas em saco:
- Coletar N amostras aleatórias de x% das amostras e% de recursos
- Ajuste árvores reforçadas em cada uma das N amostras
- Preveja com cada N
- Faça a média das previsões para obter a previsão final
Esta parece ser a melhor maneira de fazê-lo. Afinal, o risco de aumentar é o ajuste excessivo e o principal benefício do ensacamento é reduzir o ajuste excessivo; Ensacar vários modelos aprimorados parece uma ótima idéia.
No entanto, ao examinar, por exemplo, o scikit-learn
gradient_boosting.py (que mostra a seleção de pacotes, mas não a seleção aleatória de recursos) e juntar algumas pequenas pepitas nas postagens sobre LightGBM e XGBoost, parece que XGBoost e LightGBM funcionam da seguinte maneira:
Árvores ensacadas reforçadas:
- Ajustar uma árvore de decisão aos seus dados
- Para i em N rodadas de reforço:
- Obter os resíduos
- se eu modificar bag_frequency == 0 (ou seja, bag a cada 5 rodadas):
- Colete uma única amostra aleatória de x% das amostras e% de recursos; use esta amostra aleatória daqui para frente
- ajuste a árvore aos resíduos
- A previsão final é uma soma ponderada dos preditores sequenciais.
Corrija meu entendimento aqui e preencha os detalhes. A árvore ensacada reforçada (com apenas uma árvore aleatória por bag_frequency) não parece tão poderosa quanto a árvore impulsionada ensacada.