Métricas Comuns em Machine Learning: como analisar a qualidade de chatbots inteligentes — conceitos (2 de 4)

No artigo anterior falamos que utilizar a acurácia (precisão geral) ao analisar a qualidade de um chat bot pode não ser a melhor opção visto que essa técnica não leva em conta a existência de falsos positivos, distribuição de exemplos e outros fatores que afetam o treinamento. Aqui sugerimos uma outra forma de fazer tais medições:

Uma análise mais realista

Neste artigo trazemos conceitos gerais de Machine Learning aplicados na medição da qualidade de chat bots criados com o Conversation mas que não se restringem a essa API.

Essas mesmas métricas podem ser utilizadas na análise de qualquer chat bot criado com inteligência artificial e também em outros problemas de classificação como reconhecimento de imagens e termos linguísticos.

Conceitos base

Para analisar a qualidade dos nossos modelos de machine learning (e bots) precisamos conhecer primeiro o conceito de matriz de confusão uma vez que a mesma facilita a análise visual do desempenho do nosso sistema cognitivo.

Matriz de Confusão (exemplo)

Bem mais fácil do que ficar explicando teoria é mostrar um exemplo, certo? Então vamos assumir que nosso chat bot de uma pizzaria possui três classes (intenções): #realizarPedido, #obterStatus e #horarioAtendimento e nelas possuímos, respectivamente, dez, nove e doze exemplos de interações.

Nossa matriz de confusão, em um mundo ideal, ficaria da seguinte forma:

Mas na realidade o nosso modelo não acertará todas as vezes: quando temos exemplos novos existirão situações nas quais uma interação que deveria ser classificada como #obterStatus é classificada como #realizarPedido ou algum outro tipo de classificação errada ocorre.

O mais comum é obtermos uma matriz de confusão semelhante a seguinte (perceba que a soma das linhas continua a mesma que na matriz ideal):

Agora que conhecemos a matriz de confusão como podemos interpretá-la?

É simples perceber que, a partir da matriz acima, nosso modelo distingue bem quando inserimos um exemplo da classe #horarioAtendimento mas encontra dificuldades quando tentamos separar #realizarPedido de #obterStatus.

Vamos falar de mais um conceito, a tabela de confusão, antes de entrar na análise real.

Tabela de Confusão

A tabela de confusão nos permite realizar uma análise mais detalhada da situação do nosso classificador uma vez que ela distingue nossos resultados em quatro classes. Vamos utilizar o exemplo de um classificador binário (classificar se um e-mail é ou não spam):

  • True positive (TP) ou Verdadeiros Positivos (VP): casos em que retornamos a classe SPAM e o e-mail realmente era de spam.
  • False positives (FP) ou Falsos positivos (FP): casos em que retornamos a classe SPAM e na verdade eram e-mails comuns.
  • True Negative (TN) ou Falsos Verdadeiros (FV): casos que retornamos que era e-mail comum (ausência de spam) e realmente eram.
  • False Negative (FN) ou Falsos Negativos (FN): retornamos que não eram spam e na verdade eram spam.

No caso do chat bot em que temos múltiplas classes podemos calcular essas métricas da seguinte forma:

  • Verdadeiros Positivos e Verdadeiros Negativos fazem compõem um mesmo conjunto (pintados de roxo na tabela abaixo)
  • Falsos positivos ficarão na última linha da tabela enquanto os falsos negativos irão para a última coluna a direita, podemos ver que a soma destes conjuntos é a mesma.

Ou então poderíamos utilizar a tabela de confusão ao transformarmos o problema em um problema binário. Para isso devemos analisar o classificador sob a ótica de uma classe específica por vez, ou seja, ao analisarmos o retorno faremos a mesma análise para cada uma das classes da seguinte maneira:

Dado a entrada X, o resultado pertence (SIM) ou não pertence (NÃO) a classe Y?

Com isso teremos uma tabela de confusão para cada classe e então poderíamos assumir as métricas gerais do classificador como sendo as médias das métricas das classes que o compõem.

Próximo Passo

Nessa hora você já deve ter imaginado diversas maneiras diferentes de analisar o seu chat bot, certo? No próximo artigo vamos falar de alguns desses métodos de análise utilizando os conceitos aqui explorados.