Рисунок заимствован с сайта coursera.org
Одна из ключевых проблем, с которой исследователь сталкивается при разработке предсказательной модели, заключается в выборе оптимального для конкретного случая статистического метода. За последние несколько десятилетий было разработано огромное множество методов для решения задач классификации и регрессии (см., например, список моделей, реализованных в пакете caret), что, безусловно, существенно затрудняет этот выбор. Часто выбор того или иного метода обусловлен предыдущим опытом и уровнем осведомленности исследователя. Так, в определенных областях может существовать своего рода "традиция" по использованию тех или иных методов для решения конкретного круга задач. В силу естественной ограниченности своей специализации исследовать может также просто не знать о существовании методов, которые являются более подходящими для его ситуации. Можно столкнуться и с такими случаями, когда некий разработчик аналитического программного обеспечения утверждает, что его новый алгоритм "не имеет аналогов", превосходя все другие доступные решения. В этой связи хорошо было бы иметь хотя бы общее представление о том, на какие методы следует обратить особое внимание, т.е. какие из них с высокой вероятностью хорошо сработают в большинстве ситуаций. Наличие подобной информации будет особенно полезным при работе над новыми проектами/данными, когда предыдущий опыт, который мог бы подсказать, с чего стоит начинать, отсутствует.




Здесь сразу стоит подчеркнуть, что идеального метода, который одинаково хорошо покажет себя на любом наборе данных, попросту не существует. Эта идея даже была сформулирована (для методов классификации) и доказана в виде т.н. "No Free Lunch Theorem" (теорема о том, что "бесплатный сыр бывает только в мышеловке"; Wolpert, 1996). Обсуждение этой темы в приложении к регрессионным задачам можно найти также в книге James et al. (2014). Тем не менее попытки ранжирования статистических методов по их эффективности предпринимались неоднократно.

Одна из последних таких работ (Fernandez-Delgado et al., 2014) была опубликована в прошлом году и называлась "Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?" ("Нужны ли нам сотни классификаторов для решения практических проблем классификации?"). В этом обстоятельном исследовании была изучена эффективность работы 179 методов классификации из 17 "семейств" на 121 наборе данных. Несмотря на некоторую критику использованной авторами методологии (см. здесь, здесь и здесь), полученные результаты в целом оказались ожидаемыми. Наибольшая общая верность предсказаний (overall accuracy) и другие показатели эффективности моделей были установлены для следующих четырех семейств методов (перечислены в порядке убывания эффективности):

1. "Случайный лес" (Random Forest)
2. Машины опорных векторов (Support Vector Machines)
4. Бустинговые ансамбли моделей (Boosting Ensembles)

Алгоритм "случайный лес" действительно часто оказывается одним из наиболее оптимальных методов для разработки классификаторов. Тем не менее, как отметил Макс Кун (Max Kuhn, автор пакета caret и известной книги "Applied Predictive Modelling"), несколько удивительным было видеть, что бустинговые методы не обошли "случайный лес". Например, "градиентные бустинговые машины" (Gradient Boosting Machines, GBM) являются одним из наиболее частых методов-победителей в соревнованиях Kaggle (см., например, здесь и здесь).

Хотя приведенный выше список касается моделей-классификаторов, можно ожидать, что перечисленные методы будут также хорошо работать и для задач регрессии (т.е. для предсказания количественного отклика). Тем не менее, если количество предикторов невелико и в них есть "сигнал", не следует забывать, что хорошие результаты можно получить и с использованием более традиционных методов регрессии. Реализация многих из них средствами R рассмотрена в книге Мастицкий, Шитиков (2015). Там же в разделе 7.1 можно найти пример сравнения эффективности целого ряда распространенных методов регрессии. Интересное обсуждение того, что простые методы (на примере классификаторов) при решении практических задач часто превосходят более сложные алгоритмы, можно найти также  в широко цитируемой работе Hand (2006).

Наконец, следует помнить о том, что любой статистический метод будет хорош настолько, насколько качественными являются входные данные для обучения модели ("garbage in - garbage out!"). Без затраты усилий на подготовку обучающей выборки (фильтрация, трансформация, удаление пропущенных значений, создание производных предикторов и т.д.) и понимания моделируемого процесса чудес не случится.

Следующие сообщения будут посвящены описанию перечисленных выше высоко эффективных методов машинного обучения (с упором на задачи классификации) и их реализацию средствами пакета caret. Подписывайтесь на рассылку новостей, чтобы ничего не пропустить!


6 Комментарии

Olga написал(а)…
Интересная статья, спасибо!
Вообще, это обилие моделей и простота их реализации в R отчасти и создает предпосылки для невнимательного отношения к входным данным. Потому что когда у тебя одна регрессия, и качество получается не очень, то волей не волей обратишь взор на сам массив данных ) А когда есть 100 методов, то можно пробовать их сначала перебрать )
Unknown написал(а)…
Поддерживаю Ольгу, статья отличная!
Однако, Ольга прочитал ваш комментарий и вспомнил хорошую пословицу "Много знани, умений не дают". Хочу сказать, что в реальной работе, когда любая работа ограничена по времени и по финансам особо перебирать методы нет возможности. Я думаю это проблема образования, фундаментального и комплексного. Любой исследователь обязан понимать суть и соль каждого метода, а следовательно осознанно их применять к каждой ситуации.
Предвижу ваши или кого-то другого возражения на предмет а зачем всё заучивать, когда есть справочник и в любой момент можно поднять и почитать. Но Здесь именно важно помнить их все! Потому что если они будут в памяти, то ими можно будет воспользоваться даже когда под рукой нет ничего! На мой взгляд пррблему можно первернуть "не у людей есть проблемы с методами анализа, а у методов анализа есть проблемы с людьми"
Olga написал(а)…
Согласна с вами. Я скорее имела ввиду, что разнообразие методов может ввести в заблуждение: дескать, если есть так много подходов, то зачем работать над входными данными и думать о них. В итоге можем получить бездумное засовывание массива данных во все известные методы.
Sergey Mastitsky написал(а)…
Ольга, Дмитрий, спасибо за комментарии!
Возможно, вам будут интересны также ранее опбуликованные сообщения по этой теме, список которых можно найти в конце этой статьи: http://r-analytics.blogspot.co.uk/2012/07/blog-post_20.html
Edward написал(а)…
Сергей, спасибо за статью!
У меня на одном наборе данных бустинг дал акьюраси процента на 3 больше, чем рандом форест, хотя часто для клиента при наших наборах данных это не имеет особого практического значения)))
Unknown написал(а)…
Сергей, спасибо за статьи. Я Вас читаю и перечитываю, так что пишите)
Новые Старые