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 , el error cuadrático medio sobre observaciones es:
Descenso de gradiente
En cada paso, actualizamos los parámetros en la dirección que más reduce el error:
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 (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.