В моей модели машинного обучения Xgboost, когда функции имеют нулевое значение, следует ли отбросить их или сгруппировать? - PullRequest
0 голосов
/ 26 февраля 2019

Я пытался построить модель ML, которая предсказывает время, необходимое различным продуктам для прохождения конвейера развертывания.Я создал около 30-40 различных функций, 90% которых являются категориальными, а 10% - числовыми.Например, у меня есть одна функция «категория продукта», которая может принимать 5 различных значений.Затем я создаю фиктивные значения для всех моих категориальных переменных, и вместо этого получаю около 200-300 переменных.

Я обучил модель XGboost, проверил важность функций и заметил, что большинство моих функций имеют значение <0,001.и многие из них, около 30 по 0. Что мне делать с этой информацией?Должен ли я отбросить эти переменные (например, отбросить половину категорий товаров) или сгруппировать их все вместе в категорию «Другие»?Любые советы или стандартные способы борьбы с этим? </p>

РЕДАКТИРОВАТЬ: Мои гиперпараметры.

xgb = xgboost.XGBRegressor(
    max_depth = 11,
    n_estimators= 150,
    min_child_weight= 1,
    eta= .3,
    subsample= 0.9,
    gamma= 0.1,
   colsample_bytree= 0.9,
   objective= 'reg:gamma'
   )

1 Ответ

0 голосов
/ 27 февраля 2019

Я предполагаю, что ваши данные очень скудны. Было бы полезно, если бы вы упомянули гиперпараметры, которые вы использовали для вашей модели , например, max_depth.Обычно Tress довольно устойчивы по количеству функций, но в GBM мы используем слабых учеников.Поэтому, если количество построенных вами деревьев меньше количества объектов, модель не может понять важность всех функций.

...