Quais são as semelhanças e diferenças entre esses três métodos:
- Bagging,
- Boosting,
- Stacking?
Qual é o melhor? E por quê?
Você pode me dar um exemplo para cada?
Comentários
- para uma referência de livro didático, eu recomendo: ” Métodos de conjunto: fundações e algoritmos ” por Zhou, Zhi-Hua
- Veja aqui uma questão relacionada .
Resposta
Todos os três são chamados de “meta-algoritmos”: abordagens para combinar várias técnicas de aprendizado de máquina em um modelo preditivo para diminuir a variância ( ensacamento ), polarização ( aumento ) ou melhorar a força preditiva ( empilhamento alias ensemble ).
Cada algoritmo consiste em duas etapas:
-
Produzindo uma distr distribuição de modelos de ML simples em subconjuntos dos dados originais.
-
Combinação da distribuição em um modelo “agregado”.
Aqui está uma breve descrição de todos os três métodos:
-
Bagging (significa B ootstrap Agg regat ing ) é uma forma de diminuir a variação de sua previsão, gerando dados adicionais para treinamento a partir de seu conjunto de dados original usando combinações com repetições para produzir multisets da mesma cardinalidade / tamanho que seus dados originais. Ao aumentar o tamanho do seu conjunto de treinamento, você não pode “melhorar a força preditiva do modelo, mas apenas diminuir a variância, ajustando estreitamente a previsão ao resultado esperado.
-
Boosting é uma abordagem de duas etapas, em que um primeiro usa subconjuntos de os dados originais para produzir uma série de modelos de desempenho médio e, em seguida, “impulsionar” seu desempenho combinando-os usando uma função de custo específica (= voto da maioria). Ao contrário do empacotamento, no reforço clássico a criação do subconjunto não é aleatória e depende do desempenho dos modelos anteriores: cada novo subconjunto contém os elementos que foram (provavelmente) classificados incorretamente pelos modelos anteriores.
-
Empilhamento é semelhante ao aumento : você também aplica vários modelos aos seus dados originais. A diferença aqui é, no entanto, você não tem apenas uma fórmula empírica para sua função de peso, em vez disso, você introduz um metanível e usa outro modelo / abordagem para estimar a entrada junto com as saídas de cada modelo para estimar os pesos ou, em outras palavras, para determinar quais modelos funcionam bem e quais são ruins com esses dados de entrada.
Aqui está uma tabela de comparação:
Como você pode ver, todas essas são abordagens diferentes para combinar vários modelos em um melhor, e há nenhum vencedor aqui: tudo depende do seu domínio e do que você vai fazer. Você ainda pode tratar o empilhamento como uma espécie de mais avanços impulsionadores , no entanto, a dificuldade de encontrar uma boa abordagem para seu meta-nível torna difícil aplicar esta abordagem na prática .
Exemplos curtos de cada um:
- Bagging : Dados de ozônio .
- Boosting : é usado para melhorar a precisão do reconhecimento óptico de caracteres (OCR).
- Empilhamento : é usado na classificação de microarrays de câncer na medicina.
Comentários
- Parece que sua definição de impulso é diferente daquela no wiki (para o qual você criou um link) ou neste documento . Ambos dizem que ao impulsionar o próximo classificador usa resultados de outros previamente treinados, mas você ‘ não mencionou isso. O método que você descreve por outro lado se assemelha a algumas técnicas de votação / média de modelo.
- @ a-rodin: Obrigado por apontar este aspecto importante, reescrevi completamente esta seção para melhor refletir isso. Quanto à sua segunda observação, meu entendimento é que o boosting também é um tipo de votação / média, ou entendi errado?
- @AlexanderGalkin Eu tinha em mente o boost de gradiente na hora do comentário: não ‘ t parece uma votação, mas sim uma técnica de aproximação de função iterativa. No entanto, por exemplo AdaBoost se parece mais com votação, então não ‘ não discuti sobre isso.
- Em sua primeira frase, você diz que Boosting diminui o viés, mas na tabela de comparação você diz aumenta a força preditiva.Ambos são verdadeiros?
Resposta
Bagging :
-
paralelo conjunto: cada modelo é construído independentemente
-
visam diminuir a variância , não polarização
-
adequado para modelos de baixa polarização de alta variância (modelos complexos)
-
um exemplo de um método baseado em árvore é floresta aleatória , que desenvolve árvores totalmente crescidas (observe que RF modifica o procedimento de cultivo para reduzir a correlação entre as árvores)
Boosting :
-
sequencial conjunto: tente adicionar novos modelos que funcionam bem onde faltam modelos anteriores
-
visam diminuir b ias , sem variação
-
adequado para modelos de baixa variação e alta polarização
-
um exemplo de método baseado em árvore é o aumento de gradiente
Comentários
- Comentar cada um dos pontos para responder por que é assim e como é alcançado seria uma ótima melhoria em sua resposta.
- Você pode compartilhar algum documento / link que explique que aumentar a variação reduz e como isso ocorre? Só quero entender com mais detalhes
- Obrigado, Tim, ‘ adicionarei alguns comentários mais tarde. @ML_Pro, a partir do procedimento de aumento (por exemplo, página 23 de cs.cornell.edu/courses/cs578/2005fa/… ), é ‘ compreensível que o aumento pode reduzir o preconceito.
Resposta
Apenas para elaborar um pouco a resposta de Yuqian. A ideia por trás do bagging é que quando você OVERFIT com um método de regressão não paramétrico (geralmente árvores de regressão ou classificação, mas pode ser qualquer método não paramétrico), você tendem a ir para a alta variância, nenhuma (ou baixa) parte do viés / compensação de variância. Isso ocorre porque um modelo de sobreajuste é muito flexível (tão baixo viés sobre muitas reamostragens da mesma população, se estiverem disponíveis), mas tem alta variabilidade (se eu coletar uma amostra e ajustá-la em excesso, e você coletar uma amostra e ajustá-la em excesso, nossos resultados serão diferentes porque a regressão não paramétrica rastreia o ruído nos dados). O que podemos fazer? Podemos fazer muitas reamostragens (de bootstrapping) , cada um sobreajuste e calcule a média deles juntos. Isso deve levar ao mesmo viés (baixo), mas cancelar parte da variância, pelo menos em teoria.
O aumento de gradiente em sua essência funciona com regressões não paramétricas UNDERFIT, que são muito simples e, portanto, não são flexível o suficiente para descrever a relação real nos dados (ou seja, tendenciosa), mas, como estão abaixo do ajuste, têm baixa variância (você tenderia a obter o mesmo resultado se coletar novos conjuntos de dados). Como você corrige isso? Basicamente, se você não estiver adequado, os RESÍDUOS do seu modelo ainda contêm uma estrutura útil (informações sobre a população), então você aumenta a árvore que possui (ou qualquer preditor não paramétrico) com uma árvore construída sobre os resíduos. Deve ser mais flexível do que a árvore original. Você gera repetidamente mais e mais árvores, cada uma na etapa k aumentada por uma árvore ponderada com base em uma árvore ajustada aos resíduos da etapa k-1. Uma dessas árvores deve ser a ideal, então você acaba ponderando todas essas árvores juntas ou selecionando aquela que parece ser a mais adequada. Assim, o aumento de gradiente é uma maneira de construir um monte de árvores candidatas mais flexíveis.
Como todas as abordagens de regressão ou classificação não paramétricas, às vezes ensacar ou aumentar funciona bem, às vezes uma ou outra abordagem é medíocre e às vezes uma ou a outra abordagem (ou ambas) irá travar e queimar.
Além disso, ambas as técnicas podem ser aplicadas a abordagens de regressão diferentes de árvores, mas são mais comumente associadas a árvores, talvez porque seja difícil para definir parâmetros de modo a evitar ajuste insuficiente ou ajuste excessivo.
Comentários
- +1 para o argumento overfit = variance, underfit = bias! Uma razão para usar árvores de decisão é que elas são estruturalmente instáveis, portanto, se beneficiam mais de pequenas mudanças de condições. ( abbottanalytics.com / assets / pdf / … )
Resposta
Resposta
Para recapitular, Bagging e Boosting são normalmente usados dentro de um algoritmo, enquanto Stacking geralmente é usado para resumir vários resultados de algoritmos diferentes.
- Bagging : Bootstrap subconjuntos de recursos e amostras para obter várias previsões e médias (ou outras maneiras) os resultados, por exemplo,
Random Forest
, que elimina a variância e não tem problema de overfitting. - Impulso : a diferença de Bagging é que o modelo posterior está tentando aprenda o erro cometido pelo anterior, por exemplo
GBM
eXGBoost
, que eliminam a variância, mas apresentam problemas de sobreajuste. - Empilhamento : normalmente usado em competições, quando se usa vários algoritmos para treinar no mesmo conjunto de dados e média (máx, min ou outras combinações) o resultado para obter uma maior precisão de previsão.
Resposta
ambos ensacamento e o boosting usam um único algoritmo de aprendizagem para todas as etapas; mas eles usam métodos diferentes para lidar com amostras de treinamento. ambos são métodos de aprendizagem combinados que combinam decisões de vários modelos
Bagging :
1. reamostra os dados de treinamento para obter Subconjuntos M (bootstrapping);
2. treina classificadores M (mesmo algoritmo) com base em conjuntos de dados M (amostras diferentes);
3. classificador final combina M resultados por votação;
amostras de peso igualmente;
classificadores de peso igualmente;
diminui o erro diminuindo a variância
Impulso : aqui se concentra no algoritmo adaboost
1. comece com peso igual para todas as amostras na primeira rodada;
2. nas rodadas M-1 seguintes, aumente os pesos das amostras que foram classificadas incorretamente na última rodada, diminua pesos das amostras classificadas corretamente na última rodada
3. usando uma votação ponderada, o classificador final combina vários classificadores de rodadas anteriores e dá pesos maiores aos classificadores com menos classificações erradas.
amostras de reavaliações passo a passo; pesos para cada rodada com base nos resultados da última rodada
pesar novamente as amostras (aumento) em vez de reamostragem (ensacamento).
Resposta
Bagging
Bootstrap AGGregatING (Bagging) é um método de geração de conjunto que usa variações de amostras usadas para treinar classificadores básicos. Para cada classificador a ser gerado, o Bagging seleciona (com repetição) N amostras do conjunto de treinamento com tamanho N e treina um classificador base. Isso é repetido até que o tamanho desejado do conjunto seja alcançado.
O bagging deve ser usado com classificadores instáveis, ou seja, classificadores que são sensíveis a variações no conjunto de treinamento, como Árvores de Decisão e Perceptrons.
O subespaço aleatório é uma abordagem semelhante interessante que usa variações nos recursos em vez de variações nas amostras, geralmente indicadas em conjuntos de dados com dimensões múltiplas e espaço de recurso esparso.
Boosting
Boosting gera um conjunto por adicionar classificadores que classificam corretamente as “amostras difíceis” . Para cada iteração, o boosting atualiza os pesos das amostras, de modo que, as amostras mal classificadas pelo conjunto possam ter um peso maior e, portanto, maior probabilidade de serem selecionadas para treinar o novo classificador.
Boosting é uma abordagem interessante, mas é muito sensível ao ruído e só é eficaz com classificadores fracos. Existem diversas variações das técnicas de Boosting AdaBoost, BrownBoost (…), cada uma tem sua própria regra de atualização de peso para evitar alguns problemas específicos (ruído, desequilíbrio de classe…).
Empilhamento
Empilhamento é um abordagem de meta-aprendizagem em que um conjunto é usado para “extrair recursos” que serão usados por outra camada do conjunto. A imagem a seguir (do Kaggle Ensembling Guide ) mostra como isso funciona.
Primeiro (parte inferior) vários classificadores diferentes são treinados com o conjunto de treinamento, e seus resultados (probabilidades) são usado para treinar a próxima camada (camada intermediária), finalmente, as saídas (probabilidades) dos classificadores na segunda camada são combinadas usando a média (AVG).
Existem várias estratégias usando validação cruzada, combinação e outras abordagens para evitar overfitting de empilhamento. Mas algumas regras gerais são para evitar essa abordagem em pequenos conjuntos de dados e tentar usar diversos classificadores para que possam se “complementar”.
O empilhamento foi usado em várias competições de aprendizado de máquina, como Kaggle e Top Coder. Definitivamente, é essencial no aprendizado de máquina.
Resposta
Bagging e boosting tendem a usar muitos modelos homogêneos.
O empilhamento combina resultados de tipos de modelos heterogêneos.
Como nenhum tipo de modelo tende a ser o melhor ajuste em qualquer distribuição inteira, você pode ver porque isso pode aumentar o poder de previsão.