Как определить, сколько моделей GridSearchCV будет обучать?

Как вы определяете, сколько моделей будет обучать SKLearn GridSearchCV? В моем случае я использую следующие параметры:

learning_rate_range = [0.01, 0.05, 0.1]
max_depth_range = [3, 4, 5, 6, 7]
min_child_weight_range = [6, 7, 8]
subsample_range = [0.6, 0.7, 0.8, 0.9]
colsample_range = [0.7, 0.8, 0.9]

Если, например, вы используете трехкратную перекрестную проверку, сколько моделей будет обучено в общей сложности и какой общий метод используется для этого?

1 ответ

Согласно документации: "GridSearchCV исчерпывающе рассматривает все комбинации параметров, в то время как RandomizedSearchCV может выбирать заданное количество кандидатов из пространства параметров с заданным распределением".

http://scikit-learn.org/stable/modules/grid_search.html

И пример GridSearchCV в действии:

http://scikit-learn.org/stable/auto_examples/model_selection/plot_grid_search_digits.html

Если вы передадите все вышеперечисленные параметры в один словарь, вы получите 3x5x3x4x3 точки сетки, и каждая точка будет перекрестно проверена 3 раза.

Как сказал @KRKirov, общее количество параметров является просто произведением отдельных уровней каждого параметра. SciKit learn предоставляет простой способ узнать общее количество параметров следующим образом:

from sklearn.model_selection import ParameterGrid

parameters = {
learning_rate_range: [0.01, 0.05, 0.1]
max_depth_range: [3, 4, 5, 6, 7]
min_child_weight_range: [6, 7, 8]
subsample_range: [0.6, 0.7, 0.8, 0.9]
colsample_range: [0.7, 0.8, 0.9]
}

grid = ParameterGrid(parameters)
# python 3.6+ for the f format
print (f"The total number of parameters-combinations is: {len(grid)}")

Пожалуйста, имейте в виду, что каждая комбинация параметров выполняется 5 раз для перекрестных проверок. Следовательно, общее количество казней будет 5 * len(grid)

Другие вопросы по тегам