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

datascience.stackexchange https://datascience.stackexchange.com/questions/2504

Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

На линиях того, что @Simon уже сказал:

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с datascience.stackexchange
scroll top