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.

Em estatística, 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 um valor contínuo 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², 200²... A sua casa tem 182m². Quanto você deve pedir por ela?

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

Neste cenário, o valor contínuo que queremos prever é o preço da casa que você deve pedir; o conjunto de features é composto por apenas uma variável: a metragem. (Poderíamos ter mais de uma variável no conjunto de features, como quantidade de quartos ou de banheiros, idade do imóvel etc. Mas para ficarmos numa explicação mais simples, vamos trabalhar apenas com uma variável.)

Em termos mais técnicos, buscamos modelar a relação entre as variáveis de entrada ($x$) e a variável alvo ($y$) para determinar o valor previsto ($\hat{y}$) da sua casa.

Aqui, aliás, temos uma regressão linear simples, ou seja, com apenas uma variável preditora. Sua tarefa é tentar encontrar a melhor reta que descreve a relação entre nossos dados — afinal, cada $x$ tem um $y$ e, portanto, temos um conjunto $(x_1,y_1),(x_2, y_2),...,(z_n,y_n)$. 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.