Random forest (случайный лес). Random forest (случайный лес) Akramov Odilkhon
Скачать 4.34 Mb.
|
Random forest (случайный лес)Akramov OdilkhonПлан работы1. История случайного леса 2. Как работает алгоритм Случайного леса 3. Дерево решений 4. Пример того, почему некоррелированные результаты так хороши 5. Вывод История случайного лесаRandom forest (с англ. — «случайный лес») — алгоритм машинного обучения, предложенный Лео Брейманом и Адель Катлер заключающийся в использовании комитета (ансамбля) решающих деревьев. Алгоритм сочетает в себе две основные идеи: метод бэггинга Бреймана, и метод случайных подпространств предложенный Тин Кам Хо. Алгоритм применяется для задач классификации, регрессии и кластеризации. Основная идея заключается в использовании большого ансамбля решающих деревьев, каждое из которых само по себе даёт очень невысокое качество классификации, но за счёт их большого количества результат получается хорошим. Как работает алгоритм Случайного лесаНиже приведены основные шаги, связанные с выполнением алгоритма случайного леса: Алгоритм состоит из четырех этапов: Создайте случайные выборки из заданного набора данных. Для каждой выборки постройте дерево решений и получите результат предсказания, используя данное дерево. Проведите голосование за каждый полученный прогноз. Выберите предсказание с наибольшим количеством голосов в качестве окончательного результата. Дерево решенийДавайте быстро перейдем к деревьям решений, поскольку они — строительные блоки случайного леса. К счастью, они довольно интуитивны. Готов спорить, что большинство людей использовали дерево решений — сознательно или нет — в какой-то момент своей жизни. Представьте себе, что набор данных состоит из чисел в верхней части рисунка выше. У нас есть две единицы и пять нулей (1 и 0 — это наши классы) и мы хотим разделить классы, используя их признаки. Объекты имеют красный и синий цвета независимо от того, подчеркнуто ли значение. Цвет кажется довольно очевидным признаком для разделения, поскольку все нули, кроме одного, синие. Поэтому мы можем использовать вопрос: “это красный?”, чтобы разделить наш первый узел. Вы можете представить себе узел в дереве как точку, в которой путь разделяется на два: значения, соответствующие критериям, идут вниз по ветке Yes, а не соответствующие критерию идут по ветке No. У ветви No теперь все 0, но ветвь Yes все еще можно разделить. Теперь мы можем использовать вторую функцию и спросить: “это подчеркнуто?” для второго разделения. Две подчёркнутые единицы идут вниз по стороне Yes, а неподчёркнутый 0 идет по правой стороне — и это всё. Наше дерево решений использовало эти два признака, чтобы идеально разделить данные. Пример того, почему некоррелированные результаты так хорошиЗамечательные эффекты некоррелированных моделей – это настолько важная концепция, что я хочу показать вам пример, который поможет ей по-настоящему проникнуться. Представьте, что мы играем в следующую игру: я использую генератор случайных чисел от 0 до 100 для получения числа. Если полученное мной число больше или равно 40, вы выигрываете (так что у вас есть шанс на победу 60%), и я плачу вам немного денег. Если оно ниже 40, я выигрываю, и вы платите мне ту же сумму. Теперь я предлагаю вам следующие варианты. Мы можем сыграть: Игру 1: 100 генераций числа, ставка – $1 Игра 2: 10 – 10 Игра 3: 1 – 100 Какой вариант Вы предпочитаете? Ожидаемая ценность каждой игры одинакова: 1: (0,60 * 1 + 0,40 * -1) * 100 = 20 2: (0,60 * 10 + 0,40 * -10) * 10 = 20 3: 0,60 * 100 + 0,40 * -100 = 20 А что насчет распределений? Давайте визуализируем результаты с помощью моделирования Монте-Карло (мы запустим 10 000 имитаций каждого типа игры; например, мы будем моделировать 10 тысяч раз 100 партий по схеме № 1. Взгляните на таблицу: какую игру Вы бы выбрали? Несмотря на то, что ожидаемые значения одинаковы, распределения результатов сильно различаются: от положительных и узких (синего цвета) до двоичных (розового). Игра 1 (в которой мы играем 100 раз) дает лучший шанс заработать немного денег – из 10 000 симуляций, которые я провел, вы зарабатываете деньги в 97% из них! Для игры 2 (в которой мы играем 10 раз) вы зарабатываете деньги в 63% симуляций, резкое снижение вознаграждения за риск (и резкое увеличение вероятности потерять деньги). И в игре 3, в которую мы играем только один раз, вы, как и ожидалось, зарабатываете деньги на 60% симуляций. ВыводИтак, случайный лес — это алгоритм классификации, состоящий из многих деревьев решений. Он использует бэггинг и случайность признаков при построении каждого отдельного дерева, чтобы попытаться создать некоррелированный лес, прогноз которого точнее, чем у любого отдельного дерева. Что нам нужно, чтобы случайный лес прогнозировал точнее? Признаки, обладающие некоторой предсказательной силой. В конце концов, что посеешь, то и пожнёшь. Деревья леса и, что более важно, их прогнозы должны быть некоррелированными. Или, по крайней мере, они должны слабо коррелировать друг с другом. В то время как сам алгоритм с помощью случайности признаков пытается построить эти слабые корреляции, выбранные нами признаки и гиперпараметры также повлияют на результат. Случайный лес имеет множество применений, таких как механизмы рекомендаций, классификация изображений и отбор признаков. Его можно использовать для классификации добросовестных соискателей кредита, выявления мошенничества и прогнозирования заболеваний. Он лежит в основе алгоритма Борута, который определяет наиболее значимые показатели датасета. |