Regressão Linear Univariada
Entendendo o Cenário Ideal: A Relação entre Duas Variáveis
A Regressão Linear Univariada representa uma ferramenta fundamental no universo da aprendizagem de máquina. Para qualquer iniciante, saber quando aplicá-la corretamente torna-se o primeiro passo rumo a modelos preditivos eficazes. Em essência, recorremos a esta técnica quando precisamos prever um valor numérico contínuo partindo de uma única característica. A própria palavra “univariada” já revela seu significado: “uma variável”. Dessa forma, o cenário ideal surge quando identificamos uma relação linear entre esses dois elementos, ou seja, quando as mudanças na variável preditora provocam mudanças proporcionais na variável alvo.
O exemplo clássico envolve a relação entre o tamanho de uma casa e seu preço de venda. Intuitivamente, todos sabemos que casas maiores tendem a alcançar preços mais elevados. Neste caso, a variável independente corresponde ao tamanho, enquanto a dependente representa o preço. A regressão, então, encontrará a melhor linha reta para representar essa tendência central. A equação y = mx + b descreve perfeitamente essa linha, onde m indica o coeficiente angular. Podemos citar ainda outros exemplos igualmente didáticos, como prever a pontuação de um aluno a partir de suas horas de estudo. Da mesma forma, estimar o consumo de combustível de um carro considerando sua velocidade média também se encaixa perfeitamente neste contexto.
Os Pressupostos que Garantem a Confiabilidade do Modelo
Precisamos compreender profundamente as condições que tornam a Regressão Linear Univariada uma escolha realmente adequada. Acima de tudo, a existência de uma relação aproximadamente linear entre as variáveis surge como o pressuposto mais importante. Felizmente, podemos verificar essa condição facilmente através de um gráfico de dispersão. Caso os pontos não se organizem em torno de uma linha reta, mas sim formem uma curva, o modelo certamente produzirá previsões imprecisas. Por exemplo, ninguém deveria usar este modelo para prever a aceleração de um foguete baseando-se apenas no tempo, pois essa relação claramente não segue um padrão linear.
Além disso, a independência das observações merece atenção especial. Cada ponto de dado não pode, sob hipótese alguma, influenciar o outro. Medições repetidas da mesma casa ao longo do tempo violariam completamente este princípio. Outro aspecto fundamental envolve a homocedasticidade, que significa manter a variância dos erros constante para todos os valores da variável preditora. Quando observamos a dispersão aumentando progressivamente, o modelo perde sua confiabilidade. Vale ressaltar que a multicolinearidade não se aplica aqui, pois trabalhamos com apenas uma variável preditora, o que naturalmente torna a validação mais simples e direta.
A Força da Simplicidade: Quando Começar por Aqui
A simplicidade característica da Regressão Linear Univariada representa simultaneamente sua maior força e sua principal limitação. Portanto, devemos utilizá-la quando a realidade se mostra verdadeiramente simples e depende de um único fator determinante. Este modelo funciona admiravelmente bem como ponto de partida em qualquer projeto analítico. Mesmo quando almejamos construir modelos complexos posteriormente, começar com uma análise univariada revela-se extremamente recomendável. Através dela, obtemos insights valiosos sobre a direção e a intensidade do relacionamento entre os dados estudados.
Esta abordagem inicial certamente ajuda a orientar a construção de modelos mais sofisticados no futuro. Padrões importantes emergem naturalmente durante esta fase exploratória, podendo ser explorados com maior profundidade nas etapas seguintes. Ignorar os pressupostos fundamentais, por outro lado, pode nos levar a conclusões completamente equivocadas. Por isso, entender profundamente o “quando usar” mostra-se tão crucial quanto dominar o “como usar”. A interpretabilidade figura como uma vantagem notável oferecida por este modelo. Consequentemente, explicar como uma variável influencia diretamente o resultado final torna-se uma tarefa simples e intuitiva, característica especialmente valiosa em contextos de negócios e processos decisórios baseados em dados.
Carregando o conjunto de dados
|
1 2 3 4 5 6 7 |
import pandas as pd # dataset: https://www.kaggle.com/datasets/tmcketterick/heights-and-weights df = pd.read_csv('/content/regressao-linear-univariada.csv') """ Exibindo amostra aleatória de 5 linhas para visualização inicial """ df.sample(5) |
Verificando os tipos de dados das colunas
|
1 |
df.dtypes |
Analisando a estrutura do dataset (número de linhas e colunas)
|
1 |
df.shape |
Estatísticas descritivas básicas do dataset
|
1 |
df.describe() |
Gráfico 01
|
1 2 3 4 5 |
import matplotlib.pyplot as plt fig, ax = plt.subplots(figsize=(12,8)) plt.scatter(df['Height'],df['Weight']) plt.xlabel('Height') plt.ylabel('Weight') |
Separação em TREINO e TESTE
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
""" Executamos train_test_split para dividir o conjunto de dados em dois conjuntos, variáveis independentes (X) e dependentes (Y). """ from sklearn.model_selection import train_test_split X = df[['Weight']] Y = df['Height'] """ Especificamos test_size=0.4, isto é, o conjunto de teste será criado com 40% do conjunto de dados, ficando os 60% restantes para o conjunto de treinamento. """ x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.4) |
Exibindo os parâmetros do modelo treinado
|
1 2 3 4 5 6 |
from matplotlib.colors import Normalize from sklearn.linear_model import LinearRegression linear_model = LinearRegression().fit(x_train, y_train) print("Modelo Linear Simples: Intercept = {:.5}".format(linear_model.intercept_)) print("Modelo Linear Simples: Coefficient = {:.5}".format(linear_model.coef_[0])) print("Modelo Linear Simples: Weight = {:.5} + {:.5}(Height)".format(linear_model.intercept_, linear_model.coef_[0])) |
Teste
|
1 2 3 4 5 6 7 8 9 10 11 |
""" Treinamento do modelo linear. """ print('Train score:',linear_model.score(x_train,y_train)) y_pred = linear_model.predict(x_test) from sklearn.metrics import r2_score """ Teste e avaliação do modelo linear. """ print('Test score:',r2_score(y_test,y_pred)) |
Grafico 02
|
1 2 3 4 5 6 7 8 9 10 |
fig, ax = plt.subplots(figsize=(12,8)) plt.scatter(x_test, y_test) plt.plot(x_test, y_pred, color='red') plt.xlabel('Height') plt.ylabel('Weight') """ Gráfico do modelo linear e conjunto de teste. """ plt.show() |
Avaliação
|
1 2 3 4 5 6 7 8 9 10 |
from sklearn.linear_model import LinearRegression linear_model = LinearRegression().fit(x_train, y_train) print("Modelo Linear Simples: Intercept = {:.5}".format(linear_model.intercept_)) print("Modelo Linear Simples: Coefficient = {:.5}".format(linear_model.coef_[0])) print("Modelo Linear Simples: Weight = {:.5} + {:.5}(Height)".format(linear_model.intercept_, linear_model.coef_[0])) """ Treinamento do modelo linear com o novo conjunto. """ print('Training score: ', linear_model.score(x_train,y_train)) |
Realizando previsões no conjunto de teste
|
1 2 3 4 5 6 7 8 |
y_pred = linear_model.predict(x_test) from sklearn.metrics import r2_score """ Avaliação do novo modelo. Comparação entre valores reais e previsões do modelo Medida de quão bem o modelo generaliza para dados não vistos """ print('Score no conjunto de teste (R²):', r2_score(y_test,y_pred)) |
Visualização dos resultados
|
1 2 3 4 5 6 7 8 |
fig, ax = plt.subplots(figsize=(12,8)) plt.scatter(x_test, y_test) plt.plot(x_test, y_pred, color='r') plt.xlabel('Height') plt.ylabel('Weight') plt.show() |