Evalml: AutoML: use a divisão de CV separada para ensembling

Criado em 26 jan. 2021  ·  4Comentários  ·  Fonte: alteryx/evalml

# 1732 atualiza nosso pipeline de agrupamento empilhado para usar o mesmo divisor de dados que é usado em AutoML . Continuamos com o # 1732 porque acreditamos que ainda era uma melhoria em nossa abordagem atual (padrão do scikit-learn).

Esse problema rastreia atualizações de longo prazo que podemos desejar fazer em nosso divisor de dados para empilhamento no AutoML.


Atualização: enquanto continuamos a atualizar # 1732, encontramos um enigma com a interação entre empilhamento e AutoML que nos fez revisitar se realmente era uma boa ideia usar a mesma divisão de dados para o conjunto de empilhamento que usamos no AutoML. Decidimos não, e como Raymond apontou, provavelmente queremos usar um currículo separado para nosso conjunto. ( @dsherry também mencionou uma boa

Em vez de continuar esse trabalho, devemos usar este problema para discutir a atualização do AutoML para empilhamento: Especificamente, devemos criar uma divisão separada para CV para o conjunto empilhado. Isso seria semelhante ao que temos atualmente em vigor para o ajuste de limite binário.

enhancement performance

Comentários muito úteis

Plano: se o empilhamento estiver ativado, criaremos uma divisão separada que pode ser passada para o conjunto empilhado para CV

Pode ser interessante dar uma olhada no suporte usando as previsões fora da amostra (divisão de validação do CV original) à medida que os dados são passados ​​para o empilhamento. No entanto, sugiro que comecemos com a abordagem mais simples de apenas criar uma divisão separada se o empilhamento estiver ativado.

RE nossa discussão, algumas evidências de suporte de por que devemos reter uma divisão separada que o conjunto empilhado pode usar para realizar o CV:

  • "Ao usar [previsões] com validação cruzada, o empilhamento evita atribuir peso excessivamente alto a modelos com maior complexidade." Também conhecido como overfitting
  • "A abordagem mais comum para preparar o conjunto de dados de treinamento para o metamodelo é por meio da validação cruzada k-fold dos modelos básicos, onde as previsões out-of-fold são usadas como base para o conjunto de dados de treinamento para o metamodelo . Os dados de treinamento para o metamodelo também podem incluir as entradas para os modelos de base, por exemplo, elementos de entrada dos dados de treinamento. Isso pode fornecer um contexto adicional para o metamodelo sobre a melhor forma de combinar as previsões do metamodelo modelo. Depois que o conjunto de dados de treinamento é preparado para o metamodelo, o metamodelo pode ser treinado isoladamente neste conjunto de dados e os modelos básicos podem ser treinados em todo o conjunto de dados de treinamento original. " - postagem do blog
  • "É importante que o meta-aluno seja treinado em um conjunto de dados separado para os exemplos usados ​​para treinar os modelos de nível 0 para evitar overfitting." - outra postagem do blog
  • Resumo do artigo original que discute como o agrupamento empilhado pode ser visto como uma generalização da validação cruzada
  • Também achei esta uma boa leitura.

@rpeck Para rodadas , estamos seguindo sua sugestão 😆

Todos 4 comentários

Plano: se o empilhamento estiver ativado, criaremos uma divisão separada que pode ser passada para o conjunto empilhado para CV

Pode ser interessante dar uma olhada no suporte usando as previsões fora da amostra (divisão de validação do CV original) à medida que os dados são passados ​​para o empilhamento. No entanto, sugiro que comecemos com a abordagem mais simples de apenas criar uma divisão separada se o empilhamento estiver ativado.

RE nossa discussão, algumas evidências de suporte de por que devemos reter uma divisão separada que o conjunto empilhado pode usar para realizar o CV:

  • "Ao usar [previsões] com validação cruzada, o empilhamento evita atribuir peso excessivamente alto a modelos com maior complexidade." Também conhecido como overfitting
  • "A abordagem mais comum para preparar o conjunto de dados de treinamento para o metamodelo é por meio da validação cruzada k-fold dos modelos básicos, onde as previsões out-of-fold são usadas como base para o conjunto de dados de treinamento para o metamodelo . Os dados de treinamento para o metamodelo também podem incluir as entradas para os modelos de base, por exemplo, elementos de entrada dos dados de treinamento. Isso pode fornecer um contexto adicional para o metamodelo sobre a melhor forma de combinar as previsões do metamodelo modelo. Depois que o conjunto de dados de treinamento é preparado para o metamodelo, o metamodelo pode ser treinado isoladamente neste conjunto de dados e os modelos básicos podem ser treinados em todo o conjunto de dados de treinamento original. " - postagem do blog
  • "É importante que o meta-aluno seja treinado em um conjunto de dados separado para os exemplos usados ​​para treinar os modelos de nível 0 para evitar overfitting." - outra postagem do blog
  • Resumo do artigo original que discute como o agrupamento empilhado pode ser visto como uma generalização da validação cruzada
  • Também achei esta uma boa leitura.

@rpeck Para rodadas , estamos seguindo sua sugestão 😆

@dsherry @rpeck @ angela97lin Comecei a olhar para este problema, mas parece que as classes StackedClassifier e StackedRegressor do sklearn usam validação cruzada interna durante o treinamento do modelo para evitar overfitting. Este parece ser o mesmo problema que estamos tentando resolver com este problema, então parece que deveria ser resolvido. Não acho que precisaremos fazer uma dobra de currículo separada para treinar / validar os métodos de Stacked Ensembling, mas o que vocês acham?

image

Após discussão com @dsherry , aqui está a ideia com a qual queremos prosseguir

Plano discutido com @ bchen1116 : este problema acompanha:

  • Crie uma divisão separada para treinar o metalearning para conjuntos de pipelines
  • Continue a usar sklearn impl para agrupamento empilhado

Aprimoramento de desempenho separado: melhor suporte para dados pequenos. Não crie uma divisão separada para agrupamento. Use preds de tubulação fora da amostra do CV normal (de todas as dobras CV) para treinar o ensembler. # 1898

Outro aprimoramento de desempenho separado: treinar os pipelines e o metalearner em dados diferentes. # 1897

Esta página foi útil?
0 / 5 - 0 avaliações