градиентный спуск не работает, он возвращает приращение значений тета и уходит в бесконечность - PullRequest
0 голосов
/ 28 октября 2019

Вот мой код на python. Я пробовал с разными альфа-значениями и другой реализацией, но я не получил хорошие тэта-значения и перешел на бесконечность с 0,000000001 скоростью обучения , также можете ли вы дать мне какие-либо предложения с этим кодом .. .

    def gradient_descent(x,y):
        theta0=theta1=0
        iteration=10000000
        m=len(x)
        alpha=0.000000001
        for i in range(iteration):
            y_pre=theta1*x+theta0            #equation for y_prediction
            theta1d=-(2/m)*sum(x*(y-y_pre))  #finding derivative
            theta0d=-(2/m)*sum(y-y_pre)
            theta1=theta1+alpha*theta1d
            theta0=theta0+alpha*theta0d
            #cost_func=(sum((y-y_pre)**2)/2m
            print("theta1",theta1,"theta0",theta0)

1 Ответ

0 голосов
/ 29 октября 2019
def gradient_descent(x,y):
    theta0=theta1=0
    iteration=10000000
    m=len(x)
    alpha=0.000000001
    for i in range(iteration):
        y_pre=theta1*x+theta0            #equation for y_prediction
        theta1d=-(1/m)*sum(x*(y_pre - y))  #finding derivative (modified)
        theta0d=-(1/m)*sum(y_pre - y) #modified
        theta1=theta1+alpha*theta1d
        theta0=theta0+alpha*theta0d
        #cost_func=(sum((y_pre - y)**2)/2m   #modified
        print("theta1",theta1,"theta0",theta0)

Уравнение для вычисления тета-значений: theta = theta - alpha * partial derivative of the cost function. Обычно функция стоимости определяется как cost_func=(sum((y_pre - y)**2)/2m (обратите внимание, что разница составляет y_pred-y, а не y-y_pred). Там для частной производной функции стоимости содержится y_pre - y, а не y - y_pred. Вот как вы должны рассчитать функцию стоимости и тета-значения. (Попробуйте разные альфа-значения, я не изменял альфа или количество итераций)

enter image description here

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...