A Teoria por Trás dos Códigos — Problemas de Classificação

Pandas Couple
6 min readMay 4, 2021

--

No nosso último artigo, fiz uma explanação geral sobre o modelo de regressão linear, explicando todo o modelo teórico. Agora vamos fazer a mesma coisa para os problemas de classificação, utilizando a regressão logística. Para conferir nosso artigo sobre regressão linear é so apertar neste link.

Regressão Logística

Assim como na regressão linear utilizamos um sistema de aprendizagem supervisionada, na regressão logística é a mesma ideia, pois, recebemos um conjunto de dados e já sabemos como deve ser o nosso output correto, tendo a ideia de que existe uma relação entre o input e o output.

Em um problema de classificação, estamos tentando prever os resultados em uma saída discreta. Em outras palavras, estamos tentando mapear as variáveis de entrada em categorias discretas. Por exemplo, y ∈ {0, 1}.

Note que, essas categorias discretas que ‘y’ pode assumir não necessariamente precisam ser apenas 0 e 1, tudo depende do problema que você está tentando resolver, podendo assim, assumir mais valores do que apenas 0 e 1 (Isso será abordado em um tópico mais a frente).

Utilizar a regressão linear em problemas de classificação não é interessante, pois, a classificação não é uma função linear.

Representação do modelo

  • X: Variáveis de entrada / Recursos de entrada;
  • y: “Produto” / Variável de destino que estamos tentando prever;
  • (X, y): Par de exemplos de treinamento;
  • m: Tamanho do conjunto de treinamento;
  • h(x): Função de hipótese que estamos tentando aprender, de forma que ‘h’ seja um bom preditor para o valor correspondente de ‘y’;
  • Usaremos ‘X’ para denotar o espaço dos valores de entrada e ‘y’ os de saída.

Poderíamos abordar o problema de classificação ignorando o fato de que ‘y’ tem valor discreto e usar nosso algoritmo de regressão linear para tentar prever ‘y’ dado ‘X’. É fácil construir exemplos em que esse método tenha um desempenho ruim.

Intuitivamente, não faz sentido para h(x) assumir valores maiores do que 1 ou menores do que 0, quando sabemos que y ∈ {0, 1}. Para corrigir isso, vamos mudar a forma de nossa hipótese h(x) para satisfazer: 0 ≤ h(x) ≤ 1; Isso é feito utilizando um novo formulário para h(x), nesse caso a função sigmoide também chamada de função logística.

A forma geral da nossa função logística é:

Graficamente, ela é representada dessa forma:

https://pt.wikipedia.org/

A função mostrada aqui, mapeia qualquer número real para o intervalo (0, 1), tornando-a útil para transformar uma função de valor arbitrário em uma função mais adequada para a classificação.

Continuando o raciocínio, h(x) nos dará a probabilidade de que nossa previsão seja 1; Por exemplo, h(x) = 0,7 nos dá uma probabilidade de 70% de que o resultado seja 1.

A probabilidade de que nossa previsão seja 0 é apenas o complemento de que a nossa probabilidade seja 1; Por exemplo, se a probabilidade de que a previsão seja 1 for de 70%, então para 0 é 30%. De outra forma: P(y = 0|X;θ) + P(y = 1|X;θ) = 1

Limite de decisão

O limite de decisão é basicamente a linha que separa a área onde ‘y = 0’ e ‘y = 1’. Essa linha é criada por nossa função de hipótese (h(x)).

Para obter nossa classificação discreta (0 ou 1), podemos traduzir a saída da função de hipótese da seguinte forma:

  • Se h(x) ≥ 0,5 então y = 1;
  • Se h(x) < 0,5 então y = 0.

A forma como a nossa função logística se comporta é que quando sua entrada ≥ 0, então sua saída será ≥ 0,5. Então, se a nossa entrada para a função for θ.X (lembrar da nossa função de hipótese), então isso significa que:

  • h(x) ≥ 0,5 quando θ.X ≥ 0.

