#python #machine-learning #linear-regression #gradient-descent
#python #машинное обучение #линейная регрессия #градиентный спуск
Вопрос:
Я пытался выяснить, почему моя модель линейной регрессии работает плохо по сравнению с моделью линейной регрессии sklearn.
Моя модель линейной регрессии (правила обновления на основе градиентного спуска)
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. И это больше раз, например, 500000 раз. Тогда вы получите аналогичный результат.
Или вы можете инициализировать w1 большим числом, таким как 5.
Комментарии:
1. Спасибо! Существуют ли какие-либо фиксированные правила, которым следует следовать при начальной инициализации веса? Или это просто метод проб и ошибок?