Como pude visualizar a importância de diferentes insumos para a previsão de um modelo não linear de caixa preta?

9

Estou construindo uma ferramenta de previsão interativa (em python) como uma ajuda à previsão feita em minha organização. Até a presente data, o processo de previsão foi em grande parte orientado para o ser humano, com os meteorologistas assimilando os dados em suas redes neurais naturais e usando sua intuição aprendida para fazer previsões. De um estudo de verificação de previsão a longo prazo e de modelagem preditiva que fiz, descobri o que você poderia esperar; previsores diferentes exibem vieses diferentes, os efeitos de alguns preditores parecem ser exagerados e outros importantes parecem ser ignorados e, em geral, o desempenho da previsão é medíocre em comparação com modelos empíricos relativamente simples.

As previsões continuarão sendo manuais, mas estou tentando criar uma ferramenta útil para fornecer aos meteorologistas uma melhor quantificação dos efeitos relativos dos preditores. Também existem efeitos importantes, como influências sazonais que geralmente são negligenciadas, que eu gostaria que a ferramenta destacasse para o usuário. Estou esperando um certo grau de reação e ceticismo sobre o processo de modelagem de alguns dos analistas mais 'experientes' (muitos dos quais têm pouco conhecimento formal de estatística), para que a comunicação seja pelo menos tão importante quanto o desempenho do modelo em termos de alcançar uma melhoria mensurável na precisão da previsão.

Os modelos que estou desenvolvendo têm um forte componente auto-regressivo que às vezes é modificado significativamente por eventos que aparecem como valores medidos em alguns preditores que são, durante períodos sem eventos, próximos a zero. Isso está de acordo com o modelo mental que os analistas usam. A parte principal é ser capaz de demonstrar quais das medidas de 'evento' são mais influentes para afastar a previsão do valor de regressão automática para qualquer previsão. Estou imaginando o processo dessa maneira; o previsor adivinha seu melhor valor de estimativa, o modelo sugere um valor diferente e o previsor pergunta o porquê. O modelo responde algo como "veja aqui, esse valor desse preditor aumenta o valor previsto no verão. Se fosse inverno, ele se moveria para o outro lado. Sei que existem outras medidas,

Agora, imagine que o modelo fosse uma regressão linear simples. Pode-se imaginar exibindo o "efeito" relativo dos preditores baseados em eventos multiplicando o valor pelo modelo co-eficiente e exibindo como um gráfico de barras simples. Todas as barras dos diferentes preditores somam o desvio total do valor de RA, e isso mostra de maneira sucinta e clara as que, neste caso, estão tendo uma forte influência.

O problema é que o processo que está sendo projetado exibe um alto grau de não linearidade nos preditores, ou pelo menos, tive muito mais sucesso com algoritmos de aprendizado de máquina não lineares de caixa preta (floresta aleatória e GBM) do que com GLMs para esse conjunto de dados. Idealmente, eu gostaria de poder alterar perfeitamente o modelo funcionando 'sob o capô' sem que a experiência do usuário seja alterada, por isso preciso de uma maneira genérica de demonstrar de maneira simples a importância das diferentes medidas sem usar alguma abordagem específica do algoritmo. Minha abordagem atual será quase linearizar os efeitos, definindo todos os valores como zero, exceto um preditor, registre o desvio previsto e repita para todos os preditores, exibindo os resultados no gráfico de barras mencionado acima. Na presença de forte não linearidade, isso pode não funcionar tão bem.

Bogdanovist
fonte
11
Com o que você acabou - você poderia colocar uma foto ou duas? Além disso, "configurando todos os valores para zero, exceto um preditor" - você não deseja o gradiente em torno dos melhores valores atuais, nem em torno de todos os 0?
Denis

Respostas:

4

Uma maneira de avaliar a influência do preditor nas previsões é estimar o gradiente da saída em relação aos preditores. Isso pode ser feito estimando-se as derivadas parciais da função de previsão não linear em relação a cada um dos preditores por diferenças finitas.

Idealmente, você fará isso nas entradas de teste realmente observadas. Por exemplo, você pode calcular a média dos valores absolutos dos gradientes estimados em todas as entradas de teste nos 2 dias anteriores. A magnitude desse gradiente médio pode ser usada para classificar a importância dos preditores. (Você precisará tomar cuidado com a estimativa do gradiente para usar unidades apropriadas por z-scoring ou outro método desse tipo.) Você pode salvar esses gradientes estimados por estação para análise comparativa.

Veja " Como explicar decisões de classificação individual ", de David Baehrens et. al. no JMLR para saber mais sobre essa idéia. O artigo trata da classificação, mas também facilmente generaliza a regressão.

Innuo
fonte
Isso é fantástico! Uma referência muito útil que será útil para este problema que tenho e em outros lugares.
Bogdanovist
2

Você já tentou o módulo scikit-learn em python.

Você pode "importar_importância" para os recursos de seu randomForestClassifier

jf328
fonte
11
Primeiro, eu também pensei que calcular a importância do recurso pode ser útil, mas no final é uma abordagem comparativamente ruim quando se deve explicar o valor previsto para uma instância específica. A importância do recurso fornece apenas dicas vagas para especialistas humanos.
Steffen
Além, o OP pediu uma abordagem independente modelo ...
Steffen
O problema das medidas de importância variável é que elas se aplicam a todo o conjunto de dados em média, em vez de dizer o que era realmente importante em qualquer caso específico.
Bogdanovist
Na verdade, acho que essa é uma abordagem independente do modelo; você pode aplicá-la a outros classificadores que não sejam florestas aleatórias. No site da Breiman, há uma observação sutil sobre como você pode calcular a importância da variável para um único caso. stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#varimp (última frase) Acho que isso ainda não foi estudado extensivamente, ou pelo menos extensivamente testado. A importância da variável média nem sempre é o que você deseja. Por exemplo, não é quando você deseja ajudar um profissional a tomar uma decisão em um caso. Este é um tópico realmente interessante.
Simone
Há um artigo interessante em que Breiman discute um pouco sobre esse método também em regressão logística: "Modelagem Estatística: As Duas Culturas". Uma boa leitura. A frase que eu mais gosto é: "Minha definição de importância variável é baseada em previsão. Uma variável pode ser considerada importante se a exclusão dela afetar seriamente a precisão da previsão". Esta declaração se aplica a qualquer classificador que você possa usar.
Simone