Regressão Linear • Gradiente Descendente • Inferência
Na sua essência, um modelo de regressão linear em Inteligência Artificial tenta encontrar a melhor linha reta que represente um conjunto de dados. Essa reta é definida pela clássica equação matemática:
y = mx + bO trabalho da IA (o "treinamento") é descobrir os melhores valores para m e b de modo que a reta passe o mais perto possível de todos os pontos reais.
Quanto menor o MSE, melhor a reta se ajusta aos dados.
Como a reta descobre para onde deve se mover? Ela utiliza o algoritmo de otimização chamado Gradiente Descendente.
Imagine que você está no topo de uma montanha, com os olhos vendados, e precisa chegar ao fundo do vale ("erro zero"). O processo é:
De forma intuitiva, o ajuste dos pesos segue a ideia: quanto maior o erro, maior o ajuste (o modelo "corrige mais"). E quanto maior o valor de x, maior o impacto no peso m.
Em uma fração de segundo, a equação passou de y = 0x + 0 para y = 0.8x + 0.4. Na simulação, isso se repete dezenas de vezes por segundo para todos os pontos!
Clique na área abaixo para adicionar dados. Use SHIFT+Clique para adicionar um outlier. Segure P para entrar no modo inferência.
Outliers são pontos muito fora do padrão e ajudam a entender como dados extremos podem distorcer o modelo.
Época: uma passagem completa por todos os pontos de treino.
MSE: — | Pontos: 0 | m: 0.000 | b: 0.000
Reta vermelha = modelo aprendido • Ponto amarelo = predição (modo P)
O que você acabou de fazer visualmente com cliques do mouse é exatamente o que fazemos no código usando linguagens profissionais. No ecossistema Python, usamos a biblioteca Scikit-Learn.
from sklearn.linear_model import LinearRegression import numpy as np # 1. Dados de treino (equivalente aos cliques no simulador) X_treino = np.array([[1], [2], [4], [5], [7]]) y_treino = np.array([2.5, 3.8, 6.1, 7.5, 9.2]) # 2. Criar o modelo modelo = LinearRegression() # 3. Treinamento (Gradiente Descendente interno - ajuste automático dos parâmetros) modelo.fit(X_treino, y_treino) # 4. Fazer predição (como segurar 'P') novo_dado = np.array([[6]]) nota_prevista = modelo.predict(novo_dado) print(f"Para 6 horas de estudo, nota prevista: {nota_prevista[0]:.2f}") print(f"Inclinação (m): {modelo.coef_[0]:.2f}") print(f"Intercepto (b): {modelo.intercept_:.2f}")
Reflexão: Se os pontos estiverem muito espalhados e sem padrão claro, a reta ainda será traçada — porém, a predição será confiável? A qualidade da Inteligência Artificial depende fundamentalmente da qualidade dos dados que fornecemos a ela.
Responda as perguntas abaixo para verificar o que você aprendeu com a simulação.