Я бы сказал, что выбор во многом зависит от того, какие данные у вас есть и какова ваша цель. Несколько «эмпирических правил».
Случайный лес изначально подходит для задач мультикласса, в то время как SVM изначально двухклассовый. Для задачи мультикласса вам нужно будет сократить ее до нескольких задач двоичной классификации.
Случайный лес хорошо сочетается с числовыми и категориальными особенностями. Когда функции находятся в разных масштабах, это тоже хорошо. Грубо говоря, в Random Forest вы можете использовать данные такими, какие они есть. SVM максимизирует «запас» и, таким образом, опирается на концепцию «расстояния» между различными точками. Вам решать, является ли "расстояние" значимым. Как следствие, обязательным является горячее кодирование для категориальных функций. Кроме того, min-max или другое масштабирование настоятельно рекомендуется на этапе предварительной обработки.
Если у вас есть данные с точками и функциями, промежуточным этапом в SVM является построение матрицы (подумайте о требованиях к памяти для хранения) путем вычисления точечных произведений (сложность вычислений). Поэтому, как правило, SVM вряд ли можно масштабировать за пределы 10-5 баллов. Большое количество признаков (однородные объекты со значимым расстоянием, пиксель изображения - отличный пример), как правило, не является проблемой.Nмn × nN2
Для задачи классификации Random Forest дает вам вероятность принадлежности к классу. SVM дает вам расстояние до границы, вам все равно нужно как-то преобразовать ее в вероятность, если вам нужна вероятность.
Для тех проблем, где применяется SVM, он обычно работает лучше, чем Random Forest.
SVM дает вам «векторы поддержки», то есть точки в каждом классе, ближайшем к границе между классами. Они могут представлять интерес для интерпретации.