Изменения

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

Настройка гиперпараметров

3911 байт добавлено, 14:53, 23 апреля 2020
м
Нет описания правки
Out:
GridSearchCV(cv=StratifiedShuffleSplit(n_splits=10, random_state=0, test_size=0.2, train_size=None), error_score=nan, estimator=SGDClassifier(alpha=0.0001, average=False, 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...
'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, 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'],
'max_iter': array([5, 6, 7, 8, 9])},
=== Реализация Grid search в библеотеках ===
* Katib* [https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html scikit-learn]* [https://github.com/kubeflow/katib Katib]* [https://tidymodels.github.io/tune/articles/grid.html Tune]* [https://autonomio.github.io/docs_talos/#grid-search Talos]
== Random grid search ==
=== Реализация Random grid ===
* hyperopt[https://ray.readthedocs.io/en/latest/tune-searchalg.html#variant-generation-grid-search-random-search Ray]* [https://github.com/kubeflow/katib Katib]* [https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.RandomizedSearchCV.html scikit-learn]* [https://ray.readthedocs.io/en/latest/tune-searchalg.html#variant-generation-grid-search-random-search Tune]* [https://autonomio.github.io/docs_talos/#models Talos]* [https://hyperopt.github.io/hyperopt/#algorithms Hyperopt]
== SMBO ==
* Random Forest Regressions
=== Реализация ===* Random Forest Regressions: SMAC* Tree Parzen Estimators: Hyperopt* Gaussian Processes: Spearmint, Scikit-optimize TPE == TPE ==
==== Основная информация ====
TPE — Tree-structured Parzen Estimator (Древовидная структура Парзена)
<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) = \begin{cases} l(x), & \mbox{if } y < y* \\ g(x), & \mbox{if } y \ge y*\end{cases}</math> В TPE задается два различных распределения гиперпараметров: первое при значениях целевой функции меньших, чем пороговое значение. Второе - при значениях целевой функции больших, чем пороговое значение.
=== Реализация = Алгоритм ====
* Hyperopt# На вход подается список пар (parameters, loss)# По заданному порогу, происходит разбиение списка на 2 части# Для каждого списка строится распределение# Возвращается значение: <math> argmin_{param} \frac{g(param)}{l(param)} </math>
=== SMAC ===
==== Основная информация ====
SMAC использует Random Forest regression и расширяет подходы SMBO:
* Обрабатывает негауссовский шум.
* Выделяет бюджет на общее время, доступное для настройки алгоритма, а не на количество оценок функций.
 
Кроме того, 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>. И уже среди них производится новый поиск и выбирается лучшая конфигурация.
=== Реализация ===
* AutoMLRandom Forest Regressions: [https://www.automl.org/automated-algorithm-design/algorithm-configuration/smac/ SMAC]* 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://towardsdatasciencepapers.comnips.cc/hyperparameterspaper/4443-algorithms-for-hyper-parameter-optimization.pdf Algorithms for Hyper-Parameter Optimization]* [https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf Sequential Model-526348bb8e2d Hyperparameters Based Optimizationfor General Algorithm Configuration]
* [https://www.youtube.com/watch?v=u6MG_UTwiIQ Bayesian optimization]
* [https://www.youtube.com/watch?v=PgJMLpIfIc8 Гауссовские процессы и байесовская оптимизация]
* [https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html GridSearchCV sklearn]
51
правка

Навигация