Métricas de performance e funções de perda para Machine Learning
O processo de treinamento de um modelo supervisionado requer um feedback que consiste em realizar medições de performance e ajustar hiperparâmetros do modelo até que um estado ótimo seja atingido, para que a generalização seja a melhor possível.
Para isso ocorrer, é necessário utilizar métricas para se maximizar a qualidade e minimizar o erro. Veja alguns conceitos utilizados nesta área de aprendizado de máquina:
Underfitting: acontece quando o modelo é muito simples e não é capaz de gerar bons resultados sobre os dados conhecidos (os de treinamento), e muito menos de generalizar bem (sobre dados desconhecidos). Imagine um gráfico 2D onde este modelo representa uma função linear (uma reta), e os dados são vários pontos nesse gráfico, onde muitos deles não são cobertos pela reta.
Por outro lado, se o modelo é muito complexo e possui uma função extremamente fiel aos dados de treino, ele também não vai conseguir generalizar bem. Nesse caso ocorreu um Overfitting. Como exemplos disso podemos ter uma árvore de decisão com muitos nós, ou uma rede neural com mais neurônios do que o necessário. Isso é muito ruim porque o modelo memoriza a entrada de treino ao invés de aprender características dela.
Outro conceito é o Erro Empírico (ou erro de treino): definido como o erro do modelo sobre os dados de treino, que tende a aumentar naturalmente com o tamanho da base de treinamento, até atingir uma estabilização a um nível aceitável. Já o Erro de Validação é o erro do modelo sobre os dados de validação. Tem um comportamento espelhado com relação ao erro empírico, ou seja, tende a diminuir com o aumento da base de treino.
A partir de uma grande base de treinamento, se estas duas medidas de erro estiverem bem acima do erro aceitável (ou desejado), então ocorreu um underfitting, e dizemos que o modelo neste caso ficou com um alto viés – ou bias. Ao contrário, se apenas a medida de erro empírico estiver bem abaixo do erro aceitável, mas a medida do erro de validação estiver bem acima do aceitável, então ocorreu um overfitting e o modelo ficou com alta variância, ou seja, baixo poder de generalização. Nenhum dos dois casos é bom!
Com relação ao aumento da complexidade do modelo, temos que o erro empírico sempre vai diminuindo, porém o erro de validação tende a diminuir até um certo ponto, mas pode começar a aumentar novamente se houver superajuste do modelo. Nota-se, portanto, que é necessário encontrar um ponto ótimo, também chamado de bias-trade-off, onde o erro de validação é o mínimo possível. Durante o treino de um modelo, o objetivo é minimizar o erro de validação e não o erro de treinamento (o empírico), porque deseja-se que o modelo seja capaz de generalizar, e não de se superajustar aos dados de entrada – já conhecidos.
Depois dos conceitos, vamos às medidas de avaliação
É nesse contexto de se encontrar o equilíbrio, que se faz uso de medidas de avaliação e análise da função de perda. A maioria das medidas de avaliação derivam de uma tabela chamada de Matriz de Confusão, que contém a quantidade de classificações corretas versus as classificações preditas para cada classe sobre um conjunto de exemplos, ou seja, ela indica os erros e acertos do modelo comparando com os resultados esperados. Para cada classe é realizada a extração de quatro variáveis:
- Verdadeiro positivo;
- Verdadeiro negativo;
- Falso positivo;
- Falso negativo.
A partir destas quatro variáveis definem-se várias métricas de avaliação. Algumas delas são:
A acurácia: representando a porcentagem de elementos classificados corretamente (positivos ou negativos), indica uma performance geral do modelo, porém pode haver situações em que ela é enganosa, no caso de identificação de fraudes em cartões de crédito, as ocorrências são naturalmente bem menores do que a quantidade de casos consideradas legais;
A acurácia por classe: a média das acurácias individuais para cada classe, minimizando o problema de desbalanceamento, como o citado anteriormente;
A precisão: que define, dentre os exemplos classificados como positivos (pelo modelo), quantos eram realmente verdadeiros. Ela é utilizada onde os falsos positivos são considerados mais prejudiciais que os falsos negativos. Por exemplo: é pior classificar um investimento ruim como bom, do que classificar um investimento bom como ruim;
A revocação ou recall: que define, dentre todas as situações de classe positiva (dos valores esperados), quantas foram classificadas como verdadeiras. Ela é utilizada onde os falsos negativos são considerados mais prejudiciais que os falsos positivos. Por exemplo: é bem pior classificar uma pessoa doente como saudável, do que classificar uma pessoa saudável como doente, considerando doente igual a positivo;
A especificidade: que é a porcentagem de amostras negativas identificadas corretamente sobre o total de amostras negativas;
E o F-Score ou F-Measure: que representa a média ponderada de precisão e revocação.
Podemos citar duas métricas que não utilizam as variáveis da matriz de confusão: a “Log-Loss” que depende da probabilidade retornada da classificação, e a “Hamming-loss” que depende da distância média entre o previsto e a classe original.
Então qual métrica é melhor?
Cada métrica tem suas particularidades que devem ser levadas em consideração na escolha de como o modelo de classificação será avaliado. De maneira geral, não existe uma melhor ou pior que a outra, depende muito da análise do problema.
A outra parte da análise de performance de um modelo, tem relação com as funções de perda que devem ser minimizadas, ao contrário das medidas de avaliação vistas anteriormente que buscamos sempre aumentar.
De modo simplificado, uma função de perda, representa a distância entre o previsto e o real. Como exemplos podemos citar as seguintes funções:
Perda quadrática (ou squared loss): onde o resultado é elevado ao quadrado para que as distâncias negativas não se cancelem no somatório. É mais utilizada para regressões lineares;
Perda de articulação (ou hinge loss): utiliza o conceito de “margem máxima” buscando obter fronteiras com a maior distância dos dados, onde chamamos de margem, a diferença entre o “score” da classe correta e de uma outra classe;
Perda de entropia cruzada (ou cross-entropy loss): muito usada em regressões lineares multivariadas e principalmente em redes profundas. Para se buscar o valor mínimo da função de perda, é utilizado o cálculo de um vetor de derivadas parciais chamado de gradiente, em que este deve ser igualado a zero. O gradiente representa o quão rápido varia a função de perda, e esta se reduz conforme se segue no sentido contrário ao gradiente. Com o gradiente igual a zero, tem-se que a função de perda não sofre mais variação.
Podemos citar (em ordem de importância) algumas técnicas para cálculo e otimização do gradiente:
- Método do gradiente estocástico descendente (ou SGD): que calcula o gradiente através de um batch aleatório de dados;
- Método da propagação retrógrada (ou backpropagation): que calcula o gradiente do final para o início usando a regra da cadeia para a determinação das derivadas;
- Método do momento: que consegue chegar ao mínimo da função de forma muito mais rápida se comparada ao zig-zag do SGD;
- Método do momento de Nesterov (ou NAG): que é uma variante do método acima, porém mais rápido;
- Método RMSProp: que ajusta os valores de gradiente pelo inverso de uma média móvel;
- Método do gradiente adaptativo (ou ADAGRAD): que é semelhante ao RMSProp, porém utiliza a soma acumulada dos quadrados dos gradientes;
- Método da estimação do momento adaptativo (ou ADAM): que é o mais utilizado em redes neurais profundas, e reúne a técnica do RMSProp com a técnica do momento.
Sobre a base dados, de forma resumida, deve-se separar uma porção maior chamada de dados de treino, e uma parte menor chamada de dados de teste. Esta parte menor será utilizada apenas após o treinamento para verificações. Não se deve treinar o modelo com dados de teste!
A fim de se obter as métricas mencionadas anteriormente, é muito comum uma subdivisão nos dados de treino em uma pequena parte chamada de dados de validação. E para se evitar um possível viés no treinamento, pode-se utilizar a técnica K-Fold de validação cruzada (ou cross-validation), onde deve-se definir um hiperparâmetro K, como sendo o número de folds que serão alternados durante o treinamento, ocorrendo várias trocas entre os dados de treino e de validação.
Gostou das nossas dicas e quer saber mais sobre métricas de performance e funções de perda para Machine Learning? Então fale com nosso time. Entre em contato com a Viceri!