Методы ансамбля: чемпион Kaggle по машинному обучению
Опубликовано: 2022-03-11Пословица «Две головы лучше, чем одна» приобретает новый смысл, когда речь идет об ансамблях машинного обучения. Методы ансамбля — одни из самых титулованных семейств машинного обучения на соревнованиях Kaggle, где они часто побеждают со своими впечатляющими результатами.
Но это было за столетие до Kaggle, когда статистик сэр Фрэнсис Гальтон заметил потенциал агрегированного интеллекта. Он наткнулся на соревнование на животноводческой ярмарке, участники которого должны были угадать вес быка. Восемьсот человек представили предположения, но их уровень навыков был разным: фермеры и мясники угадывали вместе с горожанами, которые никогда не видели быка вблизи, поэтому Гальтон считал, что среднее предположение будет совершенно неверным.
Оказалось, что среднее значение догадок толпы отличалось менее чем на фунт (<0,1%). Однако даже самые лучшие индивидуальные прогнозы не оправдались.
Как это могло быть? Что сделало возможным такой неожиданный результат?
Что делает машинные ансамбли такими эффективными
Событие, которое заставило Гальтона усомниться в своих убеждениях, также иллюстрирует, что делает ансамбли такими мощными: если у вас есть разные и независимые модели , обученные с использованием разных частей данных для одной и той же задачи, они будут работать лучше вместе, чем по отдельности. Причина? Каждая модель будет изучать разные части концепции. Следовательно, каждая модель будет давать достоверные результаты и ошибки на основе своих «знаний».
Но самое интересное, что каждая истинная часть будет дополнять другие, а ошибки компенсируют друг друга:
Вам необходимо обучать модели с высокой дисперсией (например, деревья решений) на различных подмножествах данных. Эта добавленная дисперсия означает, что каждая модель соответствует разным данным, но при объединении дисперсия исчезает, как по волшебству. Это создает новую, более надежную модель.
Как и в случае с Гальтоном, когда все данные из всех источников объединяются, результат получается «умнее», чем отдельные точки данных.
Пристальный взгляд на ансамблевое обучение в соревнованиях Kaggle
В конкурсе Otto Group Product Classification Challenge участники должны были построить прогностическую модель, способную различать основные категории продуктов.
Здесь вы можете увидеть, как строилась победившая модель. Это было наложение трех слоев: в первом было 33 модели, во втором были добавлены еще три (XGBoost, нейронная сеть и AdaBoost), а третий представлял собой взвешенное среднее выходных данных предыдущего слоя. Это была и очень сложная модель, и ансамбль.
Еще одним успехом Kaggle стала модель, созданная Ченглонгом Ченом на конкурсе Crowdflower Search Results Relevance. Задача состояла в том, чтобы создать предиктор, который можно было бы использовать для измерения релевантности результатов поиска. Вы можете прочитать полное объяснение его метода, но, поскольку нас интересуют ансамбли, критическая часть истории заключается в том, что в выигрышном решении использовался ансамбль из 35 моделей, многие из которых также были ансамблями — метаансамблем, поэтому говорить.
Методы ансамбля
Существует множество способов реализации ансамблевых методов в машинном обучении. Мы рассмотрим некоторые из самых популярных методов:
- Бэгинг
- Случайный лес
- Повышение
- АдаБуст
- Повышение градиента и XGBoost
- Гибридные ансамблевые методы
- Голосование
- Укладка
- каскадный
Бэгинг
Как уже упоминалось, вам нужно обучать множество моделей на разных подмножествах данных. На практике это непросто, поскольку для многих моделей вам потребуется гораздо больше данных, чем для одной модели, а получить высококачественные наборы данных иногда непросто. Это когда бэггинг (агрегация начальной загрузки) пригодится, поскольку он разделяет данные посредством начальной загрузки: случайная выборка с заменой, в результате чего разные подмножества перекрываются.
После того, как вы обучили свои ансамблевые модели, вы строите свой окончательный прогноз, агрегируя каждый прогноз модели по любой метрике, которую вы предпочитаете: среднее значение, медиана, мода и т. д. Вы также можете использовать вероятности предсказания модели, чтобы сделать взвешенную метрику:
Если мы хотим использовать деревья решений в качестве моделей, но в наших данных мало сильных прогностических атрибутов, все деревья будут похожи. Это связано с тем, что одни и те же атрибуты будут иметь тенденцию быть в корневом узле, производя аналогичные результаты в каждой ветви дерева.
Случайный лес
Одним из методов решения этой проблемы является случайный лес . Он создает ансамбль мешков, используя деревья, но каждый узел ограничивает свои возможные атрибуты случайным подмножеством. Это заставляет модели различаться, решая предыдущую проблему. Это также делает случайный лес очень хорошей моделью для выбора признаков.
Случайный лес — одна из самых популярных моделей машинного обучения, поскольку она обеспечивает хорошую производительность при низкой дисперсии и времени обучения.
Повышение
Повышение также использует начальную загрузку для обучения моделей, с основным отличием в том, что оно добавляет веса к каждому экземпляру на основе ошибок прогнозирования модели. В то время как бэггинг — это параллельный процесс, бустинг — последовательный, в котором каждая модель имеет больше вероятностей. Это позволяет ему получить доступ к некоторым экземплярам предыдущих предсказаний модели.
С этой модификацией повышение пытается увеличить фокус на неправильно классифицированных экземплярах, чтобы достичь лучшей глобальной производительности:
Это также добавляет веса моделям. Предикторы с лучшими показателями во время обучения будут иметь более высокий вес на этапе прогнозирования.
Рассмотрим подробнее некоторые из самых популярных моделей бустинга:
АдаБуст
AdaBoost был одной из первых реализаций бустинга. Он делает почти то же самое, что мы рассказали о бустинге в целом, и использует деревья решений в качестве моделей. Давайте объясним этап обучения с помощью псевдокодирования:
For each instance i Assign w[i] (weight, same for all) For each iteration t Generate a subset s[t] by weighted boosting (using the w[i] weights) Train model m[t] using s[t] Store m[t] Calculate e[t] (error rate of m[t]) Assign error rate e[t] to stored m[t] model If (e[t] <= a_threshold) Exit for Update weights using m[t] errors Во время прогнозирования он взвешивает каждое прогнозирование на основе частоты ошибок e[t] , рассчитанной для каждого из них. Результаты с высокой частотой ошибок будут иметь меньший вес, чем результаты с большей точностью.
Повышение градиента и XGBoost
Одной из основных проблем при обучении такого количества моделей и их совместной работе является поиск наилучшей конфигурации гиперпараметров. Трудно найти лучшую конфигурацию для одной модели; поиск наилучшей конфигурации для n моделей увеличивает сложность в геометрической прогрессии. Идеальная конфигурация для изолированной модели, вероятно, отличается от конфигурации для модели, которая должна работать с другими. Таким образом, вы должны искать конфигурацию всех моделей одновременно, но как?
Повышение градиента предлагает элегантное решение этой проблемы. Он создает функцию потерь, которая имеет на входе все значения гиперпараметров всех моделей и на выходе ошибку всего ансамбля. С помощью градиентного спуска он находит минимальное значение функции (т. е. наименьшую ошибку) и, таким образом, наилучшую конфигурацию гиперпараметров для каждой модели.

