Давайте пройдемся по исходному коду и формулам.
Sklearn утверждает следующую формулу: eta = 1/(alpha* (t+t_0))
.На сайте Леона Ботту мы находим выражение eta = eta_0 / (1 + lambda eta_0 t)
.
. Перепишем последнюю формулу немного:
eta = eta_0 / (1 + lambda eta_0 t)
= 1 / ( 1/eta_0 + lambda t )
= 1 / ( lambda * ( 1/eta_0 * 1/lambda + t)).
Если сейчас lambda = alpha
и t_0
от sklearn равентак же, как 1/(eta_0*alpha)
, формулы те же.Теперь давайте посмотрим на исходный код: https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/sgd_fast.pyx#L657
В строке 657 мы видим, что optimal_init = 1.0 / (initial_eta0 * alpha)
.Переменная optimal_init
- это только другое имя для t_0
из наших формул, как мы видим в строке 679: eta = 1.0 / (alpha * (optimal_init + t - 1))
.
Следовательно, формулы одинаковы.