h2o DRF обработка невидимых категориальных значений - PullRequest
0 голосов
/ 24 октября 2018

В документации для DRF указано

Что происходит, когда вы пытаетесь прогнозировать на категориальном уровне, не замеченном во время тренировки? DRF преобразует новый категориальныйуровень до значения NA в тестовом наборе, а затем делится влево на значение NA во время оценки.Алгоритм разделяется слева на значения NA, потому что во время обучения значения NA группируются с выбросами в крайнем левом бине.

Вопросы:

  1. Таким образом, h2o преобразует невидимоеуровни для NA, а затем обрабатывает их так же, как NA в данных обучения.Но что, если в обучающих данных также нет NA?
  2. Предположим, что мой категорический предиктор имеет тип enum и его следует понимать как неординарный.Что означает «, сгруппированные с выбросами в самой левой корзине »?Если предиктор неординарный, то нет " крайнего левого " и нет " выбросов ".
  3. Давайте отложим вопросы 1 и 2 в сторону и сосредоточимсяна части " Алгоритм разбивает налево на значения NA, потому что во время обучения значения NA группируются с выбросами в крайнем левом интервале ".Это противоречит этому SO-ответу , показывающему одно дерево DRF, полученное из MOJO.Хорошо видно, что НС идут влево и вправо.Это также противоречит ответу на другой вопрос в документации, где говорится, что « пропущенные значения как отдельная категория [...] могут идти влево или вправо », см.

Как алгоритм обрабатывает пропущенные значения во время обучения? Пропущенные значения интерпретируются как содержащие информацию (т. Е. Пропущенные по причине), а не пропущенные случайно.Во время построения дерева решения разделения для каждого узла находят путем минимизации функции потерь и обработки пропущенных значений как отдельной категории, которая может идти либо влево, либо вправо.

Последний пункт - скорее предложение, чемвопрос.Документация о пропущенных значениях для GBM гласит:

Что происходит, когда вы пытаетесь предсказать на категориальном уровне, не замеченном во время обучения? Превращаются невидимые категориальные уровнив АН, и, следовательно, следуют тому же поведению, что и АН.Если в данных обучения отсутствуют NA, то невидимые категориальные уровни в данных теста следуют направлению большинства (направление с большинством наблюдений).Если в данных обучения есть NA, то невидимые категориальные уровни в данных теста следуют в направлении, оптимальном для NA данных обучения.

В отличие от описания того, как DRF обрабатывает пропущенныезначения, это, кажется, полностью соответствует.Плюс: использование мажоритарного пути, а не всегда движение влево в точках разделения, представляется более естественным.

1 Ответ

0 голосов
/ 24 октября 2018

Предложение, на которое вы указали, что, казалось, противоречит другим частям документа, на самом деле устарело.Я сделал Jira Ticket , чтобы обновить FAQ с правильным ответом (что вы видите в разделе пропущенных значений GBM - т.е. обработка пропущенных значений одинакова для GBM и DRF).

В качестве примечания, тип данных enum внутренне кодируется как числовые значения, вы можете узнать больше о типах H2O отображения, которые можно использовать здесь: http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/algo-params/categorical_encoding.html. Например, после того, как строки сопоставлены с целыми числами для Enum, вы можете разделить {0, 1, 2, 3, 4, 5} на {0, 4, 5} и {1, 2, 3}.

Или посмотрите, как h2o-3 делаетбиннинг по категориям здесь: http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/gbm-faq/histograms_and_binning.html

...