Существует ли идеальный алгоритм машинного обучения?

Я часто, почти каждый день, сталкиваюсь со следующими вопросами:

  • Какой наилучший алгоритм машинного обучения?
  • Как соотносятся алгоритмы машинного обучения и решаемые задачи?
  • Какие наилучшие параметры для алгоритма машинного обучения?

В общем случае вы не знаете и не можете знать ответы на эти вопросы заранее. Вы должны получить их в результате практического исследования.

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

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

Наилучший алгоритм машинного обучения?

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

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

С появлением больших наборов данных возобновился интерес к более простым, масштабируемым и эффективных методам.

Какой же алгоритм самый лучший, какой алгоритм вы всегда должны попробовать применить?

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

Не существует наилучшего алгоритма машинного обучения!

Вы не можете знать априори, какой алгоритм лучше всего подойдет для решения вашей задачи.

Прочитайте предыдущее предложение еще раз. Задумайтесь над ним.

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

Все это – предрассудки, стереотипы мышления. Некоторые из них могут быть полезны, но какие именно?

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

Сопоставление алгоритмов и задач

Существуют общие классы задач, где применяется обучение с учителем, например, классификация и регрессия, и обучение без учителя, например, множественное обучение (manifold learning) и кластеризация.

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

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

Кроме того, вы можете создавать каталоги алгоритмов, способные помочь вам сделать выбор.

Вы можете устроить соревнование алгоритмов при решении определенной задачи и опубликовать результаты. Иногда это называется «конкурс лучшей выпечки» (bake-off) и пользуется популярностью на некоторых конференциях для представления новых алгоритмов.

Различные результаты алгоритма при решении различных задач

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

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

Если алгоритм A побеждает алгоритм B при решении задачи X, то что это говорит вам про эффективность этих алгоритмов применительно к задаче Y? Необходимо выполнить определенную работу, чтобы привести в соответствие задачи X и Y. Имеют ли они одинаковые или подобные свойства (функциональные формы), которые используются алгоритмами? Это тяжелая работа.

У нас нет четкого понимания того, в каких случаях один алгоритм машинного обучения работает лучше, чем другой.

Наилучшие параметры алгоритма?

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

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

В общем случае, алгоритмы машинного обучения со стохастическими элементами – это сложные системы, и изучать их необходимо соответствующим образом. Во-первых, можно описать, какое влияние имеет определенный параметр на систему. Тогда вы можете получить в свое распоряжение некоторые эвристические методы, позволяющие определить, каким образом необходимо сконфигурировать алгоритм, как систему.

Во-вторых, какое влияние будет иметь параметр на результаты, которые еще не известны. Иногда вы можете обобщенно говорить о влиянии параметров на алгоритм, как на систему, и о том, как это можно распространить на классы задач, однако зачастую это невозможно.

Не существует наилучших параметров алгоритма!

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

Вы не можете знать наилучшие параметры алгоритма для решения вашей задачи априори.

  • Вы можете использовать параметры, описанные в основополагающей работе по данной теме.
  • Вы можете использовать параметры, описанные в книге.
  • Вы можете использовать параметры, перечисленные в постах под названием «как я это сделал» на Kaggle.

Хорошие практические правила. Верно? Возможно да, а может и нет.

Подход, основанный на данных

Но нам не нужно впадать в отчаяние. Мы становимся учеными.

У вас есть предубеждения, которые могут помочь при выборе алгоритма и его параметров. Вы считаете, что они могут хорошо послужить вам во многих случаях.

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

Вместо того чтобы выбрать один любимый алгоритм, попробуйте применить 10 или 20 алгоритмов. Удвойте ставки на те, которые оказались лучше по производительности, надежности, скорости или по другим показателям, важным для вас.

Вместо того чтобы выбрать стандартные параметры, поэкспериментируйте с десятками, сотнями или тысячами комбинаций параметров.

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

Подход, основанный на данных, в действии

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

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

Примечание: как вы можете полностью доверять этой системе?

Ваше доверие базируется на том, что вы выбираете параметры тестирования, основываясь на данных, и это дает вам объективную уверенность в надежности выбранной конфигурации. Вы задаете тип метода оценивания (разделение (split), бустинг (boosting), k-кратная перекрестная проверка (k-fold cross validation) и т.д.) и его конфигурацию (величина k и т.д.)

Быстрые, надежные результаты

Если случайны лес – ваш любимый алгоритм, вы могли бы потратить дни или недели, тщетно пытаясь получить максимум от него при решении задачи, для которой он может оказаться совсем неподходящим. Используя методологию, основанную на данных, вы можете выявить (относительно) слабые алгоритмы на ранних этапах.

Необходима дисциплина, чтобы не вернуться к предубеждениям, любимым алгоритмам и конфигурациям. Получение качественных и надежных результатов – это тяжелая работа.

В итоге вы больше не будете обращать внимание на популярность алгоритма, это будет всего лишь еще один метод в вашем тестовом наборе. Вам больше не нужно беспокоиться по поводу того, не упускаете ли вы возможности, не используя алгоритм X или Y или конфигурацию A или B, потому что используете их комбинацию.

Используйте преимущества автоматизации

Подход, основанный на данных, – это задача поиска. Вы можете использовать преимущества автоматизации.

Перед тем, как начать, напишите скрипты, чтобы определить наиболее надежную систему для тестирования — протестируйте 10, 20 или 100 алгоритмов из различных библиотек. Больше не нужны никакие «любимые» алгоритмы или библиотеки.

Граница между разными алгоритмами исчезла. Новая конфигурация параметров – это новый алгоритм. Вы можете написать скрипты, реализующие подбор параметров для каждого алгоритма, чтобы по-настоящему оценить их возможности.

Используйте технологию создания признаков (feature engineering), таким образом каждый «взгляд» на данные будет новой задачей для алгоритмов. В конце объедините ансамбли, чтобы получить комбинацию некоторых или всех результатов (мета-алгоритмы (meta algorithms)).

Я был в этой «кроличьей норе». Это мощный подход, дающий надежные результаты.

Заключение

В этой статье мы рассмотрели распространенные, основанные на эвристике и «лучших практиках», методы выбора алгоритмов и их параметров.

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

  • Не существует наилучшего универсального алгоритма машинного обучения.
  • Не существует наилучших универсальных параметров алгоритма машинного обучения.
  • Алгоритм, эффективный при решении одной задачи, не обязательно будет эффективен при решении другой.

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

Автор: Джейсон Браунли 

Перевод Станислава Петренко

По материалам: Machine Learning Mastering 

Добавить комментарий

Ваш e-mail не будет опубликован.

закрыть

Поделиться

Отправить на почту
закрыть

Вход

закрыть

Регистрация

+ =