Проблема с настроенной линейной регрессиейPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с настроенной линейной регрессией

Сообщение Anonymous »

Я изучаю машинное обучение и изучаю модели. Моей последней задачей было написать модель множественной линейной регрессии с оптимизацией MSE (без использования существующей в sklearn) и протестировать ее на данных.
Моя модель:

Код: Выделить всё

  def linear_regression(x: np.array, y: np.array, learning_speed: float = 0.1, echoes: int = 1000):

n = len(y)
coef = np.zeros(len(x[0]) + 1)

for _ in range(echoes):

d = np.array([]) # Array to contain a step for each coef

for idx in range(len(coef)):
d_coef = 0
for row in range(len(x)):
if idx == len(coef) - 1:
d_coef += (1) * (np.sum(coef[:-1] * x[row]) + coef[-1] - y[row])
else:
d_coef += (x[row, idx]) * (np.sum(coef[:-1] * x[row]) - y[row] + coef[-1]) # Sum of derivatives of (V1X1 + ... + VnXn + b - y) related to coef idx
d = np.append(d, (2 / n) * d_coef)

coef -= learning_speed * d

print(f'coef = {coef[:-1]}')
print(f'b = {coef[-1]}')
После того, как я протестировал модель на некоторых наборах данных. Для небольших наборов данных это работало отлично. Но потом я попробовал больший:

Код: Выделить всё

x1_rnd = np.array([])
x2_rnd = np.array([])
c1 = 5
c2 = 0.75
b = 15
for _ in range(500):
x1_rnd = np.append(x1_rnd, np.random.randint(1, 100))
x2_rnd = np.append(x2_rnd, np.random.randint(1, 100))

combo = zip(x1_rnd, x2_rnd)
x = np.array([list(elem) for elem in combo])
y_rnd = c1 * x1_rnd + c2 * x2_rnd + b
И в моей модели есть существенная ошибка. Даже при 20000 итерациях (и скорости обучения = 0,0001) он более или менее предсказывает коэффициенты для X1 и X2, но остается очень далеким от предсказания «b». Я заметил, что меньшее значение «b» приводит к лучшему прогнозу, а большее — к худшему (например, если оно равно 0,1, модель работает правильно и быстро; если b = 100, это кошмар).
Я не могу найти никаких ошибок в градиентном спуске кода. Пожалуйста, помогите решить проблему!

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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