Я попытаюсь ответить на этот вопрос с помощью комбинации опубликованных доказательств, личного опыта и предположений.
А) Опубликованные доказательства.
Единственная известная мне статья, которая поможет мне ответить на этот вопрос, - Delgado et al 2014 - нужны ли нам сотни классификаторов для решения проблем классификации в реальном мире? - JMLR, который запускает сотни различных алгоритмов и реализаций на 121 наборе данных для UCI. Они считают, что хотя RBF SVM не являются «лучшим» алгоритмом (если я правильно помню, это случайные леса), он входит в тройку лидеров (или 5).
Если вы считаете, что их выборка наборов данных является «хорошей выборкой» проблем реального мира, то SVM определенно является алгоритмом, который следует попробовать на новых задачах, но сначала следует попробовать случайный лес!
Ограничения для обобщения этого результата состоят в том, что наборы данных почти все высокие и худые (n >> p), не очень разреженные, что, как я полагаю, должно представлять большую проблему для RF, и не очень большое (как n, так и p).
Наконец, по-прежнему на опубликованных данных, я рекомендую два сайта, которые сравнивают различные реализации случайных лесов:
Б) Личный опыт.
Я считаю, что такие документы, как Delgado et al., Очень важны для сообщества машинного обучения, поэтому я попытался воспроизвести их результаты в некоторых других условиях. Я запустил около 15 различных алгоритмов для более чем 100 наборов двоичных данных (из набора наборов данных Delgado). Я также думаю, что я был более осторожен в выборе гиперпараметров, чем они.
Мои результаты таковы, что SVM был «лучшим алгоритмом» (средний ранг 4.9). Я предполагаю, что SVM прошел RF, потому что исходный набор данных содержал много проблем мультикласса - которые я буду обсуждать в части спекуляции - должен быть проблемой для SVM.
РЕДАКТИРОВАТЬ (Jun / 16):
Но RF намного быстрее, и это был 2-й лучший алгоритм (средний ранг 5.6), за которым следуют gbm (5.8), nnets (7.2) и т. Д.). Я не пробовал стандартную логистическую регрессию в этих задачах, но я пробовал упругую сеть (L1 и L2 регуляризованный LR), но она не работала хорошо (средний ранг 8,3) ~
Я еще не закончил анализ результатов или написание статьи, поэтому я даже не могу указать технический отчет с результатами. Надеюсь, через несколько недель я смогу отредактировать этот ответ и указать на технический отчет с результатами.
Документ доступен по адресу http://arxiv.org/abs/1606.00930. Оказывается, что после полного анализа RF и SVM практически эквивалентны с точки зрения ожидаемой частоты ошибок, а SVM является самым быстрым (к моему удивлению !!). Я больше не настаиваю на рекомендации RF (по соображениям скорости).
Итак, мой личный опыт заключается в том, что, хотя SVM может дать вам некоторую дополнительную точность, почти всегда лучше использовать RF.
Также для более крупных проблем может оказаться невозможным использование пакетного решателя SVM (я никогда не использовал онлайновый решатель SVM, такой как LASVM или другие).
Наконец, я использовал логистическую регрессию только в одной ситуации. Я занимался какой-то «интенсивной» проработкой функций по проблеме классификации изображений (например, - объединить или нет два разных описания изображения и размерность описаний). И я использовал логистическую регрессию для выбора среди множества альтернатив (потому что в LR нет поиска гиперпараметров). Как только мы установили лучшие характеристики (согласно LR), мы использовали RF (выбирая лучшие гиперпараметры), чтобы получить окончательный классификатор.
В) спекуляция
Я никогда серьезно не работал над мультиклассовыми проблемами, но мне кажется, что SVM не так хорош для них. Проблема заключается не в том, что существует решение «один против одного» или «один против всех», а в том, что все известные мне реализации будут использовать одни и те же гиперпараметры для всех (OVO или OVA) классификаторов. Выбор правильных гиперпараметров для SVM настолько дорог, что ни одна из известных мне реализаций не будет выполнять поиск по каждому классификатору. Я предполагаю, что это проблема для SVM (но не проблема для РФ !!).
Опять же, для задач мультикласса я бы пошел прямо в РФ.
У меня нет достаточных привилегий, чтобы писать комментарии, поэтому я просто предоставлю свои комментарии / замечания здесь в качестве ответа.
По моему опыту, классификаторы опорных векторов (SVC) имеют тенденцию быть либо на уровне, либо превосходить другие методы, когда бинарные классы сбалансированы. Для несбалансированных классов SVC имеет тенденцию работать плохо.
Я не часто сталкиваюсь с проблемами мультикласса, но я видел некоторые хорошие результаты с SVC и для задач мультикласса.
Еще одна вещь, которую я заметил, заключается в том, что проклятие размерности, похоже, не влияет на SVC так сильно, как другие методы моделирования. Другими словами, когда я добавляю больше терминов в модель, другие методы начинают плохо работать на тестовом наборе (или на выносливости) по сравнению с тренировочным набором. Но не так много, когда я использую SVC. По этой причине, если скупость модели не является вашим приоритетом, SVC может быть лучшим вариантом, так как вы можете добавить множество терминов без чрезмерного подгонки по сравнению с другими методами.
Одна из проблем, с которыми я сталкиваюсь с SVC, заключается в том, что он неявным образом обеспечивает меру (например, прогнозируемую вероятность), чтобы иметь возможность ранжировать наблюдения. Вы можете использовать Platt Scaling (реализовано в пакете sklearn.svm в Python), но я видел некоторые несоответствия. (Я могу поделиться подробностями, если кому-то интересно.)
Не уверен, что это действительно отвечает на ваш вопрос, но это мои наблюдения. Надеюсь, это поможет.
источник
RF и (RBF) SVM имеют разные теории, но если у вас достаточно данных, они работают одинаково хорошо. Они оба могут изучать сложные функции и прекрасно справляться с шумными и неинформативными переменными и выбросами.
Если вы пытаетесь получить наилучшие результаты для чего-то вроде чайки, вы все равно объедините несколько моделей, включая RF и SVM.
В настройках, не связанных с игрой, вы можете подумать, насколько сложно реализовать модель, запустить ее в производство, сделать прогноз, интерпретировать, объяснить ее менеджеру и т. Д.
SVM (линейный или сильно регуляризованный RBF) определенно предпочтительнее, если у вас небольшой объем данных или вы имеете дело с курсом размерности. Для этого есть несколько причин, одна из которых заключается в том, что лучше искать гиперплоскость с максимальным запасом вместо серий наилучших расщеплений на объектах, также обычно не требуется сложная граница, поскольку в пространстве с большими размерами будет некоторая гиперплоскость, которая может разделить данные в любом случае. Другая проблема заключается в том, что RF сложнее настроить (имеет больше параметров для настройки), поэтому вам нужно больше данных.
Другое мнение, что перекрестная проверка может быть очень дешевой и быстрой для SVM, особенно LOOCV. Поскольку только несколько выборок являются опорными векторами (не всегда), вам не нужно переучивать свой классификатор при каждом сгибе, но только тогда, когда данные, которые сейчас находятся в тестовом наборе, ранее были опорными векторами. Это также может облегчить онлайн-обучение.
Кроме того, может быть дешевле хранить векторы поддержки, чем полные деревья.
Часто лучше составить вероятностную модель, чем классификатор. Итак, сначала сделайте модель, а потом решение. В этом случае логистическая регрессия будет предпочтительной. И вы все еще можете использовать ядра и регуляризацию, чтобы заставить ее вести себя так, как вы хотите. Кроме того, вы не будете использовать RF для ответа на такие вопросы, как: поправка на возраст, образ жизни, пол и образование, увеличивает ли употребление алкоголя вероятность окрашивания сердечного приступа?
Некоторый дополнительный ресурс, который я нашел интересным: https://www.quora.com/What-are-the-advantages-of-different-classification-algorithms http://videolectures.net/solomon_caruana_wslmw/
источник