Как определить, сколько моделей 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)