Pera, mas o que é Regressão Linear? 📈
Alerta de importância para a álgebra!
Definição
Regressão linear é um tipo de modelo de análise de dados que é utilizado para entender a relação entre duas variáveis. É chamado de "linear" porque o modelo assume que existe uma relação linear entre a variável independente (também chamada de variável explicativa ou predictor) e a variável dependente (também chamada de variável resposta ou critério).1
Dada a definição formal, voltemos à pergunta: O que é uma regressão linear?
Com minhas próprias palavras, é uma tentativa de caracterizar dados de acordo com uma função afim, y=ax+b
, para conseguir prever o comportamento dos dados nos intervalos não conhecidos.
Como fazer
Dado um conjunto de dados, por exemplo, de temperatura por tempo imaginário:
ºC | Hora |
---|---|
10 | 4 |
12 | 5 |
15 | 6 |
16 | 7 |
17 | 8 |
20 | 9 |
24 | 10 |
Vamos observar a distribuição dos dados
Nota-se que a temperatura cresce com a hora, mas não linearmente. Mas e se eu quisesse saber aproximadamente qual era a temperatura às 7h30? Ou qual será a temperatura às 13h?
Podemos criar um modelo de regressão!
Para isso, vamos transformar a nossa função afim em uma função que precisa de pesos asociados à cada grau de x. y= w0*x^0 + w1*x^1
.
Podemos generalizar a função de forma vetorial para um calculo computacional mais eficiente, separando um vetor de pesos W
composto pelos valores w0,w1,...,wn
, que nesse caso possui apenas dois elementos, e um vetor de variáveis independentes X
, que são todos os graus de x. Sendo a função resultante y = X@W
em que @
expressa uma operação de produto interno.
Definindo os pesos da regressão
Como estamos realizando uma previsão, há erros associados à ela. Para mensurar o nosso erro, utilizamos geralmente o Mean Squared Error, conhecido como MSE. Assim, o erro da previsão é a soma de todas as diferenças elevadas ao quadrado entre os valores reais e os valores previstos.
Ficando então:
onde:
L
é uma função custow
;m
é a quantidade de elementos,len(X)
;hw
é o valor dey
para um determinadox
utilizando os pesosw
atuais.- o índice
i
se refere a cada um dos itens do vetor, em ordem; y
é o vetor de variáveis dependentes, no nosso caso, a temperatura;- a constante
1/2m
tem papel de suavizador na equação.
Para encontrar os valores de w que minimizam o custo, podemos recorrer ao gradient descent2 iterativo, buscando aproximar de zero o resultado da equação vetorizada explicitada abaixo através da atualização gradativa dos pesos:
O gradient descent é uma parte importante em todo o campo de regressão e previsão, para os interessados na área, é fortemente recomendado o estudo.
Na prática, com Python
Facilitando os cálculos, utilizando o sklearn3
import numpy as np
from sklearn.linear_model import LinearRegression
y = np.array([10,12,15,16,17,20,24]).reshape(-1,1)
x = np.arange(4,11).reshape(-1,1)
reg = LinearRegression().fit(x, y)
>>>reg.predict([[7.5]])
array([[17.35714286]])
Nota-se que a previsão é plausível de acordo com a tabela!
Conclusão
Analisamos um pouco da construção por trás da regressão linear e a sua utilização com bibliotecas Python. Esse foi meu primeiro artigo de conteúdo na minha área de estudo: Machine learning e redes neurais. Me conta o que achou e como podemos melhorar! Que conteúdo nessa área gostaria de ver?