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

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

Регуляризация или переоснащение

И RF, и GBM являются ансамблевыми методами, то есть вы создаете классификатор из большого количества более мелких классификаторов. RF использует деревья решений, которые очень подвержены переобучению. Чтобы добиться более высокой точности, RF решает создать их большое количество на основе мешков. Основная идея состоит в том, чтобы повторно выбирать данные снова и снова и для каждой выборки тренировать новый классификатор. Различные классификаторы по-разному подгоняют данные, и посредством голосования эти различия усредняются. Процесс усреднения или объединения результатов различных деревьев решений помогает преодолеть проблему переобучения. Случайный лес также имеет меньшую дисперсию, чем одно дерево решений. Это означает, что он работает правильно для большого диапазона элементов данных, чем отдельные деревья решений.

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

Следовательно, GBM не предусматривает регуляризацию, но из-за многократной повторной выборки данных алгоритм RF более регуляризован.

Стандартная реализация GBM не имеет регуляризации, такой как XGBoost, поэтому она также помогает уменьшить переоснащение. Фактически, XGBoost также известен как метод «регуляризованного повышения». Но алгоритмы повышения могут переобучиться, если количество деревьев очень велико.

SVM работает аналогично логистической регрессии при линейном разделении и хорошо работает с нелинейной границей в зависимости от используемого ядра. SVM подвержен проблемам переобучения / обучения в зависимости от ядра. Более сложное ядро ​​подошло бы модели.

Отсутствующие значения

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

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

SVM плохо работает с отсутствующими данными. Перед запуском SVM всегда лучше подставить недостающие значения.

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

Функция потерь

Функции потери регрессии:

L1 и L2 - две функции потерь в машинном обучении, которые используются для минимизации ошибки. Функция потерь L1 означает наименьшее абсолютное отклонение. Также известен как LAD. Функция потерь L2 означает наименьшие квадратичные ошибки. Также известен как LS.

Функция потери L1

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

Функция потери L2

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

Huber («huber»): еще одна надежная функция потерь, которая сочетает в себе наименьшие квадраты и наименьшее абсолютное отклонение; используйте альфа-канал для управления чувствительностью к выбросам.

Функции классификации потерь:

Биномиальное отклонение («отклонение»): отрицательная биномиальная функция потерь логарифма правдоподобия для двоичной классификации (обеспечивает оценки вероятности). Исходная модель дается логарифмическим отношением шансов.

Полиномиальное отклонение («отклонение»): отрицательная полиномиальная функция потерь логарифмической вероятности для мультиклассовой классификации с n_classes взаимоисключающими классами. Он предоставляет оценки вероятности. Исходная модель задается априорной вероятностью каждого класса. На каждой итерации должны быть построены деревья регрессии n_classes, что делает GBRT довольно неэффективным для наборов данных с большим количеством классов.

Экспоненциальные потери («экспоненциальные»): та же функция потерь, что и AdaBoostClassifier. Менее устойчивые к неправильной маркировке примеров, чем «отклонение»; может использоваться только для двоичной классификации.

Машина опорных векторов

Функция потерь в SVM - это потеря шарнира.

Для Soft Margin SVM функция потерь равна

а для Hard Margin SVM функция потерь равна

Как в Random Forest, так и в XG Boost функцию потерь можно автоматизировать.

Обрезка деревьев

В GBM обрезка деревьев прекращается при обнаружении отрицательных потерь.

XGBoost увеличивает дерево до max_depth, а затем сокращает его в обратном направлении, пока улучшение функции потерь не станет ниже порогового значения.

Дисперсия и смещение

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

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

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

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

В линейной регрессии мы проводим через точки прямую линию. Эта линия, которая, конечно, представляет собой набор прогнозируемых значений, имеет нулевую статистическую дисперсию. Но смещение (вероятно) велико, т. Е. Не очень хорошо соответствует данным. Далее, предположим, что мы моделируем данные с помощью сплайна полинома высокой степени. Мы увеличиваем степень полинома до тех пор, пока не улучшится подгонка (на самом деле, с произвольной точностью). Теперь у нас есть ситуация с смещением, которое стремится к нулю, но дисперсия очень велика. Полиномы более высокой степени являются более сложными, с большей дисперсией и низким смещением. Логистическая регрессия имеет низкую дисперсию и высокую систематическую ошибку.

Гибкость

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

Перекрестная проверка

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

Это не похоже на GBM, где мы должны запускать поиск по сетке и тестировать только ограниченные значения.

По умолчанию случайный лес собирает 2/3 данных для обучения и отдыха для тестирования на регрессию и почти 70% данных для обучения и отдыха для тестирования во время классификации. По принципу, поскольку он рандомизирует выбор переменных во время каждого дерева сплит, он не склонен к переобучению, в отличие от других моделей. Он также использует O оценок пакетов (OOB), которые можно использовать для проверки модели.

Вычислительная мощность

XGBoost реализует параллельную обработку и невероятно быстрее по сравнению с GBM. Повышение уровня является последовательным процессом, но его все еще можно распараллелить. Каждое дерево может быть построено только после предыдущего, и каждое дерево строится с использованием всех ядер. Это делает XGBoost очень быстрым алгоритмом.

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

Наивный байесовский метод вычислений быстр и прост в реализации. Он также хорошо работает при прогнозировании нескольких классов.

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

Особенности набора данных

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

Наивный байесовский классификатор хорошо работает с большими измерениями. Самый большой недостаток состоит в том, что наивный байесовский классификатор делает очень сильное предположение о форме распределения данных, т. Е. Любые две характеристики независимы. учитывая выходной класс. Он хорошо работает в случае категориальных входных переменных по сравнению с числовыми переменными. Для числовой переменной предполагается нормальное распределение (кривая колокола, что является сильным предположением). Если категориальная переменная имеет категорию (в наборе тестовых данных), которая не наблюдалась в наборе обучающих данных, то модель присвоит вероятность 0 (ноль) и не сможет сделать прогноз. Это часто называют «Нулевая частота». Чтобы решить эту проблему, мы можем использовать технику сглаживания. Один из простейших методов сглаживания называется оценкой Лапласа. Когда выполняется предположение о независимости, наивный байесовский классификатор работает лучше по сравнению с другими моделями, такими как логистическая регрессия, и вам нужно меньше данных для обучения.

RF декоррелирует деревья (относительно деревьев в мешках). Это важно при работе с несколькими функциями, которые могут быть коррелированы. Он может обрабатывать качественные (категориальные) функции. Случайные леса могут лучше работать с небольшими наборами данных. Также они не требуют подготовки исходных данных. Масштабировать данные не нужно. Он также поддерживает точность даже тогда, когда большая часть данных отсутствует.

Все алгоритмы повышения могут легко обрабатывать качественные (категориальные) функции. Усиленные деревья требуют больших объемов данных и больших наборов данных.

Логистическая регрессия хорошо работает с диагональными (характеристическими) границами решения.

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