Na Floresta Aleatória, cada árvore é cultivada em paralelo em uma amostra exclusiva dos dados. Como se espera que cada amostra do boostrap contenha cerca de 63% das observações exclusivas, isso deixa cerca de 37% das observações de fora, que podem ser usadas para testar a árvore.
Agora, parece que no Estochastic Gradient Boosting, também há uma semelhante à do RF:
Se bag.fraction for definido como maior que 0 (0,5 é recomendado), o gbm calcula uma estimativa de out-of-bag da melhoria no desempenho preditivo. Ele avalia a redução no desvio nas observações não usadas na seleção da próxima árvore de regressão.
Fonte: Ridgeway (2007) , seção 3.3 (página 8).
Tenho problemas para entender como funciona / é válido. Digamos que estou adicionando uma árvore na sequência. Estou crescendo essa árvore em uma subamostra aleatória do conjunto de dados original. Eu poderia testar essa única árvore nas observações que não foram usadas para cultivá-la. Acordado. MAS , como o Boosting é seqüencial, estou usando a sequência inteira de árvores construídas até agora para fornecer uma previsão para essas observações deixadas de fora. E, há uma grande chance de que muitas das árvores anteriores já tenham visto essas observações. Então o modelo não está realmente sendo testado a cada rodada em observações invisíveis, como com RF, certo?
Então, como é que isso é chamado de estimativa de erro "pronto para uso"? Para mim, não parece estar "fora" de nenhuma sacola, já que as observações já foram vistas?
Respostas:
Respondendo apenas parcialmente (e adicionando uma nova pergunta à sua pergunta).
A implementação do gbm em R http://www.rdocumentation.org/packages/gbm/functions/gbm possui dois parâmetros para ajustar a falta de bagagem.
a)
train.fraction
definirá uma proporção dos dados que são usados para treinar todas as árvores e, assim, 1 -train.fraction
será verdadeiro OOB (out-of-bag).b)
bag.fraction
definirá a proporção de dados de treinamento a serem usados na criação da próxima árvore no impulso. Portanto, pode haver alguns dados que nunca são usados para a criação de qualquer árvore e eles podem realmente ser usados como dados OOB. (Mas é improvável, veja a pergunta abaixo)O que me leva à pergunta. Sua análise de 37% dos dados como sendo OOB é verdadeira para apenas UMA árvore. Mas a chance de haver dados que não sejam usados em QUALQUER árvore é muito menor - (ele deve estar no OOB para todas árvores - meu entendimento é que cada árvore faz seu próprio bootstrap). Portanto, em RandomForests, é muito improvável que haja qualquer OOB para testar a floresta. E, no entanto, a implementação randomForest no R (baseada no código original de Breiman) fala muito sobre OOB (por exemplo, os dados do resultado e consulte http://www.rdocumentation.org/packages/randomForest/functions/randomForest ) n t r e e0,37n t r e e s n t r e e
err.rate
confusion
Não sei como responder a isso (e agradeço (+1) por fazer a pergunta e me fazer perceber que não entendo esse aspecto das florestas aleatórias). A solução possível é que exista apenas um bootstrap - e todas as árvores são construídas a partir dele - mas, tanto quanto eu sei, não é o caso.
fonte
train.fraction
parâmetro (que é apenas um recurso da função gbm, mas não está presente no algoritmo original), mas realmente do fato de que apenas uma subamostra do Os dados são usados para treinar cada árvore na sequência, deixando as observações de fora (que podem ser usadas para testes). O que remonta à minha pergunta original. Como essas observações podem ser usadas para testes, uma vez que provavelmente foram vistas muitas vezes por muitas árvores anteriores na sequência?Eu acredito que eles fazem uma estimativa fora do saco em cada etapa. Como os resultados de todas as etapas são adicionados (com coeficientes), os erros OOB também podem ser adicionados com os mesmos coeficientes.
fonte