Альтернативы деревьям классификации, с лучшей прогностической (например, CV) эффективностью?

23

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

Данные, с которыми я имею дело, имеют факторы как для объясняющих, так и для объясненных переменных.

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

Таль Галили
источник
5
Не связывайтесь с нейронными сетями, это устаревшая технология.
1
@mbq Вы все еще поддерживаете это утверждение?
ромбододекаэдр
@rhombidodecahedron Конечно, играйте с NN с 2010 года, и вы согласитесь. Кроме того, я сомневаюсь, что любая модель DL принесет что-либо в таблицу с данными (предположительно) такого небольшого размера.

Ответы:

25

Думаю, стоило бы попробовать попробовать Random Forests ( randomForest ); некоторые ссылки были предоставлены в ответ на связанные вопросы: выбор функции для «окончательной» модели при выполнении перекрестной проверки в машинном обучении ; Можно ли сделать модели CART надежными? , Повышение / пакетирование делают их более стабильными, чем одна CART, которая, как известно, очень чувствительна к небольшим возмущениям. Некоторые авторы утверждали, что он работал так же, как и штрафные SVM или Grastent Boosting Machines (см., Например, Cutler et al., 2009). Я думаю, что они, безусловно, превосходят NN.

Boulesteix и Strobl дают хороший обзор нескольких классификаторов в Оптимальном выборе классификатора и отрицательного отклонения в оценке ошибок: эмпирическое исследование по многомерному прогнозированию (BMC MRM 2009 9: 85). Я слышал о другом хорошем исследовании на IV совещании EAM , которое должно быть рассмотрено в разделе Статистика в медицине ,

Жоау Мароко , Дина Сильва, Мануэла Геррейро, Александр де Мендонса. Превосходят ли случайные леса нейронные сети, машины опорных векторов и классификаторы дискриминантного анализа? Тематическое исследование эволюции деменции у пожилых пациентов с когнитивными жалобами

Мне также нравится пакет caret : он хорошо документирован и позволяет сравнивать прогностическую точность разных классификаторов на одном наборе данных. Он заботится об управлении обучающими / тестовыми образцами, точности вычислений и т. Д. В нескольких удобных для пользователя функциях.

Пакет glmnet от Friedman и др. Реализует штрафные GLM (см. Обзор в журнале статистического программного обеспечения ), поэтому вы остаетесь в хорошо известной среде моделирования.

В противном случае вы также можете найти классификаторы на основе правил ассоциации (см. Представление задач CRAN по машинному обучению или 10 лучших алгоритмов интеллектуального анализа данных для подробного ознакомления с некоторыми из них).

Я хотел бы упомянуть еще один интересный подход, который я планирую повторно реализовать в R (на самом деле это код Matlab), а именно: анализ дискриминантной переписки Эрве Абди. Хотя первоначально он был разработан для того, чтобы справляться с исследованиями небольшой выборки с большим количеством объясняющих переменных (в конечном итоге сгруппированных в когерентные блоки), он, по-видимому, эффективно сочетает классический DA с методами сокращения данных.

Ссылки

  1. Катлер А., Катлер Д.Р. и Стивенс Дж.Р. (2009). Древовидные методы , в анализе многомерных данных в исследованиях рака , Li, X. и Xu, R. (eds.), С. 83-101, Springer.
  2. Saeys Y., Inza I. и Larrañaga P. (2007). Обзор методов выбора признаков в биоинформатике . Биоинформатика, 23 (19): 2507-2517.
хл
источник
2
+1 Отличный ответ. Я также согласен с рекомендацией карета.
Шейн
12

Важно помнить, что не существует одного алгоритма, который всегда лучше других. Как заявили Wolpert и Macready, «любые два алгоритма эквивалентны, когда их производительность усредняется по всем возможным проблемам». (Подробности смотрите в Википедии .)

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

Поэтому рекомендуется характеризовать ваши данные в соответствии с такими критериями, как:

  • У меня очень большой набор данных или скромный?
  • Высокая размерность?
  • Являются ли переменные числовыми (непрерывными / дискретными) или символическими, или смешанными, и / или могут ли они быть преобразованы при необходимости?
  • Могут ли переменные быть в значительной степени независимыми или весьма зависимыми?
  • Могут ли быть избыточные, шумные или нерелевантные переменные?
  • Хочу ли я иметь возможность проверить сгенерированную модель и попытаться понять ее?

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

Извините, что не могу дать вам простой ответ, но я надеюсь, что это поможет!

Ирландский буфер
источник
2
+1 Люблю цитату. («Любые два алгоритма эквивалентны, когда их производительность усредняется по всем возможным проблемам».)
Асад Эбрахим
8

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

См. Следующий документ JSS для хорошего обсуждения: http://www.jstatsoft.org/v15/i09/

Шейн
источник
@Tal Вот честный (или я так думаю) обзор SVM против RF: всестороннее сравнение случайных лесов и машин опорных векторов для классификации рака на основе микрочипов, j.mp/ab7U8V . Я также предпочитаю , kernlabчтобы e1071.
хл
2
@chl Мне не нравится эта статья, хотя она написана с точки зрения изучения SVM - сделать одно повторение стохастического алгоритма (RF) - это просто мусор; также приложение 2 показывает, насколько плохим может быть применение рабочего процесса SVM к RF. Тем не менее, я согласен, что почти всегда SVM может быть настроен так, чтобы превзойти RF из-за трюка с ядром (которого нет в обычном RF, хотя это не значит, что его вообще не может быть), но с экспоненциально растущим усилием по оптимизации.
@mbq Действительно, это хороший момент.
ЧЛ
3

Как уже упоминалось, случайные леса представляют собой естественное «обновление», и в наши дни SVM обычно рекомендуется использовать.

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

Я нашел эту статью неоценимой, когда впервые использовал SVM (Практическое руководство по поддержке векторной классификации) http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf

В R вы можете использовать пакет e1071 для SVM, он связан со стандартом де-факто (по крайней мере, в свободном программном обеспечении) библиотеки libSVM.

Доктор г
источник
2
Kernlab также использует libsvm для оптимизации, так что нет большой разницы в этом смысле (хотя он гораздо более гибкий).
Шейн