Я ищу альтернативу деревьям классификации, которая могла бы дать лучшую предсказательную силу.
Данные, с которыми я имею дело, имеют факторы как для объясняющих, так и для объясненных переменных.
Я помню, что сталкивался со случайными лесами и нейронными сетями в этом контексте, хотя никогда не пробовал их раньше, есть ли другой хороший кандидат для такой задачи моделирования (очевидно, в R)?
r
machine-learning
classification
cart
Таль Галили
источник
источник
Ответы:
Думаю, стоило бы попробовать попробовать 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 с методами сокращения данных.
Ссылки
источник
Важно помнить, что не существует одного алгоритма, который всегда лучше других. Как заявили Wolpert и Macready, «любые два алгоритма эквивалентны, когда их производительность усредняется по всем возможным проблемам». (Подробности смотрите в Википедии .)
Для данного приложения «лучшим», как правило, является тот, который наиболее тесно связан с вашим приложением с точки зрения допущений, которые он делает, типов данных, которые он может обрабатывать, гипотез, которые он может представлять, и так далее.
Поэтому рекомендуется характеризовать ваши данные в соответствии с такими критериями, как:
Ответив на них, вы можете исключить некоторые алгоритмы и определить другие как потенциально релевантные, а затем, возможно, в конечном итоге получить небольшой набор подходящих методов, которые вы разумно выбрали как наиболее полезные.
Извините, что не могу дать вам простой ответ, но я надеюсь, что это поможет!
источник
Для мультиклассовой классификации машины опорных векторов также являются хорошим выбором. Я обычно использую пакет R kernlab для этого.
См. Следующий документ JSS для хорошего обсуждения: http://www.jstatsoft.org/v15/i09/
источник
kernlab
чтобыe1071
.Как уже упоминалось, случайные леса представляют собой естественное «обновление», и в наши дни SVM обычно рекомендуется использовать.
Я хочу добавить, что чаще всего переход на SVM дает очень разочаровывающие результаты. Дело в том, что хотя такие методы, как случайные деревья, почти тривиальны в использовании, SVM немного сложнее.
Я нашел эту статью неоценимой, когда впервые использовал SVM (Практическое руководство по поддержке векторной классификации) http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf
В R вы можете использовать пакет e1071 для SVM, он связан со стандартом де-факто (по крайней мере, в свободном программном обеспечении) библиотеки libSVM.
источник
Стоит взглянуть на наивных байесовских классификаторов . В R вы можете выполнить наивную байесовскую классификацию в пакетах e1071 и klaR .
источник