Este é um problema de classificação binária. A métrica que está sendo minimizada é a perda de log (ou entropia cruzada). Eu também tenho um número de precisão, apenas para minhas informações. É um conjunto de dados grande e muito equilibrado. Técnicas de previsão muito ingênuas obtêm cerca de 50% de precisão e perda de 0,693 log. O melhor que pude extrair é a precisão de 52,5% e a perda de log de 0,6915. Como estamos tentando minimizar a perda de log, sempre obtemos um conjunto de probabilidades ( predict_proba
funções no sklearn e keras). Isso é tudo pano de fundo, agora a questão.
Digamos que eu possa usar 2 técnicas diferentes para criar 2 conjuntos diferentes de previsões com métricas de precisão e perda de log comparáveis. Por exemplo, eu posso usar 2 grupos diferentes de recursos de entrada para produzir 2 conjuntos de previsões com 52% de precisão e <0,692 perda de log. O ponto é que ambos os conjuntos de previsões mostram que há algum poder preditivo. Outro exemplo é que eu poderia usar a regressão logística para produzir um conjunto de previsões e uma rede neural para produzir o outro.
Aqui estão os 10 primeiros para cada conjunto, por exemplo:
p1 = [0.49121362 0.52067905 0.50230295 0.49511673 0.52009695 0.49394751 0.48676686 0.50084939 0.48693237 0.49564188 ...]
p2 = [0.4833959 0.49700296 0.50484381 0.49122147 0.52754993 0.51766402 0.48326918 0.50432501 0.48721228 0.48949306 ...]
Estou pensando que deve haver uma maneira de combinar os 2 conjuntos de previsões em um, para aumentar o poder preditivo geral. Existe?
Eu comecei a tentar algumas coisas. Por exemplo, considero o valor absoluto da previsão menos 0,5 ( abs( p - 0.5 )
) como um sinal e, qualquer que tenha entre p1
e p2
tenha um sinal maior, eu usaria esse valor. Isso levemente realizado que eu queria, mas apenas por uma pequena margem. E em outro caso, não pareceu ajudar em nada. Curiosamente, não pareceu destruir o poder preditivo.
fonte
Respostas:
Resposta curta: Sim.
Resposta longa: este é um dos muitos exemplos de uma técnica conhecida como "empilhamento". Embora você possa, é claro, decidir alguma maneira manual de combinar as duas previsões, é ainda melhor se você treinar um terceiro modelo na saída dos dois primeiros modelos (ou até mais). Isso melhorará ainda mais a precisão. Para evitar a reutilização dos dados, geralmente uma parte diferente do conjunto de dados é usada para treinar os primeiros níveis e treinar o modelo que combina os dados.
Veja, por exemplo, aqui para um exemplo.
fonte
Sim.
O método que você está falando é chamado Empilhamento. É um tipo de método de montagem. Nesse método, no primeiro estágio, vários modelos são treinados e as previsões são armazenadas como recursos que serão usados para treinar o modelo do segundo estágio. Muitos Kagglers usam esse método. Geralmente, você deve usar mais de 2 modelos para o primeiro estágio durante o empilhamento (eu geralmente uso pelo menos 4-5 modelos). Também existem muitos métodos nos quais o empilhamento pode ser realizado como média simples, votação majoritária etc. Aqui está um link para um kaggle kernel que implementa o empilhamento no famoso Titanic Dataset, que também é um problema de classificação binária.
Introdução ao Kaggle Kernel para empilhamento usando o conjunto de dados do Titanic
fonte