Линейная регрессия с использованием алгоритма градиентного спуска, получение неожиданных результатов

generate_series() возвращает набор строк , который похож на таблицу. И, очевидно, вы не можете привести набор к одному типу данных. Ваше приведение похоже на select * from cast(some_table as date)

Вам необходимо привести значение, возвращаемое функцией:

select gs.date::date as "date"
from generate_series(current_date - interval '7 days', current_date, '1 day') gs(date)

2
задан 19.03.2019, 03:57

3 ответа

Конвергенция

Вы выполнили пять итераций градиентного спуска всего за 5 обучающих выборок с (вероятно, разумной) скоростью обучения 0,01. То есть не не должен привести вас к «окончательному» решению вашей проблемы - вам нужно будет сделать много итераций градиентного спуска, как вы реализовали, повторяя процесс до thetas сходятся к стабильному значению. Тогда имеет смысл сравнить полученные значения.

Замените 5 в for i in range(5) на 5000, а затем посмотрите, что происходит. Для иллюстрации того, насколько быстро процесс сходится к решению, может быть наглядно представить график уменьшения функции ошибки / стоимости.

0
ответ дан 01.05.2019, 04:58
  • 1
    Считайте свой вопрос снова потому что я can' t понимают его... – MrUpsidown 03.04.2019, 23:23

Вот как я вижу градиентный спуск: представьте, что вы находитесь высоко на скалистом склоне горы в тумане. Из-за тумана вы не можете увидеть самый быстрый путь вниз по горе. Итак, вы оглядываетесь вокруг и опускаетесь, основываясь на том, что видите поблизости. Сделав шаг, вы снова оглядываетесь вокруг и делаете еще один шаг. Иногда это может привести вас в ловушку в небольшом низком месте, где вы не сможете увидеть путь вниз (локальный минимум), а иногда это безопасно приведет вас к подножию горы (глобальный минимум). Запуск из разных случайных мест на туманном склоне горы может заманить вас в ловушку в разных локальных минимумах, хотя вы можете безопасно спуститься вниз, если случайный стартовый пункт хорош.

0
ответ дан 01.05.2019, 04:58
  • 1
    Don' t использование is для сравнения числовых значений используйте == – Thierry Lathuille 29.03.2019, 20:53

Это не проблема, а довольно обычная вещь. Для этого нужно понять, как работает градиент приличный. Каждый раз, когда вы случайным образом инициализируете свои параметры, гипотеза начинает свое путешествие из случайного места. С каждой итерацией он обновляет параметры, так что функция стоимости сходится. В вашем случае, когда вы выполнили свой градиент прилично всего за 5 итераций, для другой инициализации он заканчивается слишком большим количеством разных результатов. Попробуйте более высокие итерации, вы увидите значительное сходство даже при различной инициализации. Если бы я мог использовать визуализацию, это было бы полезно для вас.

0
ответ дан 01.05.2019, 04:58
  • 1
    Извините за недоразумение. Это - ответ, тот, в котором я нуждаюсь, но могу я так или иначе передавать новый маршрут/направление базе данных (I' m использующий firebase) так, чтобы другой пользователь мог использовать маршрут на его стороне? I' m использующий это для приложения курьера так, чтобы курьер видел parcel' s местоположение. – Marcus 04.04.2019, 01:01

Теги

Похожие вопросы