← Volver al blog
Modelación2026-05-10· 1 min

Regresión lineal desde cero: qué hay detrás de .fit()

Javier Causil

Javier Causil

Científico de datos

Es fácil llamar a LinearRegression().fit(X, y) sin pensar en qué pasa adentro. El problema es que cuando un modelo no converge o da coeficientes raros, sin ese entendimiento no hay mucho que diagnosticar.

La función de costo

Para una regresión lineal simple y^=wx+b\hat{y} = wx + b, el error cuadrático medio sobre nn observaciones es:

J(w,b)=1ni=1n(y^iyi)2J(w, b) = \frac{1}{n} \sum_{i=1}^{n} (\hat{y}_i - y_i)^2

Descenso de gradiente

En cada paso, actualizamos los parámetros en la dirección que más reduce el error:

wwαJw,bbαJbw \leftarrow w - \alpha \frac{\partial J}{\partial w}, \qquad b \leftarrow b - \alpha \frac{\partial J}{\partial b}
python
def gradient_descent(x, y, w, b, lr, epochs):
    n = len(x)
    for _ in range(epochs):
        y_hat = w * x + b
        dw = (2 / n) * sum(x * (y_hat - y))
        db = (2 / n) * sum(y_hat - y)
        w -= lr * dw
        b -= lr * db
    return w, b

Por qué importa

Si α\alpha (la tasa de aprendizaje) es demasiado grande, el error puede oscilar o divergir en vez de bajar. Si es demasiado pequeña, el entrenamiento converge, pero muy lento. La mayoría de los "el modelo no aprende" que he visto se resuelven mirando esta curva antes que cambiando de algoritmo.