Реализация Sklearn для пакетного градиентного спуска - PullRequest
0 голосов
/ 06 апреля 2019

Как реализовать пакетный градиентный спуск с использованием sklearn для классификации? У нас есть SGDClassifier для Stochastic GD, который будет принимать один экземпляр за раз, и Линейная / логистическая регрессия , которая использует нормальное уравнение.

1 Ответ

1 голос
/ 06 апреля 2019

Возможный ответ на вопрос, как указано в другом аналогичном вопросе , а также от sklearn документы :

SGD разрешает минибат (онлайн /обучение, см. метод part_fit.

Но действительно ли partial_fit действительно пакетный градиент, достойный?

SGD: градиентфункция стоимости вычисляется, а веса обновляются с использованием шага градиента приличия для каждого образца .

Пакет / мини-партия SGD: градиент функции стоимости равенвычисляется, и веса обновляются с использованием шага градиента приличия один раз за партию .

Таким образом, партия SGD с размером партии 1 == SGD

Теперь, когда мы понимаем определения, давайте рассмотрим код sklearn SGDClassifier

Строка документа partial_fit говорит

Выполнение одной эпохи стохастического градиентного спуска на заданных образцах.

Но это не партия SGD, а ее внешний вид.или как вспомогательная функция для запуска метода fit с max_iter=1 (комментарий прокомментирован так же, как и в строках документации).

partial_fit вызовы _partial_fit с max_iter==1 Ссылочная ссылка

fit вызов метода _fit, который вызывает _partial_fit с max_iter, установленным вназначенные \ по умолчанию максимальные итерации. Ссылка на ссылку

вывод:

partial_fit делает не действительно выполняет пакетную SGD, то есть она не рассчитывает градиенты и не обновляет вес впакетная, но, скорее, делает это для каждого сэмпла.

В sklearn, похоже, нет механизма, позволяющего выполнить пакетный градиентный спуск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...