Выбор правильного значения допуска в логистической регрессии (Scikit-learn) - PullRequest
0 голосов
/ 30 мая 2018

Я использую модель логистической регрессии в Scikit-Learn (в частности, LogisticRegressionCV ).Когда я использую значение по умолчанию tol (которое равно 1e-4) и тестирую модель с различными значениями random_state, коэффициенты функции не сильно колеблются.По крайней мере, я могу видеть, какие функции важны.

Однако, когда я устанавливаю более высокое значение tol (например, 2.3), каждый раз, когда я запускаю модель, коэффициенты характеристик сильно колеблются.Если в одном испытании функция A имеет коэффициент -0,9, то при следующем запуске она может иметь 0,4.

Это заставляет меня думать, что правильное (или благоприятное) значение tol должно быть тем, когда результаты более последовательны.

Ниже приведена соответствующая часть моего кода:

classifier = LogisticRegressionCV(penalty='l1', class_weight='balanced', 
                                #tol=2.2,
                                solver='liblinear')

Интересно, есть ли руководства для определения подходящего значения tol.

1 Ответ

0 голосов
/ 30 мая 2018

Параметр tol сообщает алгоритму оптимизации, когда нужно остановиться.Если значение tol слишком велико, алгоритм останавливается, прежде чем он сможет сходиться.Вот что говорят docs :

tol : float
        Stopping criterion. For the newton-cg and lbfgs solvers, the iteration
        will stop when ``max{|g_i | i = 1, ..., n} <= tol``
        where ``g_i`` is the i-th component of the gradient.

Это должно иметь аналогичное значение для либлинейного решателя.Если вас интересуют подробности, описание алгоритма newGLMNET, который библиотека liblinear использует для решения l1-регуляризованной логистической регрессии, можно найти здесь и здесь .

...