Random Forest — это гибкий и простой в использовании алгоритм машинного обучения, который в большинстве случаев дает отличные результаты даже без настройки гиперпараметров. Это также один из наиболее часто используемых алгоритмов из-за его простоты, и его можно использовать как для задач классификации, так и для задач регрессии. В этом посте вы узнаете, как работает алгоритм случайного леса, и несколько других важных вещей.
содержание:
- Как это работает
- аналогия с реальной жизнью
- важность функции
- Разница между деревом решений и случайным лесом
- Важные гиперпараметры (предсказуемость, скорость)
- плюсы и минусы
- Пример
- Резюме
Как это работает:
Random Forest — это алгоритм обучения с учителем. Как вы уже поняли из его названия, он создает лес и делает его несколько случайным. «Лес», который он строит, представляет собой ансамбль деревьев решений, обученных большую часть времени с использованием «багажного» подхода. Общая идея методов бэггинга заключается в том, что сочетание изученных моделей увеличивает общий результат.
Проще говоря: Random Forest строит несколько деревьев решений и объединяет их вместе для более точных и стабильных прогнозов.
Большим преимуществом случайных лесов является то, что их можно использовать для задач классификации и регрессии, которые составляют большинство современных систем машинного обучения. Я буду обсуждать случайные леса в классификации, потому что классификацию иногда считают краеугольным камнем машинного обучения. Ниже вы можете увидеть, как случайный лес использует два дерева:
Случайные леса имеют почти те же гиперпараметры, что и деревья решений или классификаторы пакетов. К счастью, вам не нужно комбинировать деревья решений с классификаторами пакетов, вы можете просто использовать класс классификаторов случайного леса. Как я уже сказал, с Random Forest вы также можете использовать регрессоры Random Forest для задач регрессии.
Случайные леса добавляют модели дополнительную случайность при посадке деревьев. Вместо поиска наиболее важных функций при разделении узлов он ищет лучшие функции в случайном подмножестве функций. Это приводит к широкому разнообразию, что часто приводит к лучшим моделям.
Поэтому в случайных лесах алгоритм, используемый для разделения узлов, рассматривает только случайное подмножество признаков. Вы даже можете сделать дерево более случайным, используя случайные пороги для каждой функции вместо поиска наилучшего возможного порога (как это делают обычные деревья решений).
Аналогия из реальной жизни:
Представьте себе человека по имени Эндрю, пытающегося решить, куда поехать в отпуск на год. Он спросил тех, кто знал его. Сначала он пошел к другу, который спросил Андрея, где он был раньше и понравилось ли ему. Основываясь на ответе, он даст Андрею несколько советов.
Это типичный подход алгоритма дерева решений. Друзья Эндрюса создали правила, используя ответы Эндрю, чтобы помочь ему решить, что следует рекомендовать Эндрю.
После этого Андрей стал просить все больше и больше друзей дать ему совет, и они снова задавали ему разные вопросы, из которых можно было получить какой-то совет. Затем он выбрал место, которое ему больше всего рекомендовали, что является типичным подходом алгоритма случайного леса.
Важность функции:
Еще одно высокое качество алгоритма случайного леса заключается в том, что легко измерить относительную важность каждого признака для прогноза. Sklearn предоставляет для этого отличный инструмент, который измеряет важность функции, просматривая узлы дерева, которые используют эту функцию, чтобы уменьшить загрязнение всех деревьев в лесу. Он автоматически вычисляет эту оценку для каждой функции после обучения и масштабирует результаты так, чтобы сумма всех значений была равна 1.
Если вы не знаете, как работает дерево решений, если вы не знаете, что такое лист или узел, вот хорошее описание из Википедии: в дереве решений каждый внутренний узел представляет собой «проверку» атрибута (например, решка или орел), каждая ветвь представляет собой результат теста, а каждый конечный узел представляет собой метку класса (решение принимается после вычисления всех атрибутов).
Узлы без детей являются листьями.
Глядя на важность функций, вы можете решить, какие функции удалить, потому что они не вносят достаточного вклада или не вносят вклад в процесс прогнозирования. Это важно, потому что общее правило машинного обучения заключается в том, что чем больше у вас функций, тем больше ваша модель подвержена переоснащению, и наоборот.
Ниже вы можете увидеть таблицу и визуализацию, показывающую важность 13 функций. Я использовал знаменитый набор данных «Титаника» в своем контролируемом проекте классификации. ты сможешьздесьНайдите весь проект.
Различия между деревьями решений и случайными лесами:
Как я уже упоминал, случайный лес — это ансамбль деревьев решений, но есть некоторые отличия.
Если вы загрузите обучающий набор данных с функциями и метками в дерево решений, оно сформулирует набор правил для прогнозирования.
Например, если вы хотите предсказать, нажмет ли человек на онлайн-рекламу, вы можете собрать объявления человека, который нажимал в прошлом, вместе с некоторыми функциями, описывающими его решение. Если вы поместите функции и метки в дерево решений, оно сгенерирует некоторые правила. Затем вы можете предсказать, будут ли нажимать на ваше объявление. Напротив, алгоритм случайного леса случайным образом выбирает наблюдения и признаки для построения нескольких деревьев решений, а затем усредняет результаты.
Еще одно отличие состоит в том, что «глубокие» деревья решений могут страдать от переобучения. Случайные леса предотвращают переоснащение, создавая случайные подмножества функций и используя эти подмножества для построения меньших деревьев. После этого он объединяет поддеревья. Обратите внимание, что это не будет работать каждый раз, а также замедлит вычисления в зависимости от того, сколько деревьев строит случайный лес.
Важные гиперпараметры:
Гиперпараметры в случайных лесах используются для увеличения прогностической способности модели или для ускорения работы модели. Я собираюсь поговорить о гиперпараметрах встроенной функции случайного леса sklearns здесь.
1. Увеличьте предсказательную силу
Во-первых, есть"n_оценщиков"Гиперпараметр — это просто количество деревьев, которые алгоритм строит перед максимальным голосованием или усреднением прогнозов. Как правило, большее количество деревьев повышает производительность и делает прогнозы более стабильными, но также замедляет вычисления.
Еще одним важным гиперпараметром является"max_features", что является максимальным количеством функций, которые Random Forest рассматривает при разделении узлов. Sklearn предлагает несколько вариантовв документацииописывать.
Последний важный гиперпараметр, который мы обсудим с точки зрения скорости, это"мин_выборка_лист". Верный своему названию, он определяет минимальное количество листьев, необходимое для разделения внутреннего узла.
2. Улучшить скорость модели
Должен"n_jobs"Гиперпараметры сообщают движку, сколько процессоров разрешено использовать. Если его значение равно 1, он может использовать только один процессор. Значение «-1» означает отсутствие ограничений.
"случайное_состояние"Сделайте вывод модели воспроизводимым. Модель всегда будет давать одни и те же результаты, если она имеет определенное значение random_state и получает одни и те же гиперпараметры и одни и те же обучающие данные.
Наконец, есть"oob_score"(также известный как выборка oob), это метод перекрестной проверки случайного леса. В этой выборке около трети данных не используется для обучения модели и может использоваться для оценки ее производительности. Эти образцы называются образцами из упаковки. Он очень похож на метод перекрестной проверки с исключением одного, но практически не требует дополнительной вычислительной нагрузки.
плюсы и минусы:
Как я уже упоминал, одним из преимуществ случайного леса является то, что его можно использовать как для задач регрессии, так и для задач классификации, и легко увидеть относительную важность, которую он придает входным функциям.
Random Forest также считается очень удобным и простым в использовании алгоритмом, поскольку его гиперпараметры по умолчанию обычно дают хорошие результаты прогнозирования. Количество гиперпараметров также не так велико, и в них легко разобраться.
Большой проблемой в машинном обучении является переоснащение, но в большинстве случаев это не так просто для классификаторов случайного леса. Это потому, что если в лесу достаточно деревьев, классификатор не будет соответствовать модели.
Основное ограничение случайных лесов заключается в том, что большое количество деревьев решений может замедлить работу алгоритма и быть неэффективным для предсказаний в реальном времени. Как правило, эти алгоритмы быстро обучаются, но медленно делают прогнозы после завершения обучения. Для более точных прогнозов требуется больше деревьев, что приводит к более медленным моделям. В большинстве практических приложений алгоритм случайного леса достаточно быстр, но, безусловно, есть случаи, когда важна производительность во время выполнения и предпочтительны другие методы.
Конечно, случайный лес — это инструмент прогнозного моделирования, а не описательный. Это означает, что если вы ищете описание взаимосвязей в ваших данных, предпочтение отдается другим методам.
Пример:
Алгоритмы случайного леса используются во многих различных областях, таких как банковское дело, фондовый рынок, медицина и электронная коммерция. В банковской сфере, например, он используется для выявления клиентов, которые будут чаще других пользоваться банковскими услугами, и для своевременного погашения их долгов. В этом домене он также используется для обнаружения клиентов-мошенников, которые хотят обмануть банк. В финансах он используется для определения будущего поведения акций. В здравоохранении он используется для определения правильного сочетания компонентов в медицине и для анализа истории болезни пациента для выявления заболевания. Наконец, в электронной коммерции случайные леса используются для определения того, действительно ли продукт нравится покупателю.
Резюме:
Случайный лес — это хороший алгоритм для обучения в начале процесса разработки модели, чтобы увидеть, как он работает, и из-за его простоты сложно построить «плохой» случайный лес. Этот алгоритм также является хорошим выбором, если вам нужно разработать модель за короткий промежуток времени. Самое главное, он обеспечивает действительно хороший индикатор важности, которую он придает вашим функциям.
Случайные леса также трудно превзойти с точки зрения производительности. Конечно, вы всегда можете найти модель, которая работает лучше, например, нейронную сеть, но обычно на ее разработку уходит больше времени. Самое главное, они могут обрабатывать множество различных типов функций, таких как двоичные, категориальные и числовые.
В целом, случайный лес — это (в основном) быстрый, простой и гибкий инструмент, хотя и имеет свои ограничения.
Нажмите на оригинальный английский https://towardsdatascience.com/the-random-forest-algorithm-d457d499ffcd
Для получения дополнительных статей, пожалуйста, посетите: http://www.apexyun.com
Общедоступный номер: Galaxy № 1
Контактный адрес электронной почты: public@space-explore.com
(Пожалуйста, не перепечатывайте без разрешения)