Como as classificações são mescladas em um classificador de conjunto?

8

Como um classificador de conjunto mescla as previsões de seus classificadores constituintes? Estou tendo dificuldade em encontrar uma descrição clara. Em alguns exemplos de código que encontrei, o conjunto apenas calcula a média das previsões, mas não vejo como isso poderia fazer uma precisão geral "melhor".

Considere o seguinte caso. Um classificador de conjunto é composto por 10 classificadores. Um classificador possui uma precisão de 100% do tempo no subconjunto de dados X e 0% em todos os outros momentos. Todos os outros classificadores têm uma precisão de 0% no subconjunto de dados X e 100% em todos os outros momentos.

Usando uma fórmula de média, em que a precisão do classificador é ignorada, o classificador de conjunto teria, na melhor das hipóteses, 50% de precisão. Isso está correto ou estou faltando alguma coisa? Como a previsão média de N classificadores potencialmente sem noção pode criar uma previsão melhor que um único classificador especialista em um domínio específico?

Cerin
fonte

Respostas:

5

Eu li um exemplo claro de Introdução à mineração de dados por Tan et al.

O exemplo afirma que, se você estiver combinando seus classificadores com um sistema de votação, ou seja, classificar um registro com a classe mais votada, obterá melhor desempenho. No entanto, este exemplo usa diretamente o rótulo de saída dos classificadores, e não as previsões (acho que você quis dizer probabilidades).

Vamos ter 25 classificadores independentes que possuem erro de generalização . Para classificar incorretamente um registro, pelo menos metade deles deve classificá-lo incorretamente.e=1accuracy=0.35

Tudo pode ser modelado com variáveis ​​aleatórias, mas você só precisa calcular a probabilidade de que pelo menos 13 deles classifiquem incorretamente o registro que cada termo da soma significa que classificador obtém a classe de registro corretamente e erra.

i=1325(25i)ei(1e)(25i)=0.06
i25i

Usando previsões diretas e usando como método combinado uma média, acho que poderia ser um pouco mais difícil mostrar a melhoria no desempenho do conjunto. No entanto, concentrando-se apenas nas previsões e sem se importar com o rótulo de saída do conjunto, a média de mais previsões pode ser vista como um estimador da probabilidade real. Portanto, adicionar classificadores deve melhorar as previsões da técnica do conjunto.

Simone
fonte
1
Essa é uma ótima maneira de entender por que o conjunto funciona. No entanto, é provável que o caso específico seja otimista demais em termos de desempenho aprimorado. Isso é básico: cada classificador é treinado (geralmente) nos mesmos dados - tornando questionável a independência dos classificadores.
probabilityislogic
Obviamente, a independência é uma hipótese muito forte.
Simone
5

Está faltando o fato de que o classificador "ruim" não possui precisão de 0%, mas não é significativamente melhor do que uma estimativa aleatória.

Dessa maneira, as boas previsões são sempre as mesmas e se acumulam (já que a verdade é apenas uma), enquanto as previsões ruins são ruídos aleatórios que são calculados em média.


fonte
Não é que nenhum classificador seja "ruim" ou "bom". Estou falando da precisão de cada classificador em domínios específicos. Se um classificador é perfeito em um domínio específico, incluí-lo em um conjunto pode obscurecer sua utilidade, porque todos os outros classificadores podem fazer classificações ruins.
Cerin
1
A menos que você tenha contradições perfeitas (que estão quase ausentes em dados reais e utilizáveis), os domínios não mudam nada, pois o classificador também deve produzir ruído em vez de exclusivamente classe ruim para objetos fora de seu domínio - dessa forma, somente diferentes classificadores parciais serão " bom "em cada um dos domínios. De qualquer forma, é óbvio que um sinal nítido e perfeito será silenciado pelo ruído (espero que não seja completamente), mas esse é o trade-off por não ter informações sobre quais classificadores parciais funcionam para quais objetos.
O que quero dizer é que, se você pegar um ótimo classificador e calcular sua previsão com maus classificadores, é improvável que obtenha uma previsão melhor. Você está diluindo sua boa previsão.
Cerin 31/01
@chriss - geralmente quando você calcula a média de cada classificador de acordo com seu desempenho. nesse esquema, um ótimo classificador só é diluído por outros grandes classificadores. Classificadores de porcaria ficam com baixo peso (geralmente exponencialmente baixo) e, portanto, não se diluem.
probabilityislogic
@ChisS Você está perfeitamente certo - o ponto principal é que você não pode escolher o melhor classificador para cada objeto, portanto, você mede uma solução razoável de negociação para alguma atenuação de sinal por ruído e o risco de catástrofe de classificadores de base correlacionada.
0

No caso de classificação, geralmente existem duas maneiras de agrupar a previsão. Vamos dizer que é um problema de classificação de classe binária e você tem 3 modelos para agrupar chamados m1, m2 e m3 e o conjunto de dados de treinamento é chamado de trem e conjunto de dados de teste chamado test.Modelos já são construídos no train.Then um código python será o seguinte.

O primeiro método é fazer uma ronda da média

pred=round([m1.predict(test)+m2.predict(test)+m3.predict(test)]/3) 

Portanto, a saída será um vetor de valor 0 e 1

O segundo método é agrupar a probabilidade de previsão de cada classe a partir desses modelos e agrupá-las e, em seguida, decidir a classe com base em um limite rígido ou em alguma lógica.

pred_proba=[m1.predict(test).predict_proba++ m2.predict(test).predict_proba 
+m3.predict(test).predict_proba]/3 
# Simple average ensemble,however you can try weighted average as well

itere através de todo o vetor pred_proba para descobrir qual em 0 e qual é 1 sendo 1 com base no limite rígido 0,5

pred=[] # Initialize a blank list for prediction

for x in pred_proba:
 if x>0.5:
   pred.append[1]
 else:
   pred.append[0]

Então pred é a previsão do conjunto final.

0xF
fonte