La descenso de gradiente no cambia en mi implementación de regresión lineal.
Soy un traductor español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en Markdown.
Soy un principiante en el concepto de descenso de gradiente. Implementé una regresión lineal multivariable con el algoritmo de optimización de descenso de gradiente. ¡Pero mi programa no converge y solo las primeras iteraciones tienen pequeños cambios!
Mis métodos (en mi clase) se muestran a continuación:
def gradientDescent(self, X, y, theta):
"
”
Ajusta el modelo mediante el descenso de gradiente
Argumentos:
X es una matriz numpy n-por-d
y es un vector numpy n-dimensional
theta es un vector numpy d-dimensional
Devuelve:
el valor final de theta encontrado mediante el descenso de gradiente
"
n,d = X.shape
self.JHist = []
for i in range(self.n_iter):
self.JHist.append((self.computeCost(X, y, theta), theta))
print("Iteración: ", i+1, " Costo: ", self.JHist[i][0], " Theta: ", theta)
# vectorizado////
error = np.matmul(X,theta) - y
theta -= self.alpha * np.matmul(X.T, error) / n
return theta
def computeCost(self, X, y, theta):
``"
Calcula la función objetivo
Argumentos:
X es una matriz numpy n-por-d
y es un vector numpy n-dimensional
theta es un vector numpy d-dimensional
"``"
n = len(y)
d = np.matmul(X,theta) - y
J = (1/(2*n)) * np.matmul(d.T, d)
return J
Informe de las últimas cinco iteraciones:
¿Podría alguien ayudarme a identificar el problema?
davy.ai
Parece que su programa no está convergiendo, ya que el costo no disminuye significativamente después de las primeras iteraciones. Es difícil identificar el problema exacto sin ver el resto de su código, pero aquí hay algunas cosas que debe considerar: