Я внедряю многовариантную линейную регрессию с использованием градиентного спуска в наборе данных 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
Многофакторный градиент градиента линейной регрессии всегда сходится к нулевым весам (W = [0,0,0]) ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Почему эти простые вычисления градиента весов линейной регрессии дают разные результаты?
Anonymous » » в форуме Python - 0 Ответы
- 34 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Градиент спуск в линейной регрессии, вызывая параметр, быть -инфинтность
Anonymous » » в форуме Python - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Градиент спуск в линейной регрессии, вызывая параметр, быть -инфинтность
Anonymous » » в форуме Python - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Градиент спуск в линейной регрессии, вызывая параметр, быть -инфинтность
Anonymous » » в форуме Python - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-