Dado um classificador binário, é sempre possível explicar por que ele classificou alguma entrada como uma classe positiva? E com isso quero dizer, se temos um grande conjunto de recursos, existe uma ferramenta que diz: 'Para esse resultado, esses são os recursos que foram os mais responsáveis por rotulá-lo como positivo'?
Obrigado !
Respostas:
Experimente alguns dos exemplos desta biblioteca, que tenta usar o aprendizado de máquina para entender os modelos de aprendizado de máquina de caixa preta no Python:
https://github.com/TeamHG-Memex/eli5
fonte
É difícil dar uma resposta muito boa a uma pergunta tão ampla.
A interpretabilidade do modelo é um tópico importante e geralmente depende do modelo. Modelos mais simples, como regressões logísticas, são mais fáceis de interpretar do que as redes neurais. É fácil dizer coisas como "se eu puder aumentar o recurso em 1, as chances de acontecer aumentam em ".XEu y βEu
Da mesma forma, as árvores de decisão individuais são mais fáceis de interpretar do que as florestas aleatórias. No entanto, algumas pessoas tentam interpretar florestas aleatórias computando a "importância do recurso", que pode ser calculada de várias maneiras, uma das quais é o número de divisões que incluem o recurso em relação ao número de amostras que ele divide.
Você quer uma maneira de tratar seu modelo como uma caixa preta e poder interpretar qualquer modelo?
Eu posso pensar em duas maneiras:
Uma maneira típica é alterar a entrada e ver o impacto no desempenho do modelo. Nas imagens, você pode ocultar partes da imagem e ver quais partes contribuem mais para a precisão. Isso é amplamente usado para redes neurais convolucionais, que são difíceis de interpretar de outra forma.
Para variáveis numéricas, você pode zerar ou adicionar algum ruído a cada recurso e ver qual o impacto desse recurso individual no resultado.
Eu já vi esse tipo de coisa amplamente usada.
Semelhante ao anterior, exceto que você treina com e sem o recurso e vê o impacto que ele tem na precisão do modelo.
Isso tem o benefício adicional de que você não precisa pensar em hiperparâmetros, como a quantidade de ruído que você adicionará a cada recurso, como na abordagem anterior. Além disso, você pode entender melhor o impacto de vários recursos na saída, tentando com e sem esses.
Eu não vi essa abordagem sendo usada, mas aparentemente ela também está sendo usada, como outra pessoa respondeu.
De qualquer forma, eu evitaria tais ataques. A maioria dos modelos pode ser interpretada de alguma forma. Eu já vi pessoas até interpretando redes neurais recorrentes. E, se a interpretabilidade for uma preocupação, basta usar um modelo mais simples, mais fácil de interpretar e explicar.
fonte
Interessante, ainda não ouvi falar disso, mas a matriz de correlação entre os recursos e a variável de destino vai lhe dar uma idéia em certa medida. Se a correlação estiver no lado superior, é mais provável que esse recurso tenha maior voz ao prever o alvo. Se você estiver usando python, sugiro que você visualize a matriz de correlação usando seaborn, aqui está o código de exemplo 1 .
fonte