Rafael Glater

Aprendizado de máquina para iniciantes: Uma breve introdução

Esse post é pra você que não tem conhecimento algum sobre aprendizado de máquina, quer aprender mas não sabe por onde começar. Nesse post vou começar com um exemplo didático do nosso cotidiano mostrando como que nós fazemos para aprender a estimar o valor de uma casa e em seguida mostro como podemos fazer a máquina “imitar” esse nosso aprendizado.

Começando com um exemplo

Imagine que você seja um corretor de imóveis e seu trabalho consiste em estimar o valor de uma casa ou um apartamento para colocá-lo à venda. Então, para cada imóvel que apareça para ser vendido, você precisa avaliar suas diferentes características e então, baseado na sua experiência com outros imóveis, estimar um valor adequado para venda.

As características que podemos considerar são várias: Tamanho do imóvel, número de quartos, número de banheiros, tamanho do quintal, número de vagas na garagem, bairro onde está localizado, etc, etc, etc. Para facilitar nosso exemplo, vamos imaginar que o valor de um imóvel é definido considerando apenas uma característica: o tamanho total do imóvel em m².

Seria ótimo poder treinar uma máquina para que seja capaz de “aprender” a estimar o valor dos imóveis para te ajudar nessa tarefa (principalmente se considerarmos todas as características possíveis). Mas antes de ver como podemos fazer isso, vamos ver como nós (seres humanos) fazemos para estimar esse valor. Repare que eu destaquei dois pontos chaves ao estimar o valor de um imóvel: Usar informação histórica de imóveis vendidos anteriormente e analisar as características do imóvel a ser avaliado. Vejamos como combinar essas duas informações.

Como nós aprendemos

Ao longo dos anos vendendo imóveis, você organizou em uma planilha todos os imóveis que vendeu, relacionando suas características e o preço final da venda, da seguinte forma:

 

Planilha com dados históricos de vendas
Dados históricos de vendas - É a partir deles que você vai aprender

 

Para ajudar na visualização desses dados, vamos plotar um gráfico de dispersão:

 

Gráfico de dispersão dos seus dados
Analisar um gráfico é mais fácil que uma planilha cheia de números

 

Na figura acima, cada ponto representa um imóvel. No eixo x temos a informação do tamanho em m² e no eixo y temos o valor da venda. Analisando o gráfico como um todo, podemos notar que existe um certo padrão entre o tamanho do imóvel com o valor da venda, ou seja, quanto maior o imóvel, mais ele vale. (Pra esse exemplo isso é bem óbvio, mas lembre-se que estamos considerando apenas UMA característica. Imagina se tivéssemos 60?!).

Com o gráfico em mãos fica fácil definir o valor de um novo imóvel. Por exemplo, quanto valeria um imóvel com 1100 m²?

 


Pelo gráfico podemos estimar que uma casa de 1100m² vale aproximadamente US$500.000,00

 

Isso significa que podemos traçar uma reta que se ajusta ao longo dos dados que já possuímos e isso irá nos permitir prever o valor de novos imóveis, bastando apenas verificar em qual ponto da reta está o valor de y (preço do imóvel) de acordo com x (tamanho do imóvel). É claro que a reta não irá prever exatamente o valor de todos os imóveis do mundo. No nosso exemplo mesmo, temos inúmeros imóveis que estão um pouco abaixo ou acima da reta, temos imóveis com o mesmo tamanho mas que foram vendidos por preços diferentes. Nenhum ser humano seria capaz de acertar 100% das vezes o valor exato que um imóvel será vendido, mas é possível encontrar uma reta que erre o mínimo possível. Qual das retas abaixo você acredita que melhor prevê o valor de um imóvel?

 


Qual das retas melhor se "encaixa" aos dados?

 

Espero que você tenha respondido a reta da direita! :)

Ok, nós usamos os dados históricos para plotar um gráfico que nos permitiu “aprender” como o tamanho da casa se relaciona com seu preço de venda (descobrindo a reta) para sermos  capazes de prever o preço de novos imóveis. Fizemos tudo isso de forma visual e intuitiva, mas para que a máquina possa fazer o mesmo, precisamos usar um pouco de matemática. Na próxima seção vamos ver como.

Como a máquina aprende

Analisando os dados históricos pudemos notar que se definirmos uma reta que se encaixa sobre esses dados, seremos capazes de prever o valor de um novo imóvel. Quando falamos em treinar a máquina para aprender um modelo capaz de prever valores de imóveis, estamos justamente falando em aprender a equação da reta que se encaixa sobre os dados antigos e nos permitirá prever dados novos. Para isso usaremos uma técnica conhecida como aprendizado supervisionado. Nesse tipo de aprendizado, nós usamos dados antigos já com a "resposta correta" para que a máquina aprenda a fazer inferências sobre eles. No nosso caso, os dados são as características das casas que já foram vendidas e a "resposta" é o valor da venda. Durante o treinamento com esses dados, a máquina irá aprender como as características das casas se relaciona com seu valor final e aprenderá a reta que melhor representa esses dados. A grande questão é como fazer com que a máquina aprenda como será essa reta: qual será sua inclinação e onde irá cortar o eixo y.

Pra começar, vamos relembrar a equação de uma reta, já com a notação comum no aprendizado de máquina:

\(h(x) = \theta_0 + \theta_1 x\)

Não se assuste com essas letras, estamos olhando para a equação da reta! :) Trazendo essa equação para o nosso exemplo, “\(h(x)\)” seria o “y” da equação da reta, ele representa o valor que queremos encontrar (o preço do imóvel) e x é uma característica do imóvel (seu tamanho em m²). Os demais, \(\theta_0\) e \(\theta_1\), são os parâmetros da equação da reta que temos que aprender para melhor encaixar essa reta aos nossos dados. Vejamos como eles influenciam no comportamento da reta:

 

 

Veja que o \(\theta_0\) representa o ponto onde a reta corta o eixo y e o \(\theta_1\) representa a inclinação da reta. No primeiro exemplo da figura acima temos que \(\theta_0 = 1.5\) (justamente o ponto onde a reta corta o eixo y) e \(\theta_1 = 0\), ou seja, é uma reta sem inclinação alguma. Os outros dois exemplos funcionam de forma análoga.

Durante o aprendizado, a máquina precisa descobrir quais são os valores de theta que formam a reta que melhor se aproxima dos dados. Isso significa que ao experimentar valores theta, temos que conferir com nossos dados de treino o quão distante eles estão da reta. Para exemplificar, vamos supor que queremos experimentar valores para dois conjuntos de thetas: (theta0=60000, theta1=468) ou (theta0=80000, theta1=528) e estamos usando a informação de apenas 4 casas como treino. Veja nas figuras abaixo, a informação das 4 casas na planilha e o gráfico desses dados com as retas usando esses valores de theta que queremos experimentar:

 

 

Para saber qual é o melhor conjunto de thetas, temos que verificar qual deles erra menos nas predições. Fazemos isso através da diferença entre o valor predito pelo modelo (na reta) com o valor real do treino. Veja na planilha abaixo os cálculos:

 

Tamanho em m² Valor real

Valor predito usando
\(\theta_0 = 60000, \theta_1 = 468\)

Valor real - valor predito
260 $179.900 $181.680 $1.780
915 $539.900 $488.220 $51.680
1186 $573.900 $615.048 $41.148
1365 $699.900 $698.820 $1.080
  $95.688

 

Veja que ao usar o primeiro conjunto de thetas, nosso modelo preveu que uma casa de 260m² custaria $181.680,00, mas na verdade ela custou $179.900,00. Isso significa que erramos a previão em $1.780,00. Fazendo a soma de todas as diferenças nos nossos dados de treino temos o erro total do modelo, que neste caso foi de $95.688,00. Vejamos qual o erro para o segundo conjunto de thetas:

 

Tamanho em m² Valor real

Valor predito usando
\(\theta_0 = 80000, \theta_1 = 528\)

Valor real - valor predito
260 $179.900 $217.280 $37.380
915 $539.900 $563.120 $23.220
1186 $573.900 $706.208 $132.308
1365 $699.900 $800.720 $100.820
  $293.728

 

Para o segundo conjunto de thetas, o erro total é $293.728,00, que é muito maior que o primeiro caso. Logo a primeira configuração de thetas é melhor para estimar o valor das casas.

Vamos dar um zoom no primeiro caso para entender melhor como essa diferença entre o que foi predito e o valor real se reflete no gráfico:

 


Diferença entre o valor predito pelo nosso modelo e o valor real

 

Veja que o erro na predição nada mais é que a distância entre os dados que temos de treino e a reta que estamos testando. Para uma casa com 915 m², nossa reta prevê que ela teria o valor de $488.220,00, enquanto que seu valor real é $539.900,00, erramos em $51.680,00. 

Na prática, nós não saímos por aí testando todas as combinações de thetas possíveis para escolher aquela que erra menos. Existem técnicas que nos permitem “caminhar em direção” aos thetas que irão minimizar o erro do modelo. Quando encontrarmos esses thetas, nosso modelo de predição está pronto para ser usado! Isso significa que a máquina "aprendeu" quais os melhores parâmetros para resolver esse problema em particular.

Esse processo que acabamos de ver nesse post, que define uma reta que melhor se encaixa nos dados, se chama regressão linear. No próximo post falarei com mais detalhes como a regressão linear funciona e como fazemos para estimar seus parâmetros theta.

Muito mais pela frente

Essa foi uma pequena introdução sobre aprendizado de máquina, mostrando como podemos ensinar uma máquina a estimar o valor de uma casa. A técnica que usamos aqui (regressão linear) é apenas uma das várias técnicas existentes que podemos aplicar no aprendizado de máquina. A escolha de qual técnica usar vai depender da natureza do problema que você quer resolver. O mais importante dessa pequena introdução é entender o mecanismo de aprendizado usado pela máquina. Em geral, tudo funciona de forma análoga ao que vimos aqui: escolher uma técnica e fazer a máquina aprender os parâmetros necessários. No exemplo desse post introdutório, nós escolhemos a regressão linear para resolver nosso problema e tudo que a máquina precisou fazer foi aprender os parâmetros theta. Para outros tipos de problemas existem outras técnicas que podemos usar e os parâmetros que a máquina precisa aprender.