Есть ли Python-эквивалент для h2o.stack от R?
Я работаю со сложенными учениками. В соответствии с документами для H2OStackedEnsembleEstimator реализация Python h2o позволяет легко создавать ансамблевые модели. Однако это ограничивается созданием базовых классификаторов с теми же базовыми данными обучения. У меня есть функции, основанные на времени, минимальная дата которых зависит от источника данных. Каждый образец данных является моментом времени. Чтобы использовать как можно больше данных, я разбил функции до двух групп (в зависимости от актуальности и минимальной даты) и обучил две отдельные модели. Я хотел бы объединить эти модели, но H2OStackedEnsembleEstimator требует, чтобы функции были одинаковыми.
В соответствии с этим постом о реализации стекового ансамбля R существует возможность выполнить только этап метаобучения, который должен требовать только k-кратных прогнозов перекрестной проверки для каждой базовой модели и истинного целевого значения.
В случае, если это кому-то придет в голову... для моей конкретной проблемы, я понимаю, что столкнусь с проблемой шага метаобучения с этим несоответствием в минимальной дате, и у меня есть идеи, чтобы обойти это.
1 ответ
Для алгоритма Super Learner (составляя таким образом, что вы используете перекрестно проверенные предсказанные значения от базовых учащихся в качестве обучающих данных для метаучителя), единственным требованием является то, что базовые учащиеся должны обучаться в одних и тех же строках - столбцы могут быть разные. Существует вариант стекирования, назовем его "стекирование выносных", где вы оцениваете базовые модели в наборе данных удерживающих и используете эти прогнозы для обучения мета-маркера. В этом случае вы можете использовать совершенно разные учебные рамки для базовых учащихся.
Текущая реализация Stacked Ensembles в H2O имеет ограничение, заключающееся в том, что вся обучающая рамка (строки и столбцы) должна быть одинаковой для базовых учащихся, но мы ослабим это требование в будущем (так как оно на самом деле не требуется).
Прежде чем мы переместили Stacked Ensembles в бэкэнд Java H2O, я написал простую эталонную реализацию в Python, используя только модуль Python h2o. В настоящее время вы, вероятно, можете довольно легко изменить этот код, чтобы получить тот тип Stacked Ensemble, который вы ищете. Это в сущности здесь.