A partir disso, podemos agora dizer que:

  • θ.X ≥ 0 então y = 1;
  • θ.X < 0 então y = 0.

Essa parametrização dos limites de decisão, somos nós quem fazemos em nosso modelo e podemos ajusta-los para ao invés de serem 0,5 podem estar entre o intervalo de 0,1 até 0,9, por exemplo. Tudo vai depender do seu problema e como você quer mapear sua hipótese.

Função de custo

Não podemos usar a mesma função de custo que utilizamos para regressão linear, porque a função logística fará com que a saída fique um pouco distorcida. Em outras palavras, ela não será mais uma função convexa. Se você ainda tiver dúvidas do que exatamente significa a função de custo, leia este artigo.

Podemos escrever a nossa função de custo inteira da seguinte forma:

Vamos plotar um gráfico para entender o que realmente está acontecendo na função de custo:

https://alvarezsolucoesdigitais.com/estatistica/introducao-a-regressao-logistica/

Observe esses dois gráficos. Um mostra quando ‘y = 0’ e o outro quando ‘y = 1’. O que acontece é o seguinte:

  • Se a nossa resposta for ‘y = 0’, então a função de custo será 0 se a nossa função de hipótese também der 0. Se nossa função de hipótese se aproximar de 1, então a função de custo se aproximará do infinito.
  • Se a nossa resposta for ‘y = 1’, então a função de custo será 0 se nossa função de hipótese produzir 1. Se nossa função de hipótese se aproximar de 0, então a função de custo se aproximará do infinito.

Escrever a função de custo dessa forma garante que J(θ) seja convexo para a regressão logística.

Gradient descent

Se você não está familiarizado com o algoritmo do gradient descent, então sugiro novamente que leia o artigo em destaque no tópico acima. Podemos deduzir nosso algoritmo da seguinte forma:

Observe que esse algoritmo é idêntico ao que usamos na regressão linear.

Classificação multiclasse — one vs all

Agora abordaremos a classificação dos dados quanto tivermos mais de duas categorias. Em vez de y = {0 , 1}, expandiremos nossa definição de forma que y = {0, 1, … , n}.

Em cada um, prevemos a probabilidade de que ‘y’ seja membro de uma de nossas classes:

  • h(x) = P(y = 0|X;θ);
  • h(x) = P(y = 1|X;θ);
  • h(x) = P(y = n|X;θ).

Basicamente, estamos escolhendo uma classe e, em seguida, agrupando todas as outras em uma única segunda classe.

Fazemos isso repetidamente, aplicando regressão logística binária a cada caso e, em seguida, usamos a hipótese que retorna o valor mais alto como nossa previsão.

Resumindo: Treine um classificador de regressão logística h(x) para cada classe para prever a probabilidade de que y = i. Para fazer a previsão sobre um novo ‘X’, escolha a classe que maximizar h(x).

Conclusão

Vimos ao longo desse artigo como mapear nossas entradas em saídas discretas utilizando a função logística; Temos uma maneira de medir nosso erro utilizando a função de custo e temos uma maneira de convergir para o menor erro possível utilizando o algoritmo do gradient descent.

Espero ter conseguido ajudar a clarear o conhecimento por trás dos modelos de classificação. Em um próximo trabalho, vamos fazer uma explanação geral sobre o overfitting e como tentar resolve-lo. Vou deixar alguns links de trabalhos de classificação já feitos por mim anteriormente para quem estiver interessado em continuar a aprender sobre esses modelos so que agora com implementações práticas.

Fique a vontade para comentar, tirar alguma dúvida ou passar um feedback. Se você gostou nos siga aqui no blog que iremos continuar com essa série de trabalhos explicativos.

Obrigado!

Trabalhos de classificação:

--

--

Pandas Couple
Pandas Couple

Written by Pandas Couple

Casal de Cientistas de Dados, contribuindo para a comunidade de Data Science.

No responses yet