Оба дерева решений, включая ансамбли деревьев, а также нейронные сети, являются очень мощными и очень эффективными алгоритмами обучения. Когда вы должны выбрать тот или иной?

Давайте рассмотрим некоторые плюсы и минусы каждого из них.

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

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

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

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

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

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

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

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

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

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

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

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