Редактирование: Настройка гиперпараметров

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 47: Строка 47:
  
 
     Out:
 
     Out:
     GridSearchCV(cv=StratifiedShuffleSplit(n_splits=10, random_state=0, test_size=0.2, train_size=None), error_score=nan,
+
     GridSearchCV(cv=StratifiedShuffleSplit(n_splits=10, random_state=0, test_size=0.2, train_size=None),  
                 estimator=SGDClassifier(alpha=0.0001, average=False, class_weight=None, early_stopping=False,
+
                error_score=nan,
                                     epsilon=0.1, eta0=0.0, fit_intercept=True, l1_ratio=0.15, learning_rate='optimal',
+
                 estimator=SGDClassifier(alpha=0.0001, average=False,
                                     loss='hinge', max_iter=1000, n_iter_no_change=5, n_jobs=None,  
+
                                    class_weight=None, early_stopping=False,
 +
                                     epsilon=0.1, eta0=0.0, fit_intercept=True,
 +
                                    l1_ratio=0.15, learning_rate='optimal',
 +
                                     loss='hinge', max_iter=1000,
 +
                                    n_iter_no_change=5, n_jobs=None,
 
                                     penalty='l2...
 
                                     penalty='l2...
                         'eta0': array([1.00000000e-05, 1.64285714e-05, 2.28571429e-05, 2.92857143e-05, 3.57142857e-05, 4.21428571e-05, 4.85714286e-05, 5.50000000e-05,
+
                         'eta0': array([1.00000000e-05, 1.64285714e-05, 2.28571429e-05, 2.92857143e-05,
                                      6.14285714e-05, 6.78571429e-05, 7.42857143e-05, 8.07142857e-05, 8.71428571e-05, 9.35714286e-05, 1.00000000e-04]),
+
      3.57142857e-05, 4.21428571e-05, 4.85714286e-05, 5.50000000e-05,
 +
      6.14285714e-05, 6.78571429e-05, 7.42857143e-05, 8.07142857e-05,
 +
      8.71428571e-05, 9.35714286e-05, 1.00000000e-04]),
 
                         'learning_rate': ['optimal', 'constant', 'invscaling'],
 
                         'learning_rate': ['optimal', 'constant', 'invscaling'],
 
                         'max_iter': array([5, 6, 7, 8, 9])},
 
                         'max_iter': array([5, 6, 7, 8, 9])},
Строка 94: Строка 100:
  
 
=== Реализация Grid search в библеотеках ===
 
=== Реализация Grid search в библеотеках ===
* [https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html scikit-learn]
+
* Katib
* [https://github.com/kubeflow/katib Katib]
+
* scikit-learn
* [https://tidymodels.github.io/tune/articles/grid.html Tune]
+
* Tune
* [https://autonomio.github.io/docs_talos/#grid-search Talos]
+
* Talos
 +
 
  
 
== Random grid search ==
 
== Random grid search ==
Строка 109: Строка 116:
 
=== Реализация Random grid ===
 
=== Реализация Random grid ===
  
* [https://ray.readthedocs.io/en/latest/tune-searchalg.html#variant-generation-grid-search-random-search Ray]
+
* hyperopt
* [https://github.com/kubeflow/katib Katib]
+
* Katib
* [https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.RandomizedSearchCV.html scikit-learn]
+
* scikit-learn
* [https://ray.readthedocs.io/en/latest/tune-searchalg.html#variant-generation-grid-search-random-search Tune]
+
* Tune
* [https://autonomio.github.io/docs_talos/#models Talos]
+
* Talos
* [https://hyperopt.github.io/hyperopt/#algorithms Hyperopt]
+
 
  
 
== SMBO  ==
 
== SMBO  ==
Строка 146: Строка 153:
 
* Random Forest Regressions
 
* Random Forest Regressions
  
=== TPE ===
+
=== Реализация ===
 +
* Random Forest Regressions: SMAC
 +
* Tree Parzen Estimators: Hyperopt
 +
* Gaussian Processes: Spearmint, Scikit-optimize
 +
 
 +
== TPE ==
  
==== Основная информация ====
+
=== Основная информация ===
 
TPE — Tree-structured Parzen Estimator (Древовидная структура Парзена)
 
TPE — Tree-structured Parzen Estimator (Древовидная структура Парзена)
  
Строка 155: Строка 167:
 
<math> p(y) = \frac{p(x|y) * p(y)}{p(x)} </math>
 
<math> p(y) = \frac{p(x|y) * p(y)}{p(x)} </math>
  
<math> {p(x|y)} </math> — распределение гиперпараметров, <math> y </math> —  значение целевой функции,  <math> y* </math> — пороговое начение
+
<math> {p(x|y)} </math> — распределение гиперпараметров.
  
<math>  p(x|y) = \begin{cases}
+
=== Реализация ===
  l(x),  & \mbox{if }  y < y* \\
 
  g(x), & \mbox{if }  y \ge y*
 
\end{cases}
 
</math>
 
  
В TPE задается два различных распределения гиперпараметров: первое при значениях целевой функции меньших, чем пороговое значение. Второе - при значениях целевой функции больших, чем пороговое значение.
+
* Hyperopt
  
==== Алгоритм ====
+
== SMAC ==
  
# На вход подается список пар (parameters, loss)
+
=== Основная информация ===
# По заданному порогу, происходит разбиение списка на 2 части
 
# Для каждого списка строится распределение
 
# Возвращается значение: <math> argmin_{param} \frac{g(param)}{l(param)} </math>
 
 
 
=== SMAC ===
 
 
 
==== Основная информация ====
 
  
 
SMAC использует Random Forest regression и расширяет подходы SMBO:
 
SMAC использует Random Forest regression и расширяет подходы SMBO:
Строка 181: Строка 182:
 
* Обрабатывает негауссовский шум.
 
* Обрабатывает негауссовский шум.
 
* Выделяет бюджет на общее время, доступное для настройки алгоритма, а не на количество оценок функций.
 
* Выделяет бюджет на общее время, доступное для настройки алгоритма, а не на количество оценок функций.
 
Кроме того, SMAC использует переданную ему модель для формирования списка перспективных конфигураций (сочетаний) параметров. Чтобы оценить перспективность конфигурация <math> \theta </math>, SMAC строит распределение результатов модели для  <math> \theta </math>.
 
С помощью этого распределения, а также информации, о текущей лучшей конфигурации, SMAC вычисляет ожидаемое положительное улучшение [https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf <math> EI(\theta) </math>].
 
После нахождения <math> EI(\theta) </math> необходимо найти конфигурацию с наибольшим значением <math> EI(\theta) </math>. Эта задача приводит к проблеме максимизация значения на всем пространстве конфигураций.
 
Другие методы SMBO максимизируют значения а случайной выборке из пространства конфигураций, что достаточно плохо работает в случае высокомерного пространства.
 
SMAC применяет немного другой подход: выполняется несколько локальных и поисков и среди них выбираются все конфигурации с максимальным <math> EI(\theta) </math>. И уже среди них производится новый поиск и выбирается лучшая конфигурация.
 
  
 
=== Реализация ===
 
=== Реализация ===
* Random Forest Regressions: [https://www.automl.org/automated-algorithm-design/algorithm-configuration/smac/ SMAC]
+
* AutoML
* Tree Parzen Estimators: [https://hyperopt.github.io/hyperopt/#algorithms Hyperopt]
 
* Gaussian Processes: [https://devhub.io/repos/automl-spearmint Spearmint], [https://scikit-optimize.github.io/stable/modules/classes.html#module-skopt.optimizer Scikit-optimize]
 
 
 
== См. также ==
 
[http://neerc.ifmo.ru/wiki/index.php?title=Машинное_обучение Викиконспекты: Машинное обучение]
 
  
 
== Источники ==
 
== Источники ==
 
  
* [https://papers.nips.cc/paper/4443-algorithms-for-hyper-parameter-optimization.pdf Algorithms for Hyper-Parameter Optimization]
+
* [https://towardsdatascience.com/hyperparameters-optimization-526348bb8e2d Hyperparameters Optimization]
* [https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf Sequential Model-Based Optimization for General Algorithm Configuration]
 
 
* [https://www.youtube.com/watch?v=u6MG_UTwiIQ Bayesian optimization]
 
* [https://www.youtube.com/watch?v=u6MG_UTwiIQ Bayesian optimization]
 
* [https://www.youtube.com/watch?v=PgJMLpIfIc8 Гауссовские процессы и байесовская оптимизация]
 
* [https://www.youtube.com/watch?v=PgJMLpIfIc8 Гауссовские процессы и байесовская оптимизация]
 
* [https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html GridSearchCV sklearn]
 
* [https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html GridSearchCV sklearn]

Пожалуйста, учтите, что любой ваш вклад в проект «Викиконспекты» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Викиконспекты:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Чтобы изменить эту страницу, пожалуйста, ответьте на приведённый ниже вопрос (подробнее):

Отменить | Справка по редактированию (в новом окне)