Модель линейной регрессии (с использованием градиентного спуска) не сходится в наборе данных жилья Бостона - PullRequest
0 голосов
/ 01 апреля 2019

Я пытался выяснить, почему моя модель линейной регрессии работает плохо по сравнению с моделью линейной регрессии Склеарна.

Моя модель линейной регрессии (обновление правил на основе градиентного спуска)

w0 = 0
w1 = 0
alpha = 0.001
N = len(xTrain)
for i in range(1000):
  yPred = w0 + w1*xTrain
  w0 = w0 - (alpha/N)* sum(yPred - yTrain)
  w1 = w1 - (alpha/N)*sum((yPred - yTrain) * xTrain)

Код для построения значений x из обучающего набора и прогнозируемых значений y

#Scatter plot between x and y
plot.scatter(xTrain,yTrain, c='black')    
plot.plot(xTrain, w0+w1*xTrain, color='r')
plot.xlabel('Number of rooms')
plot.ylabel('Median value in 1000s')
plot.show()

Я получаю вывод, как показано здесь https://i.stack.imgur.com/jvOfM.png

При запуске того же кода с использованием встроенной линейной регрессии sklearn, я получаю это https://i.stack.imgur.com/jvOfM.png

Может кто-нибудь помочь мне, где моя модель идет не так? Я пытался изменить количество итераций и скорости обучения, но значительных изменений не было.

Вот записная книжка ipython на colab, если она помогает: https://colab.research.google.com/drive/1c3lWKkv2lJfZAc19LiDW7oTuYuacQ3nd

Любая помощь высоко ценится

1 Ответ

0 голосов
/ 01 апреля 2019

Вы можете установить большую скорость обучения, например, 0,01.И это еще раз, например, 500000 раз.Тогда вы получите аналогичный результат.enter image description here

Или вы можете инициализировать w1 большим числом, таким как 5.

...