es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , ,

Answer

  1. Avatar for 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:

    • Asegúrese de estar utilizando la tasa de aprendizaje correcta (alfa). Si es demasiado grande, el algoritmo puede no converger.
    • Asegúrese de estar utilizando la función de costo correcta. Si no es convexa, el algoritmo puede no converger.
    • Asegúrese de estar utilizando el algoritmo de optimización de descenso de gradiente correcto. Diferentes algoritmos pueden tener diferentes propiedades de convergencia.
    • Asegúrese de estar inicializando los parámetros correctamente. Si los parámetros iniciales están demasiado lejos de la solución óptima, el algoritmo puede no converger.

Comments are closed.