Publicação:
Atualização:
Tags: ,

Recentemente encontrei nas minhas bagunças um caderno com as anotações que fiz enquanto estudava machine learning pela primeira vez, há uns cinco anos. Relendo as notas vi que tinham alguns cálculos, uns gráficos, e me dei conta: naquela época eu fazia regressão linear simples à mão, para treinar. Sempre aprendo melhor quando pratico.

Daí me surgiu a ideia de transcrever essas notas — melhor: passar para este blog explicações de conceitos de aprendizado de máquina. O primeiro texto é este. E é justamente sobre regressão linear.

De forma geral, regressão linear é o modelo que estima a relação linear entre uma variável dependente e uma ou mais variáveis explanatórias. Uma ilustração simples:

Você quer comprar um carro. Você observa a marca, o modelo, o ano de fabricação, se é câmbio manual ou automático etc. Todos esses elementos que você observa são importantes para você analisar se o preço pedido por ele é aceitável. Esses elementos (marca, modelo, ano...) são variáveis explanatórias; o preço é a variável dependente.

Em machine learning utilizamos regressão linear nos problemas em que desejamos prever valores a partir de um conjunto de variáveis de entrada (também chamadas de features). Um exemplo:

Em determinado bairro da cidade, há 99 casas à venda. Os preços variam entre R$ 151 mil e R$ 1,150 milhão, seguindo relativamente sua metragem. Algumas casas têm 100m², outras 150m², 200m²... A sua casa tem 182m². Quanto você deve pedir por ela?

Se colocarmos em gráfico as 99 casas do nosso exemplo, com suas metragens e valores, teríamos algo assim:

Neste cenário, o valor que queremos prever é o preço da casa — para isso, utilizamos a metragem como feature.

(Poderíamos ter mais de uma feature, como quantidade de quartos ou de banheiros, idade do imóvel etc. Mas para ficarmos numa explicação mais didática, vamos trabalhar apenas com uma variável. Aliás, chamamos este modelo de regressão linear simples justamente por isso: é simples porque trabalhamos com apenas uma variável preditora.)

Cientificamente, buscamos modelar a relação entre as variáveis de entrada (%%x%%) e a variável alvo (%%y%%) — ou seja, objetivamos encontrar a melhor reta que descreve a relação entre nossos dados (afinal, cada %%y%% está associado a um %%x%% e, portanto, temos um conjunto %%(x_1,y_1),(x_2, y_2),...,(x_n,y_n)%%). Quando encontramos a reta, conseguimos determinar o valor previsto (%%\hat{y}%%) da sua casa.

Em termos matemáticos, nosso %%\hat{y}%% é encontrado por meio desta fórmula:

$$ \hat{y}_i=\beta_0 + \beta_1 x_i $$

sendo,

  • %%\hat{y}_i%%: o valor previsto para %%y%% dada a variável de entrada %%x_i%%
  • %%\beta_0%%: o intercepto da reta (isto é, o valor de %%\hat{y}%% quando %%x=0%%)
    • É o ponto onde a reta cruza o eixo %%y%%. Mesmo que %%x=0%%, você ainda terá um resultado básico. No nosso exemplo, de preço de casa a partir da metragem, %%\beta_0%% representa o valor previsto quando a metragem (%%x%%) é 0. (Pode parecer lógico que uma casa com 0m² custe R$ 0, mas para a modelagem não funciona assim.)
  • %%\beta_1%%: a inclinação (slope) da reta
    • Indica quanto o valor previsto (%%\hat{y}%%) muda quando %%x%% aumenta em 1 unidade. Se %%\beta_1%% é positivo, a reta inclina para cima; se negativo, para baixo.

Desenhando melhor, para chegar a essa operação precisamos:

  1. Encontrar as médias de todos os valores %%x%% (ou seja, %%\bar{x}%%): %%\bar{x}=\frac{1}{99}\sum_{i=1}^{99}x_i%%

%%\bar{x} \approx 196.4626%%

  1. Encontrar as médias de todos os valores %%y%% (ou seja, %%\bar{y}%%): %%\bar{y}=\frac{1}{99}\sum_{i=1}^{99}y_i%%

%%\bar{y} \approx 721273.0202%%

  1. Para cada ponto %%i%%, calcular desvios de %%x%% e %%y%%, e seus produtos:
  • Tomar a diferença entre a metragem do ponto e a média: %%d_{x,i}=x_{i}-\bar{x}%%
  • Calcular o quadrado do desvio de %%x%%: %%dd_{x,i}=(x_{i}-\bar{x})^2%%
  • Tomar a diferença entre o valor do ponto e a média: %%d_{y,i}=y_{i}-\bar{y}%%
  • Calcular o produto dessas diferenças: %%p_{i}=d_{x,i}d_{y,i}%%
%%i%%%%x%%%%y%%%%d_{x,i}%%%%dd_{x,i}%%%%d_{y,i}%%%%p_{i}%%
1100.4151001-96.06269228.0231-570272.020254781812.9677
2103.2177313-93.26268697.9125-543960.020250731125.7799
3104.9194625-91.56268383.7097-526648.020248221262.0144
..................
97295.1114812698.63749729.3367426852.979842103668.1097
98297.51129064101.037410208.5562407790.979841202140.3424
99300.01150000103.537410719.9932428726.979844389276.7983
  1. Somar todos os produtos: %%S_{xy} = \sum_{i=1}^{99}p_{i}%%

%%S_{xy} \approx 1379676325.7747%%

  1. Somar os quadrados de desvios de %%x%%: %%S_{xx} = \sum_{i=1}^{99}dd_{x,i}%%

%%S_{xx} \approx 303018.3117%%

  1. Com base nos cálculos, é possível obter a inclinação da reta: %%\beta_1 = \frac{S_{xy}}{S_{xx}}%%

%%\beta_1 \approx 4553.1120%%

  • Isso significa que, em termos práticos, para cada 1m² a mais na metragem, o valor previsto aumenta em cerca de R$ 4.553,11.
  1. Calcular o intercepto a partir do slope e das médias: %%\beta_0=\bar{y}- \beta_1\bar{x}%%

%%\beta_0 \approx -173243.3304%%

  • Representa que, quando a metragem é 0 (ou seja, %%x=0%%), o valor da casa é de aproximadamente R$ -173.243,33. (Obviamente não faz sentido uma casa com metragem 0 e valor negativo no mundo real, mas em regressão o intercepto é matematicamente necessário para ajustar a reta aos dados.)

Com todos esses cálculos, conseguimos desenhar uma reta:

Para o nosso exemplo, em que o estimado leitor tem uma casa tem 182m², aplicamos a equação inicial:

$$ \hat{y}_i=\beta_0 + \beta_1 x_i $$

$$ = -173243.33037111675 + 4553.112047771215 \times 182 $$

$$ \approx 655423.06 $$

E obtemos o resultado: a casa vale R$ 655.423,06.