[英]The formula for the optimal learning rate in the SGDClassifier in Scikit-learn
我不能找到用於的學習率式中SGDClassifier Scikit學習當learning_rate='optimal'
,在此同樣的功能的原來的C ++源碼https://leon.bottou.org/projects/sgd
Scikit-learn中的SGDClassifier中提到了該公式:
這個正確的公式是在原始SGDClassifier
代碼中使用的,還是移植到Scikit-learn
時發生了變化? 另外,t0到底代表什么(在文檔中僅提到它是通過啟發式方法確定的)?
讓我們看一下源代碼和公式。
Sklearn陳述以下公式: eta = 1/(alpha* (t+t_0))
。 在Leon Bottou的網站上,我們找到表達式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
並且sklearn的t_0
與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)
。 正如我們在679行中看到的那樣, optimal_init
變量只是t_0
與公式中的名稱不同: eta = 1.0 / (alpha * (optimal_init + t - 1))
。
因此,公式相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.