• Nenhum resultado encontrado

aula 07 - Avaliação do algoritmo

N/A
N/A
Protected

Academic year: 2021

Share "aula 07 - Avaliação do algoritmo"

Copied!
12
0
0

Texto

(1)

Diagnóstico da Aprendizagem de Máquina

Após desenvolver um algoritmo inteligente, é preciso treinar o algoritmo (calibrar seu modelo) para que ele possa ser usado para predição de valores para dados futuros. Os valores previstos a partir desses dados futuros, entretanto, podem não ser realistas, ou apresentar uma discrepância muito grande, sugerindo que seu algoritmo não foi bem treinado.

Existem várias causas para esse problema, e consequentemente, existem várias possíveis soluções. As abordagem mais comuns para minimizar o erro de predição de um algoritmo são:

- Aumentar a quantidade de dados de treinamento - Diminuir a quantidade de variáveis

- Aumentar o número de variáveis

- Acrescentar polinômios não lineares na hipótese

- Modificar (aumentar ou diminiuir) o parâmetro de regularização

É comum observar que a escolha de qual das estratégias acima será utilizada, é geralmente feita intuitivamente pelos projetistas. O maior problema dessa abordagem é escolher uma possível solução que resulte em grande gasto de investimento ou tempo, que não resolva o problema.

Para evitar o desperdício de dinheiro e/ou tempo, pode-se usar algumas ferramentas mais práticas e analíticas.

O diagnóstico consiste em implementar um teste o qual seja possível detectar o que está ou não está funcionando em um algoritmo, ajudando a decidir qual abordagem tomar para melhorar o desempenho do programa. Esses teste, em geral, requerem um certo tempo para serem implementados e analisados, contudo, o tempo e investimento necessários são geralmente compensadores.

Avaliação da Hipótese

Os dados disponíveis para treinamento do seu algoritmo, são usados para calibrar a sua hipótese, possibilitando a sua utilização para dados futuros. Como não há como prever a natureza desses dados, pode-se simular tal situação. Isso é feito dividindo os dados disponíveis de tal forma que parte dos dados sejam usados para treinar o algoritmo, e outra parte para avaliar seu desempenho.

(2)

Em outras palavras, tendo disponíveis m amostras (x(i), y(i)), para i = 1, 2, … , m (onde x e y são

vetores), podemos dividir essa tabela de dados em dois subconjutos, uma para treinamento e outro para teste. Portanto, teríamos dois grupos de dados (xtrain(i), ytrain(i)) para i = 1, 2, … , mtrain, e (xtest(i),

ytest(i)) para i = 1, 2, … , mtest, onde mtrain + mtest = m.

Uma divisão muito usada para esses dois subgrupos de dados é usar 70% dos dados disponíveis para realizar o treinamento do algoritmo, e 30% para testá-lo. Os resultados obtidos com o grupo de dados de teste, são então analisados para avaliar a performance do algoritmo.

A função-custo do algoritmo, portanto, também poderá ser calculada separadamente, uma para o subconjunto de treinamento e outra para o de teste, por exemplo, no caso de uma regressão linear:

J (θ)= 1 2 m

[

i=1 m (hθ(x (i ) )−y(i) )2+ λ

j=1 n θ2j

]

Jtest(θ)= 1 2 mtest

[

i=1 mtest (hθ(xtest(i ) )−ytest(i ))2+ λ

j=1 n θ2j

]

Como a maior parte dos dados é usada para o treinamento, podemos suprimir o subscrito “train” na equação do custo, como na equação acima, assim, teremos m + mtest = total de amostras.

O mesmo pode ser aplicado em uma regressão logística:

J (θ)=−

[

1 m

i=1 m y(i )⋅log(hθ(x (i) ))+(1− y(i))⋅log(1−hθ(x (i) ))

]

+ λ 2 m

j=1 n θ2j Jtest(θ)=−

