Глубокое обучение против градиентного бустинга: когда использовать что?

Вопрос или проблема

У меня есть большая проблема с данными, связанная с большим набором данных (например, 50 миллионов строк и 200 столбцов). Набор данных состоит из около 100 числовых столбцов и 100 категориальных столбцов, а также колонки с ответом, которая представляет собой задачу бинарной классификации. Кардинальность каждого из категориальных столбцов составляет менее 50.

Я хочу заранее знать, нужно ли мне использовать методы глубокого обучения или ансамблевые методы на основе деревьев (например, градиентный бустинг, адалонстрайт или случайные леса). Существуют ли методы разведочного анализа данных или какие-либо другие техники, которые могут помочь мне решить, какой метод выбрать?

Почему ограничиваться лишь этими двумя подходами? Потому что они крутые? Я всегда бы начинал с простого линейного классификатора/регрессора. В данном случае это мог бы быть линейный SVM или логистическая регрессия, желательно с реализацией алгоритма, которая может воспользоваться разреженностью из-за размера данных. Запуск алгоритма глубокого обучения на этом наборе данных займет много времени, и я бы обычно пробовал глубокое обучение только в специализированных задачах, где есть какая-то иерархическая структура в данных, такие как изображения или текст. Для многих более простых задач обучения это избыточно и требует много времени и экспертизы для изучения, а также алгоритмы глубокого обучения очень медленно обучаются. Кроме того, только потому, что у вас есть 50 миллионов строк, не означает, что вам нужно использовать весь набор данных, чтобы получить хорошие результаты. В зависимости от данных вы можете получить хорошие результаты с выборкой из нескольких сотен тысяч строк или нескольких миллионов. Я бы начал с простого, с небольшой выборки и линейного классификатора, и усложнял бы по мере необходимости, если результаты не будут удовлетворительными. По крайней мере, таким образом вы получите базовый уровень. Мы часто замечаем, что простые линейные модели превосходят более сложные модели в большинстве задач, поэтому всегда стоит начинать с них.

В продолжение того, что уже сказал @Simon:

  1. Методы глубокого обучения особенно полезны для решения задач в области зрения, речи и моделирования языка, где создание признаков является затруднительным и требует много усилий.
  2. Для вашего приложения это не так, поскольку у вас хорошо определенные признаки и только взаимодействия признаков и т.д. необходимы.
  3. Учитывая, что модели глубокого обучения требуют много вычислительных ресурсов и времени ученых на кодирование, я бы предложил выбрать метод, не относящийся к глубокому обучению.

Для вашей проблемы компромисс усилие против выгоды не кажется в пользу глубокого обучения. Глубокое обучение было бы избыточным

С моей точки зрения, для 5 миллионов экземпляров вам нужно много деревьев, чтобы получить хорошую обобщающую границу (хорошую модель в общепринятом смысле). Если это не проблема, то следуйте этому, даже точный ответ зависит от природы вашей проблемы. Градиентный бустинг деревьев (GBT) – это хороший метод, особенно если у вас смешанные типы признаков, такие как категориальные, числовые и т.д. Кроме того, по сравнению с нейронными сетями, у него меньше гиперпараметров, которые нужно настраивать. Таким образом, быстрее получить модель с наилучшими настройками. Еще один момент – альтернатива параллельному обучению. Вы можете обучать несколько деревьев одновременно с хорошим ЦП. Если вас не устраивают результаты, то переходите к нейронным сетям, так как это означает, что ваша модель должна быть более обширной и должна изучать информацию более высокого порядка через ваши данные. Это преимущество нейронных сетей по сравнению с другими алгоритмами обучения.

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

Как только вы перейдете к большему, чем примерно 1:10, дисбалансу классов, большинство классификационных методов просто перестанут работать. У вас останутся методы, основанные на случайных лесах и, возможно, нейронных сетях (я еще не пробовал). Я работаю с балансом классов в диапазоне от 1:500 до 1:1000 и заметил, что ни уменьшение, ни увеличение выборки не помогают. К счастью, мой набор данных состоит “только” из 6 миллионов наблюдений по 200 переменным, и я могу запустить бустированные деревья на всем наборе за разумное время.

Итак, чтобы ответить на ваш вопрос:

  • вам нужно придумать несколько вопросов, на которые вы хотите ответить, и в случае классификации проверить баланс классов целевых переменных.

  • вам следует проверить распределение (не в математическом смысле) пропущенных значений во всех ваших данных и задокументировать то, что вы находите. Некоторые методы машинного обучения хорошо работают с пропущенными значениями, в то время как другие – нет, и вам нужно обратить внимание на имputation данных (что имеет свои собственные наборы правил и рекомендаций и проблемы).

Очень сложно превзойти градиентно-усиленные деревья с поддержкой категориальных признаков, такие как это, на табличном наборе данных. Предполагая, что ваши данные не имеют временной/пространственной/порядковой структуры (как в речи/изображении/тексте), я очень сомневаюсь, что вы получите лучшие результаты с глубоким обучением. Тем не менее, теорема “без бесплатного обеда” утверждает, что не существует алгоритма, который был бы лучшим для всех данных. Это эмпирическая наука.

