Recursos para aprender a implementar métodos de conjunto

13

Entendo teoricamente (mais ou menos) como eles funcionariam, mas não tenho certeza de como usar um método de conjunto (como votação, misturas ponderadas etc.).

  • Quais são os bons recursos para implementar métodos de ensemble?
  • Existem recursos específicos em relação à implementação em Python?

EDITAR:

Para esclarecer alguns com base na discussão dos comentários, não estou procurando algoritmos de conjuntos, como randomForest, etc. Em vez disso, estou me perguntando como você pode combinar classificações diferentes de algoritmos diferentes.

Por exemplo, digamos que alguém use regressão logística, SVM e alguns outros métodos para prever a classe de uma determinada observação. Qual é a melhor maneira de capturar a melhor estimativa da classe com base nessas previsões?

user1074057
fonte

Respostas:

12

Um bom lugar para começar é obter uma visão geral da aprendizagem por conjuntos. Especialmente, você vai querer dar um impulso e ensacamento . Outro método usado pela equipe "The Ensemble" no Prêmio Netflix é chamado de "mistura" ou empilhamento de recursos .

Em seguida, basta encontrar algumas bibliotecas que as implementam e funcionam a partir daí. Uma rápida pesquisa no Google mostrou scikit e laranja , os quais deveriam ter ensacamento e reforço (e ambos são Python).

Se além de apenas usar métodos de ensemble, você gostaria de aprender um pouco da teoria, acho que este artigo seria um bom ponto de partida (siga as referências para as partes nas quais você está interessado).

Felicidades.

Stumpy Joe Pete
fonte
(+1) woa, ótimas referências aqui: O!
Steffen
Obrigado. Só estou tentando contribuir com algo sobre um dos poucos tópicos que conheço.
Stumpy Joe Pete
4

'Métodos de conjunto em mineração de dados: aprimorando a precisão através da combinação de previsões', Seni e Elder - Excelente referência sobre teoria e implementação de conjuntos práticos, mas o código que o acompanha é baseado em R.

'Aprendizado de máquina: uma perspectiva algorítmica', S. Marsland - Excelente texto prático baseado em Python, mas não tão dedicado a conceitos de conjuntos puros quanto a primeira referência.

tapinha
fonte
2

A resposta atarracada de Joe Pete foi perfeita, mas como você mencionou uma implementação em Python, eu queria mencionar o projeto de fabricação de cerveja da Universidade Federal de Pernambuco.

https://github.com/viisar/brew

from brew.base import Ensemble
from brew.base import EnsembleClassifier
from brew.combination import import Combiner

# create your Ensemble
clfs = your_list_of_classifiers # [clf1, clf2]
ens = Ensemble(classifiers = clfs)

# create your Combiner
# the rules can be 'majority_vote', 'max', 'min', 'mean' or 'median'
comb = Combiner(rule='majority_vote')

# now create your ensemble classifier
ensemble_clf = EnsembleClassifier(ensemble=ens, combiner=comb)
ensemble_clf.predict(X)

Neste ponto, eles têm geração de conjuntos, combinação, poda e seleção dinâmica.

Limitações: somente classificação; sem empilhamento na versão pública atual; não há muita documentação.

Dayvid Oliveira
fonte
0

A Salford Systems possui um pacote de software chamado Random Forests que implementa isso para conjuntos de árvores de classificação e regressão. Não tenho pacotes R gratuitos para oferecer. Eu imagino que eles tenham um manual do usuário que explique sua implementação. Por analogia, você provavelmente poderia descobrir como fazer isso para outros métodos de conjunto.

Michael R. Chernick
fonte
2
Existem muitos pacotes R excelentes para conjuntos de árvores: por exemplo randomForest (algoritmo clássico), party :: cforest (floresta aleatória usando árvores de inferência condicional), gbm (aumento de gradiente de árvores), entre outros. Eu li o OP como desejando implementar conjuntos agnósticos de classificador / regressão. O procedimento mais simples é, obviamente, as previsões médias.
B_Miner
@B_Miner É bom saber que existem implementações disponíveis em R. Talvez alguém possa me explicar por que uma implementação específica em Python é desejável (desculpe minha ignorância sobre R). Eu li o OP para querer conhecer fontes que descrevam como implementar os métodos do conjunto. O pacote Salford era um que eu sabia que poderia ter alguma documentação.
22612 Michael R. Chernick
Embora baseado no artigo de Freund e Schapire, o aprimoramento funciona em geral, até onde eu sei, os melhores resultados vieram do uso de classificadores de árvore.
22812 Michael R. Chernick
Pessoalmente, obtenho resultados realmente bons com a simples média de probabilidades - mas meu domínio está mais interessado em probabilidades do que escolher um rótulo de classe.
B_Miner
@MichaelChernick Se você está fazendo um trabalho preditivo muito intenso (como ... uma competição Kaggle), você não está indo para escolher um ou outro impulsionar ou aleatórios florestas. Você deseja agregar o maior número possível de modelos que o ajudarão (o que geralmente é muito mais que um). Portanto, nesse contexto, outros métodos de conjunto serão importantes, mesmo que florestas aleatórias sejam muito mais impressionantes do que qualquer outra coisa.
Stumpy Joe Pete
0

Scikit-learn ensembling guia fornece ensacamento e impulsionar meta-classificadores e regressores. Além do que, além do mais, biblioteca mlxtend fornece implementações de meta-classificadores e regressores de empilhamento .

Vadim Smolyakov
fonte