[

1 mtest

i=1 mtest ytest (i) ⋅log(hθ(xtest (i) ))+(1− ytest (i) )⋅log(1−hθ(xtest (i) ))

]

+ λ 2 m

j=1 n θ2j

Nesse caso, podemos também mensurar a função-custo pelo erro de classificação:

Testerror= 1 mtest

i=1 mtest err(hθ(x ), y ) onde err (hθ(x ), y )=

{

1 sehθ(x)⩾0.5 y =0 ou hθ(x )<0.5 y=1 0 caso contrário

(3)

Seleção de Modelo

A simples calibração de um modelo (hipótese) pode não ser o suficiente para que um algoritmo optimizado generalize de forma satisfatória para dados futuros, como dito acima. Dentre as possíveis abordagens para gerar um modelo eficiente, temos o uso de mais ou de menos parâmetros, aumentar ou diminuir o parâmetro de regularização, etc.

Assim, uma forma de tomar a decisão da complexidade da hipótese (número de parâmetros) é testar diferentes modelos e selecionar aquele com melhor desempenho.

Suponha, por exemplo, o caso de uma regressão linear de uma variável. Podemos ter diferentes hipóteses com diferentes graus polinomiais:

1- hθ(x )=θ0+θ1x 2- hθ(x )=θ0+θ1x +θ2x2 3- hθ(x )=θ0+θ1x +θ2x2+ θ3x3 … 10- hθ(x )=θ0+θ1x +θ2x 2 +⋯+θ10x10

Para decidir qual das hipóteses usar, podemos treinar cada uma delas com o subconjunto de dados de treinamento (x(i), y(i)), para i = 1, 2, … , m, e usar os vetores de parâmetros θ estimados para o

cálculo da função-custo Jtest(θ) para o subconjunto de teste (xtest(i), ytest(i)) para i = 1, 2, … , mtest. Ao

final, podemos selecionar o modelo com o menor custo.

O maior problema dessa abordagem consiste escolher o modelo a partir do subconjunto de teste e posteriormente analisar e avaliar o desempenho do algoritmo usando o mesmo subconjunto. Isso pode resultar em uma análise falha e tendenciosa.

Um procedimento mais usado, para resolver tal problema, é sub-dividir o conjunto de dados de treinamento em 3 subconjuntos: treinamento (train), validação (cross-validation) e teste (test). Os dados de treinamento são usados para calibrar os diversos modelos possíveis, os dados de validação são usados para a escolha do modelo, e os dados de teste são usados para analisar e avaliar o desempenho.

(4)

Uma divisão geralmente usada para essas 3 classes de dados de treinamento é de 60% dos dados para o treinamento do algoritmo, 20% para validação e 20% para teste. Novamente, não usaremos subscrito para o conjunto de dados de treinamento, e usaremos o subscrito “cv” para a validação e “test” para o test. Assim:

J (θ)= 1 2 m

[

i=1 m (hθ(x (i ) )−y(i))2+ λ

j=1 n θ2j

]

Jcv(θ)= 1 2 mcv

[

i=1 mcv (hθ(xcv (i) )−ycv (i) )2+ λ

j=1 n θ2j

]

Jtest(θ)= 1 2 mtest

[

i=1 mtest (hθ(xtest(i ) )−ytest(i ))2+λ

j=1 n θ2j

]

Onde o total de amostras de treinamento é m + mcv + mtest.

Diagnóstico de sub-ajuste e sobre-ajuste

Conforme apresentado em aulas passadas, a complexidade da hipótese pode ser menor que a necessária, causando um problema de sub-ajuste dos parâmetros do modelo (figura abaixo, à esquerda), ou maior que a necessária, causando um sobre-ajuste do modelo (figura à direita). O ideal é uma complexidade intermediária, ajuste o modelo aos dados de treinamento e que faça uma predição satisfatória para dados futuros (figura ao centro).

hθ(x )=θ0+θ1x hθ(x )=θ0+θ1x +θ2x 2

hθ(x )=θ0+θ1x +θ2x 2

3x3+θ4x4

Uma forma de identificar os problemas dos extremos da figura acima, é gerar um gráfico com os valores das funções-custo de treinamento e validação, apresentados nas equações anteriores. Assim, fazemos o cálculo das duas funções para diferentes modelos, de diferentes complexidades de forma crescente, p.e. fazendo no eixo horizontal o grau do polinômio usado para a hipótese de uma regressão logística.

(5)

Na figura acima, temos os gráficos das funções custo de treinamento e validação, em função do grau do polinômio utilizado em cada hipótese. Conforme esperado, a função-custo de treinamento diminui a medida que aumentamos o grau do polinômio, pois uma hipótese mais complexa tende a um ajuste mais próximo dos dados.

A função-custo de validação, por outro lado, tem um comportamento nem sempre decrescente. Para graus menores, ou seja, hipóteses mais simples, temos os casos de sub-ajuste do modelo, significando que o modelo matemático que descreve as amostras não representa muito bem a distribuição estatística delas. A medida que aumentamos a complexidade da hipótese, a função-custo de validação diminui, que também é esperado, pois aumentando o grau do polinômio teremos uma função mais ajustada.

Ao aumentarmos demais esse grau, entretanto, vemos um aumento no valor da função-custo. Isso se deve ao sobre-ajuste do modelo. A função-custo de treinamento diminui pois uma função mais complexa consegue minimizar o erro de treinamento, contudo, o modelo treinado se torna não-realista, e não generaliza o suficiente para dados futuros, acarrentando em um alto erro de validação.

Em resumo, uma função-custo elevada para o grupo de validação (ou de teste) pode significar um problema de sub-ajuste, também chamado de alta tendência (high bias), ou um problema de sobre-ajuste, ou alta variância (high variance). Quando a função-custo do grupo de treinamento também for alta, temos um problema de alta tendência, quando essa função tem um valor pequeno, comparado ao do grupo de validação, temos um problema de alta variância.

Esse diagnóstico é essencial para a solução do problema, visto que cada um tem soluções específicas.

(6)

Regularização na Solução de Alta Tendência e Alta Variância

A influência do parâmetro de regularização no processo de treinamento tem um efeito similar ao grau do polinômio, pois ele penaliza os parâmetros da hipótese, simplificando o modelo. Dessa forma, sabemos que um alto valor de λ tende a simplificar a equação, enquanto um baixo valor de λ mantém a equação do modelo pouco alterada.

Considere a hipótese de uma regressão linear mostrada abaixo. Essa é uma função polinomial de grau 4, que pode vir a ser muito complexa para um determinado conjunto de dados de treinamento, causando uma sobre-ajustagem.

hθ(x )=θ0+θ1x +θ2x 2

3x3+θ4x4

Sua função-custo, incluindo o termo de regularização será:

J (θ)= 1 2 m

i=1 m (hθ(x (i) )−y(i))2+ λ 2 m

j=1 n θ2j

Ao usarmos um valor de λ = 0, anularemos o termo de regularização, e a função custo testará a hipótese da forma que ela é definida, relativamente complexa. Isso resultará um ajuste maior dos parâmetros, acarretando em um função-custo baixa, mas pouco generalizada para dados futuros, resultando em uma função-custo elevada para o sub-grupo de validação.

Ao aumentarmos o valor de λ, os parâmetros do modelo são penalizados, e a equação da hipótese é simplificada. Isso resulta em um ajuste pior dos parâmetros utilizando os dados de treinamento, aumetando sua função-custo, entretanto, essa função mais simples se torna mais capaz de generalizar para dados não utilizados pelo algoritmo, diminuindo o custo para os dados de validação.

Elevando muito o valor de λ, a hipótese é simplificada cada vez mais, aumentando a função-custo de treinamento, causando um problema de sub-ajuste. Nesse caso, o custo usando os dados de validação também tendem a aumentar.

Assim como na seção anterior, podemos testar vários valores do parâmetro de regulaização e verificar com o sub-grupo de validação aquele que melhor generaliza o modelo para dados futuros.

(7)

Ao gerarmos um gráfico das funções-custo com relação ao parâmetro de regularização, teremos, como esperado, um comportamento semelhante ao gráfico anterior, em função da complexidade da hipótese, entretanto, esse novo gráfico será espelhado.

Observando a figura acima, podemos identificar as regiões de alta variância e alta tendência, citadas acima. O valor ótimo para o parâmetro de regularização será aquele com menor valor de custo para os dados de validação.

Uma forma de obter o gráfico acima, é treinar o algoritmo utilizando vários valores de λ, p.e. λ = 0, 0.01, 0.02, 0.04, 0.08, … , 10.24 (em potências de 2). Para cada valor desse parâmetro, o modelo é calibrado, resultando em um conjunto de valores de θ. Esses valores são então usados para calcular a função-custo utilizando os dados de validação. Para cada valor de λ, colocamos no gráfico (como o acima) os valores correspondentes para cada função-custo.

Curvas de Aprendizado

As curvas de aprendizado são uma ferramenta importante para o diagnóstico de desempenho de um algoritmo inteligente. Tais curvas permitem, além de detectar a alta variância e alta tendência, avaliar a necessidade ou não de mais dados de treinamento para calibrar o modelo matemático. Essa ferramenta exige um tempo considerável de programação e processamento, entretanto sua análise permite economizar muito tempo de projeto evitando estratégias ineficientes no aprimoramento de um algoritmo.

A construção das curvas de aprendizado se dá fazendo o treinamento da rede com quantidades diferentes de dados de treinamento, calculando as funções-custo de treinamento e validação.

(8)

Em outras palavras, a partir do conjunto completo de dados de treinamento disponíveis, seleciona-se um número pequeno deles (p.e. 1 ou 2%, ou menos de 10 amostras) para determinar os parâmetros da hipótese. Após o treinamento, tem-se disponível o valor da função-custo de treinamento. A partir desses parâmetros calibrados, calcula-se o valor da função-custo de validação utilizando todas as amostras desse sub-grupo. Então, esses dois valores são inseridos em um gráfico do erro X número de dados de treinamento.

Em seguinda, aumenta-se o número de amostras de treinamento em uma pequena quantidade, e repete-se o procedimento anterior. Isso é repetido até ser usado o conjunto completo de dados de treinamento disponível. Esse gráfico é ilustrado na figura abaixo.

O comportamento esperado para as duas curvas é resumido na figura. Utilizando poucas amostras para o treinamento de um algoritmo (região à esquerda do gráfico), o erro de treinamento tende a ser baixo, pois existem poucos pontos a serem ajustados, e mesmo modelos simples podem representar com boa aproximação esses dados. A função-custo de validação, por outro lado, tem um alto valor, pois com baixo número de amostras, o modelo calibrado dificilmente será genérico o suficiente para dados não usados no treinamento.

Ao aumentar o número de amostras para o treinamento, a função-custo tende a aumentar, visto que as hipóteses terão mais dificuldade em serem ajustadas para todos os pontos, entretanto, o modelo calibrado tende a ser mais genérico, diminuindo a função-custo de validação.

Considere agora as curvas de aprendizagem ilustradas no gráfico abaixo. Nele, a função-custo de treinamento converge mais rapidamente para um valor relativamente alto, enquanto que a função de validação decresce pouco e converge para um valor próximo da função de treinamento.

(9)

A rápida convergência de ambas as curvas para um valor relativamente alto, e semelhantes, sugere que o modelo tem uma alta tendência. Essa informação pode ser extraída se pensarmos que uma função muito simples sofrerá de um sub-ajuste, e o aumento no número de amostras não contribuirá para sua melhoria, pois a simplicidade do modelo não permitirá uma melhor ajuste para mais dados. Nesses casos, fica claro que aumentar o número de amostras para o treinamento de um algoritmo, não será uma solução para melhoria da hipótese, portanto, não se deve investir tempo ou dinheiro em coletando mais dados.

Em uma situação oposta, podemos ter um modelo com sobre-ajuste, usando funções muito complexas que se ajustam muito bem para o conjunto de treinamento usado, mas que não generalizam o suficiente para dados futuros, acarretando em um erro de validação muito alto.

Nesse caso, temos um intervalo considerável entre as duas curvas, mesmo para maiores quantidades de amostras de treinamento. Para esse caso de alta variância, um ajuste no parâmetro de regularização, ou uma simplificação da hipótese pode solucionar o problema. Alternativamente, se for observado uma tendência de diminuição do valor da função-custo de validação, pode-se considerar o uso de mais amostras de treinamento, ou seja, investir na coleta de amostras, pois tal tendência tenderá a convergir as duas curvas para um mesmo valor.

(10)

Resumo

No início desse documento, foram listadas algumas possíveis estratégias para melhoria do desempenho de um algoritmo de aprendizagem. Posteriormente foram apresentadas ferramentas de análise para diagnosticar os problemas do algoritmo. Assim, podemos juntar as informações e classificar as estratégias nos diferentes tipo de problema que elas solucionam.

- Aumentar a quantidade de dados de treinamento: alta-variância

Oferece melhor ajuste para hipóteses mais complexas, tornando-as mais genéricas para dados futuros

- Diminuir a quantidade de variáveis: alta-variância

Diminuir o número de variáveis resulta em hipóteses mais simples, reduzindo a ocorrência de sobre-ajuste

- Aumentar o número de variáveis: alta-tendência

Ao contrário do problema anterior, aumentar o número de variáveis torna a hipótese mais complexa, que pode solucionar problemas de sub-ajuste causados por modelos muito simples

- Acrescentar polinômios não lineares na hipótese: alta-tendência

Novamente, essa solução tende a aumentar a complexidade da hipótese. - Aumentar o valor do parâmetro de regularização: alta-variância

Aumentar o parâmetro de regularização é penalizar ainda mais os parâmetros do modelo, fazendo com que a função que o define seja simplificada.

- Diminui o valor do parâmetro de regularização: alta-tendência

Tem o efeito contrário ao anterior, penalizando menos os parâmetros do modelo e aumentando sua complexidade.

Logicamente, mais de uma estratégia pode ser implementada para resolver cada um dos problemas. As ferramentas apresentadas mostram, justamente, como identificar o problema para a escolha da solução mais apropriada.

(11)

Análise de Erro de Classificação

Em sistemas de classificação supervisionados, como a regressão logística e as redes neurais, é importante medir a eficiência e a eficácia do sistema, quantificando a taxa de acerto do sistema em comparação ao conjunto total de dados de treinamento.

Uma forma simples de medir a eficiência de um sistema de classificação é dividir o número de classificações corretas pelo número total de dados de validação:

Ef =classificações corretas total de classificações

A equação acima, entretanto, se torna tendenciosa quando o número de amostras de cada classe usadas para o treinamento e validação são diferentes. Por exemplo, considere o caso do classificador de tumor, retornando se ele é cancerígeno ou não, o qual somente 1% dos dados usados para treinamento e validação correspondem à diagnósticos positivos (y = 1). Fazendo um sistema que retorna sempre o diagnóstico negativo (y = 0), teremos um sistema com eficiência de 99%.

No exemplo acima, é evidente que a alta eficiência não corresponde a um bom classificador. Por isso, uma métrica diferente deve ser utilizada. No caso de classificadores binários, quatro possíveis resultados são definidos, como ilustrado na tabela abaixo.

Classe real (y)

1 0 Classe prevista (hθ(x)) 1 positivo verdadeiro positivo falso 0 negativo

falso verdadeironegativo

A partir das definições acima, podemos definir duas métricas de quantificação da eficiência de um sistema de classificação: a precisão e a revocação.

P= positivos verdadeiros totalde predições positivas=

positivos verdadeiros

(12)

R= positivos verdadeiros total de positivos reais=

positivos verdadeiros

positivos verdadeiros+negativos falsos

A precisão representa a parcela de acertos de resultados positivos, em comparação ao conjunto total de predições positivas, enquanto que a revocação (ou sensibilidade) consiste na parcela de resultados positivos que de fato eram positivos nos dados de validação.

Um sistema ideal terá valores altos para ambas medidas, naturalmente, se aproximando de 1.0. Em situações reais, no entanto, aumentar o valor da precisão geralmente acarreta em uma diminuição da sensibilidade, e vice-versa. A decisão de qual dos valores terá mais importância na medição da eficiência do algoritmo, dependerá da aplicação.

Considere por exemplo, o classificador de câncer. Para evitar falsos positivos, ou seja, somente diagnosticar o paciente positivamente se ele realmente tiver câncer, devemos aumentar a precisão. Para isso, podemos aumentar o limiar de classificação da função sigmoid. Em geral, o limiar é 0.5, mas se esse limiar aumentar, p.e. 0.7, o paciente somente será diagnosticado positivamente se a probabilidade dele ter câncer for alta, dessa forma, o valor da precisão aumentará.

Por outro lado, ao aumentar o limiar de decisão, casos com relativa menor probabilidade serão classificados como negativos, aumentando o número de falsos negativos, consequentemente diminuindo a sensibilidade.

Podemos imaginar um caso contrário, onde o número de falsos negativos deve diminuir, pois nenhum caso real de câncer pode ser desprezado. Nesse caso, podemos diminuir o limiar de decisão, aumentando a revocação do sistema. O número de falsos positivos, portanto, devem aumentar, diminuindo o valor da precisão.

Uma métrica usada para medir a eficiência do sistema classificador, utilizando ambos valores calculados acima, é a contagem F1 ( F1 score):

F1=2 PR P+F

Esse valor varia entre 0 e 1, onde o valor 0 indica que uma das duas medidas é zero, ou seja, temos um classificador tendencioso, que ignora os falsos positivos ou os falsos negativos.

Referências

Documentos relacionados

A média destes valores é analisada em tempo real e, caso ultrapasse o valor definido pelos Parâmetros de Segurança ou caso o Tempo de Ensaio Previsto seja alcançado, a aquisição

Débitos tributários e condominiais (propter rem) serão sub-rogados no valor da arrematação (art. 908, § 1º, CPC), os quais ficam a cargo dos interessados a pesquisar e

Os resultados mostram que as simulações podem ser facilmente utilizadas em sala de aula para realização de experimentos virtuais e que as animações tridimensionais são

É imprescindível alertar sobre os riscos da comparação entre a formação médica e a formação de professores para a educação básica: a ideia-força da formação prática

A palavra “possível” tem três sílabas: pos-sí-vel. Ao lermos a palavra, colocamos maior força na sílaba “si”. Ou seja, acentuamos – destacamos,

Da mesma forma, o acento circunflexo não deve mais ser usado para diferenciar “pêlo” (substantivo) de “pelo” (preposição).. S AIBA

Trocas Culturais, História e Geografia do Barroco na América Portuguesa”, realizado de 6 a 8 de maio de 2015, no Museu de Arte Contemporânea da Universidade de São Paulo

FIO, para sutura, catgut cromado n. 0,0 fio com 70 cm de comprimento, agulha de 5,0 cm circulo, cilindrica, para cirurgia gastrointestinal. Embalagem: envelope individual, em