Этот подход вводит проблему масштабирования. Введите короля машинного обучения для структурированных данных: экстремальное повышение градиента, для краткости XGBoost. Это невероятно эффективная реализация повышения градиента благодаря различным методам, таким как параллельные вычисления, встроенная возможность перекрестной проверки, регуляризация во избежание переобучения и аппаратная оптимизация. XGBoost обеспечивает выдающуюся производительность.
XGBoost стал популярным, когда его создатель использовал его для вызова Kaggle и выиграл с большим отрывом. Он опубликовал результат и создал оболочку Python, чтобы его могли использовать больше людей. Когда многие люди осознали его потенциал, XGBoost быстро стал чемпионом по машинному обучению.
Гибридные ансамблевые методы
Но на этом история не заканчивается. Мы видели много типов ансамблей, в которых используется одна и та же модель — почему бы не попробовать комбинации разных моделей? Если вы сделаете это хорошо, вы сможете создать еще более мощный метод машинного обучения: гибридный ансамбль .
Голосование
Голосование — один из самых простых подходов к созданию гибридного ансамбля. Он обучает множество различных алгоритмов модели и заставляет их «голосовать» на этапе прогнозирования:
Вы можете добавлять веса к каждой модели на основе ее производительности или предсказания вероятностей и генерировать взвешенное голосование.
Укладка
Стекирование продвигает идею голосования, добавляя новый слой поверх базовых моделей, чтобы сделать окончательный прогноз, а не просто вычислять среднее значение или большинство. Он добавляет концепцию метаобучения, поскольку новый уровень учится не на данных, а на предсказаниях модели:
Вы можете сложить все метаслои, которые вам нравятся, в результате чего получится многоуровневая модель. Для многоуровневых моделей я рекомендую использовать деревья решений, SVM или персептроны. Для базовых моделей вы можете использовать любой метод, даже другой ансамбль, создавая ансамбль из ансамблей. Стекирование работает еще лучше с базовыми моделями, такими как деревья решений, которые генерируют не только прогноз стоимости, но и вероятность его правильности.
Стекирование менее популярно, чем бэггинг или бустинг, потому что сложнее интерпретировать то, что изучают стекированные модели, и потому, что существует гораздо большее количество вариантов: вы можете играть со многими комбинациями алгоритмов модели, конфигураций гиперпараметров и слоев стекирования. Однако при правильном сочетании моделей стэкинг может быть даже сильнее, чем бустинг и бэггинг.
каскадный
Каскадирование используется, когда вы хотите иметь большую степень уверенности в прогнозе. Он использует подход наложения, но имеет только одну модель на каждом уровне. На каждом уровне модели отбрасывают экземпляры, которые, по их мнению, не относятся к желаемому классу.
При каскадировании простые модели оценивают данные раньше, чем сложные модели. На этапе прогнозирования первая модель получает данные. Если достоверность не превышает x (значение должно быть высоким, чем-то большим, чем 0,9), он передает экземпляр следующей модели. В противном случае каскад возвращает предсказанный результат этой модели. Если ни один слой не может предсказать желаемый класс с высокой степенью уверенности, ансамбль возвращает отрицательный класс.
Классический вариант использования этой модели — предсказание того, когда транзакция может быть мошеннической. Предположим, что система обрабатывает миллионы транзакций в день и невозможно контролировать каждую из них вручную. Использование каскадного ансамбля может отбрасывать транзакции, которые не являются мошенническими, с очень высокой вероятностью, оставляя лишь небольшое подмножество транзакций для проверки вручную:
Эти модели являются хорошим вариантом, когда вам нужна отличная метрика отзыва.
В отличие от голосования и суммирования, каскадный ансамбль использует подход с несколькими состояниями, а не подход с участием нескольких экспертов. Важно быть осторожным с очень глубоким каскадированием, потому что оно может привести к переоснащению.
Ценность ансамблевых методов
Объединение многих моделей позволяет нам создавать лучшие и более мощные предикторы, как это происходит, когда люди работают вместе. Мы выделили три семейства ансамблей — бэггинг, бустинг и гибриды — и увидели, как они тренируются и предсказывают.
Дерево решений может быть очень слабой и нестабильной моделью (с высокой дисперсией), но множество разных деревьев (случайный лес) может быть очень точным и стабильным предиктором. Одним из основных преимуществ ансамблей является то, что они создают модели с низкой дисперсией и низким смещением, что является одним из самых больших компромиссов в машинном обучении. В большинстве случаев они превосходят другие методы, а иногда даже лучше, чем глубокое обучение. Они, как правило, слабее глубоких нейронных сетей только при работе с неструктурированными данными.
Если мы продолжим сравнение с глубокими нейронными сетями, мы также можем сказать, что ансамбли, как правило, легче и быстрее на этапах обучения и тестирования. Кроме того, для их работы не требуется дорогостоящее оборудование, такое как мощные дискретные графические процессоры.
Это правда, что ансамбли лишены возможности интуитивного понимания людьми, потому что десятки или сотни моделей, работающих одновременно, создают огромный и сложный инструмент. К счастью, некоторые методы позволяют нам понять, как эти методы принимают решения. Одним из самых популярных является LIME, метод, который создает интерпретируемые объяснения для конкретного экземпляра по любой модели машинного обучения.
Соревнования Kaggle существуют не только для того, чтобы разработчики могли развлекаться, изучать новые навыки или выигрывать призы. Конечная цель — создать сильные модели и выпустить их на волю, чтобы они могли творить чудеса в реальных сценариях. Такие модели используются организациями, решающими критические проблемы. Например, обнаружение мошенничества является распространенным вариантом использования в таких отраслях, как банковское дело и путешествия, которые имеют дело с большими суммами денег, перемещаемыми в рамках отдельных транзакций.
Ансамбли дают лучшие прогнозы с меньшей дисперсией и смещением, чем другие модели. Однако трудно интерпретировать то, что они изучают, и это может иметь решающее значение в некоторых чувствительных приложениях. Одним из примеров этого является индустрия личных кредитов: модель ML может определить, имеет ли физическое лицо право на получение кредита. Однако, если клиент спрашивает, почему финансовое учреждение отказало в кредите, должно быть подробное объяснение, а не просто «Потому что так сказала наша модель ОД».
В конечном счете, хотите ли вы создавать мощные модели машинного обучения для корпоративных приложений, крупных банков или малого бизнеса или просто участвовать в конкурсах, чтобы повысить свою профессиональную репутацию, ансамбли должны быть вашим предпочтительным инструментом.
