Многофакторный градиент градиента линейной регрессии всегда сходится к нулевым весам (W = [0,0,0])Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Многофакторный градиент градиента линейной регрессии всегда сходится к нулевым весам (W = [0,0,0])

Сообщение Anonymous »

Я внедряю многовариантную линейную регрессию с использованием градиентного спуска в наборе данных Iris (sklearn.datasets.load_iris), но мои веса (w) всегда сходится к [0,0,0], независимо от гиперпараметрических настройки. Набор данных (длина чашера, ширина чашера, длина лепестки).

[*] target (y): 4 -я особенность (ширина лепестки).

инициализация: W = [2,2,2], b = 0, учебная скорость lr = 0.001. /> < /li>
Градиентный спуск: 200 итераций. < /p>
< /li>
< /ul>
Наблюдения < /p>

Потеря снижается, но в конечном итоге стабилизируется с w = [0,0,0,0]. /> Расчеты градиента кажутся правильными (см. Код ниже). < /p>
< /li>
Пробовал настройка LR (0,001, 0,1) и итерации (500, 1000), но без улучшения. < /p>
< /li>
< /ul>
. class = "lang-py prettyprint-override">import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris

data = load_iris().data
X = data[:,:3]
y = data[:,3]

m = len(X)

def j(w, b):
sum = 0
for i in range(m):
sum += ((np.dot(w, X) + b - y) ** 2)
sum /= m
return sum

def dj_dw(w,b,j):
sum = 0
for i in range(m):
sum += (X[i,j] * (np.dot(w, X) + b - y))
sum *= 2
sum /= m
return sum

def dj_db(w,b):
sum = 0
for i in range(m):
sum += (np.dot(w, X) + b - y)
sum *= 2
sum /= m
return sum

w = np.array([2,2,2])
b = 0
lr = 0.001
Loss = []

for i in range(200):
tmp_w0 = w[0] - lr * dj_dw(w,b,0)
tmp_w1 = w[1] - lr * dj_dw(w,b,1)
tmp_w2 = w[2] - lr * dj_dw(w,b,2)
tmp_b = b - lr * dj_db(w,b)
w[0] = tmp_w0
w[1] = tmp_w1
w[2] = tmp_w2
b = tmp_b
Loss.append(j(w,b))

print(w,b)
plt.plot(range(200),Loss)
plt.show()


Подробнее здесь: https://stackoverflow.com/questions/796 ... ro-weights
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему эти простые вычисления градиента весов линейной регрессии дают разные результаты?
    Anonymous » » в форуме Python
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Градиент спуск в линейной регрессии, вызывая параметр, быть -инфинтность
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Градиент спуск в линейной регрессии, вызывая параметр, быть -инфинтность
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Градиент спуск в линейной регрессии, вызывая параметр, быть -инфинтность
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Градиент спуск взрывается в линейной регрессии
    Anonymous » » в форуме Python
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»