Когда у вас такой большой набор данных, вы можете использовать любые статистические и методы моделей машинного обучения, и это настоятельно рекомендуется. Как другие предложили, я бы также рекомендовал взять несколько миллионов случайных выборок из данных и поработать с ними. Поскольку это задача классификации, я бы сначала использовал простые методы классификации, а затем уже переходил к более сложным. Логистическая регрессия – отличное начало.

Я хотел добавить, что генеративные модели также должны быть опробованы. Наивный байесовский классификатор является одним из самых простых вероятностных классификаторов и превосходит многие сложные методы, такие как машины опорных векторов, в многих задачах. Вы можете посмотреть эту простую реализацию NB и эту ссылку для сравнения NB с логистической регрессией.

Можно построить наивный байесовский (NB) классификатор как базовую модель, а затем перейти к любой технике машинного обучения, такой как машины опорных векторов (SVM) или многослойные персептроны (MLP). Компромисс здесь в том, что NB менее вычислительно затратен, чем MLP, поэтому желательна лучшая производительность от MLP.

Что касается вашего конкретного запроса: глубокое обучение и градиентное бустирование деревьев – это очень мощные техники, которые могут моделировать любые виды отношений в данных. Но что если в вашем случае простая логистическая регрессия или NB дает желаемую точность? Поэтому всегда лучше сначала попробовать простые техники и получить базовую производительность. Затем можно переключиться на сложные модели и сравнить с базовой.

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

Попробуйте загнать ваш набор данных в autogluon от Amazon, он попробует деревья, нейронные сети и другие техники для вас, скажет, что лучше, а также создаст “ансамблевую” модель из лучших конкурентов, которая может быть лучше, чем любая отдельная технология.

Ответ или решение

Глубокое обучение против градиентного бустинга: Когда использовать что?

Вопрос о выборе между глубоким обучением и методами ансамблевого градиентного бустинга является актуальным и многогранным, особенно в свете поставленной задачи — анализа больших данных, содержащих 50 миллионов строк и 200 столбцов, из которых 100 являются числовыми, а остальные 100 — категориальными. Ниже представлен исчерпывающий обзор факторов, способствующих выбору между этими двумя подходами, с акцентом на ключевые аспекты, которые необходимо учесть.

1. Характеристики данных

Первым шагом к выбору модели является анализ структуры ваших данных. Вам необходимо:

  1. Картирование признаков: исследуйте корреляцию между числовыми признаками. Если параметры имеют низкую корреляцию между собой, это может служить аргументом в пользу использования глубокого обучения, так как сети глубокого обучения способны обнаруживать сложные взаимодействия между признаками.

  2. Качественные признаки: учитывая, что у вас есть 100 категориальных признаков с кардинальностью менее 50, методы градиентного бустинга, такие как CatBoost, могут наиболее эффективно работать с такими данными. Эти алгоритмы поддерживают работу с категориальными признаками и могут значительно упростить процесс предобработки данных.

  3. Классовый дисбаланс: проверьте баланс классов в целевом столбце. Если дисбаланс велик (например, 1:500 и более), методы градиентного бустинга, такие как Random Forest или XGBoost, могут быть более устойчивыми к таким условиям по сравнению с глубоким обучением, которое может требовать больших объемов данных для достижения адекватных результатов.

2. Сложность и ресурсы

Глубокое обучение обычно предполагает более высокие вычислительные затраты и более длительное время на обучение по сравнению с методами градиентного бустинга. Учитывайте следующие пункты:

  1. Временные затраты: обучение нейронных сетей на таких масштабах, как 50 миллионов строк, требует значительных вычислительных ресурсов. Если ваша основная задача — быстрое получение результатов, метод градиентного бустинга может оказаться более подходящим вариантом.

  2. Опыт и понимание: успешное применение глубокого обучения часто требует глубоких знаний в области нейронных сетей, что может быть препятствием для быстрого внедрения. Если у вас нет достаточного опыта в их использовании, стоит рассмотреть более простые методы.

3. Оптимизация модели и гибкость

Параметры моделей градиентного бустинга обычно меньше по количеству, чем у нейронных сетей. Это позволяет быстрее находить оптимальные настройки модели. Также стоит учесть:

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

  2. Обработка различных типов данных: ансамблевые методы, такие как градиентный бустинг, наилучшим образом справляются с смешанными типами данных (числовыми и категориальными), тогда как глубокое обучение требует тщательной предобработки для обработки таких данных.

4. Простой подход перед сложными методами

Как уже упоминалось, важно начинать с простых моделей, чтобы установить базовую линию. Рассмотрите следующее:

  1. Начните с логистической регрессии или наивного байесовского классификатора для первичного анализа. Эти методы могут предоставить убедительные результаты без необходимости вовлечения сложных моделей.

  2. Если простые модели показывают недостаточную производительность, переходите к более сложным методам, включая методы градиентного бустинга, и, в конечном итоге, после тщательной оценки, к глубокому обучению, если это оправдано.

5. Эмпирический подход

Наконец, важно помнить об эмпирической природе машинного обучения. Даже самые обоснованные гипотезы могут оказаться неэффективными в конкретном случае. Поэтому:

  • Протестируйте несколько моделей на подмножестве данных. Это позволит вам оценить их эффективность и выбрать наиболее подходящий метод для вашей задачи.

  • Используйте инструменты автоматизированного машинного обучения (AutoML), такие как AutoGluon, которые могут помочь в автоматической оценке различных алгоритмов и предложить наилучшие из них для вашей задачи.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...