Найти в Дзене
Властелин машин

Запуск алгоритма градиентного бустинга XGBoost из библиотеки H2O

Рассмотрим, какие параметры определяют работу алгоритма градиентного бустинга H2OXGBoostEstimator и сам процесс обучения соответствующей модели. Исследование проведем на примере предсказания выживания пассажиров "Титаника":

Получим индексы выборок для перемешанного датафрейма:

-2

Инициализируем H2O кластер, H2O фрейм и укажем тип целевой колонки, чтобы автоматически определился класс задачи (бинарная классификация):

-3

Перед запуском рассмотрим основные параметры, определяющие работу класса H2OXGBoostEstimator:

1. ntrees - количество деревьев (по умолчанию 50);
2.
max_depth - глубина, 0 - без ограничений (по умолчанию 6). Максимальная глубина должна быть ограничена, если grow_policy=depthwise;
3.
min_rows (min_child_weight) - минимальное количество наблюдений в листе (по умолчанию 1);
4.
learn_rate (eta) - скорость обучения, задается из отрезка 0.0 до 1.0 (по умолчанию 0.3);
5.
sample_rate (subsample) - доля наблюдений для тренировки каждого дерева, задается из отрезка от 0 до 1 (по умолчанию 1);
6.
col_sample_rate (colsample_bylevel) - доля признаков, выбираемых для каждого сплита дерева (по умолчанию 1);
7.
nthread - количество параллельных потоков (по умолчанию -1, что предполагает использование всех ядер);
8.
distribution - задает тип распределения цели. Распространенными значениями для бинарной классификации являются 'bernoulli', многоклассовой - 'multinomial' (тип target-а факторный), для регрессии - 'gaussian', 'poisson' (тип target-а числовой). По умолчанию определяется автоматически если тип target-а числовой, то 'gaussian', если категориальный то при двух значениях 'bernoulli', иначе 'multinomial';
9.
seed - инициализатор генератора случайных чисел;
10.
max_leaves - максимальное количество листьев для дерева;
11.
grow_policy - принцип добавления узлов к дереву. По умолчанию используется 'depthwise', который на каждой итерации разделяет узлы одного уровня, 'lossguide' не ставит в приоритет разбиение узлов одного уровня, а ориентируется на максимальное снижения потерь при каждом разбиении. Алгоритм требует, чтобы при 'depthwise' было ограничено max_depth, а при 'lossguide' max_leaves;
12.
tree_method - влияет на количество бинов непрерывной переменной, которые рассматриваются при поиске оптимальной границы разбиения. По умолчанию алгоритм автоматически определяет, насколько точным делать выбор границы. Значение hist использует метод ускорения поиска бинов и для него важно задать их максимальное количество max_bins (по умолчанию 256);
13.
reg_lambda - коэффициент для L2 регуляризации (по умолчанию 1).
14.
reg_alpha - коэффициент для L1 регуляризации (по умолчанию 0).
15.
categorical_encoding - способ преобразования категориальных данных (например, one_hot_internal - по умолчанию, eigen, label_encoder);

С помощью флага verbose в методе train можно регулировать вывод в консоль информации об обучении (по умолчанию FALSE).

Подробнее о параметрах алгоритма можно прочитать здесь.

С некоторыми параметрами можно эмулировать режим, похожий на работу алгоритма LightGBM:
tree_method="hist"
grow_policy="lossguide"
с ним связаны параметры:
max_leaves и
max_bins
Так, можно запустить алгоритм в этом режиме и вывести валидационную auc:

-4

-5