Закон Моуля основан на наблюдении, согласно которому количество транзисторов в плотной интегральной схеме (ИС) удваивается примерно каждые два года. Спустя много лет эра больших данных наступила в последние годы с привлекательной работой под названием Data Scientist. Хотя до сих пор нет четкого определения того, чем занимаются специалисты по данным, большинство из них каждый день играют с кучей разных моделей. Но какие модели они обычно используют? Вот статистика опроса KDnuggests за 2018/2019 год на основе 833 избирателей.

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

Что такое случайный лес?

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

Что такое дерево решений?

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

В приведенном выше примере дерево решений разделено на несколько функций, пока мы не придем к выводу об определенном животном, например, как в ходе разговора было принято решение, что это животное — лев. Мы назвали синие прямоугольники узлами, а черные линии — ветвями. Для узлов первый — «Корневые узлы», а тот, который завершит ваше решение, — «Конечные узлы/листья». Вопрос, однако, в том, как мы можем убедиться, что наша модель не будет гибкой, поскольку у каждого будут свои собственные стили «дерева», а гибкая модель обычно представляет собой переоснащение. Например, в первом разделении один сначала попытается узнать, живет ли животное в воде, а другой может захотеть узнать, живет ли животное в Северной Америке. Следовательно, структура будет отличаться с очень высокой вероятностью, другими словами, дерево решений будет иметь высокие дисперсии.

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

Gini Impurity и как он измеряет качество разделения?

«Примесь Джини (GI) — это вероятность неправильной классификации случайно выбранного элемента в наборе данных, если он был случайно помечен в соответствии с распределением классов в наборе данных». (Чжоу)

где C — количество классов, а p(i) — вероятность случайного выбора элемента класса i.

Предположим, у нас есть 5 бутылок кокосовой газированной воды и еще 5 бутылок вишневой газированной воды. Перед разделением наш G = p(1) * (1-p(1)) + p(2) * (1-p(2)) = 0,5 * (1–0,5) + 0,5 * (1–0,5) = 0,5. В большинстве случаев мы несовершенно разделяем два класса, у нас есть 4 вишневых газированных воды с левой стороны, 5 кокосовых газированных вод и 1 вишневая газированная вода с правой стороны. Теперь у нас есть G(слева)=0 и G(справа) = 1/6 * (1–1/6) + 5/6 * (1–5/6) = 0,278.

Однако как мы можем измерить качество разделения количественно? Ответ: Джини Гейн! Рассчитывается по ГИ (до сплита) — ГИ (после сплита с весами на каждую ветку). Например, ГИ после разделения с весами в истории с газированной водой составляет (0,4 * 0) + (0,6 * 0,278) = 0,167. Так что прирост Джини = 0,5–0,167 = 0,333, что не очень хорошо, поскольку чем выше коэффициент Джини, тем лучше у нас разделение.

Что такое бэггинг (также известный как агрегация Bootstrap)?

Изменчивость модели в основном состоит из трех частей: ошибки, выборки и того, как были построены деревья, например, деревья решений имеют высокую дисперсию. (объясните) Чтобы уменьшить высокую дисперсию, мы будем использовать мощный метод повторной выборки в статистике, называемый начальной загрузкой. Как правило, мы рассматриваем начальную загрузку, когда у нас недостаточно данных из-за некоторых ограничений времени или денег. Теоретически основная идея состоит в том, что мы случайным образом извлекаем определенные числа из всех наблюдений (возможно, всех признаков, собранных у человека) в нашем исходном наборе данных с многократной заменой, чтобы получить множество соответствующих подмножеств нашего набора данных. Затем мы просто усредняем их, чтобы оценить то, что нам нужно (например, стандартную ошибку). Идея получения информации из нескольких моделей, например, усреднение результатов многих сгенерированных моделей, называется ансамблевым методом. Это может помочь нам уменьшить изменчивость, иногда получать более точные прогнозы и лучшую воспроизводимость.

«Начальная загрузка — это статистическая процедура, которая выполняет повторную выборку одного набора данных для создания множества смоделированных выборок. Этот процесс позволяет вычислять стандартные ошибки, доверительные интервалы и проверять гипотезы» (Форст)

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

Предположим, что каждый результат дерева решений представляет учащегося в школе. В задаче регрессии мы хотим знать рост учеников в школе. Никто не стал бы выбирать рост одного ученика из класса, чтобы представить общий рост учеников в школе. Таким образом, средний рост учеников в школе как-то лучше отражает общий рост учеников в школе. (Иногда то, что мы хотели бы знать, это не цифры высоты.) Школа хотела бы выбрать президента студенческого самоуправления из двух кандидатов, как на президентских выборах в США. В игре побеждает кандидат, набравший большинство голосов.

Насколько крут Random Forest?

  • Обработка основных типов данных: Random Forest может обрабатывать множество различных типов данных, таких как категориальные, двоичные, числовые и т. д. Это экономит много времени на предварительной обработке данных.
  • Решайте проблемы как регрессии, так и классификации. Некоторые алгоритмы машинного обучения можно использовать только в задачах регрессии или классификации, но Random Forest справится и с тем, и с другим.
  • Устойчивость к выбросам: он объединяет выбросы, поэтому нам не нужно беспокоиться о проблемах с выбросами в нашей модели случайного леса.
  • Умеренная дисперсия и низкое смещение: мы говорили о том, что дерево решений имеет чрезвычайно высокую дисперсию и низкое смещение, но после того, как мы применили метод агрегирования начальной загрузки, мы имеем только умеренную дисперсию, но сохраняем низкое смещение.
  • Непараметрический: древовидный метод является непараметрическим, поэтому он не требует, чтобы данные соответствовали определенному распределению.

И… насколько плох Random Forest?

  • Тяжелые вычисления для больших наборов данных: у нас было бы множество деревьев решений и параллельное определение множества разбиений, так что это было бы очень медленно, если наш набор данных достаточно большой, даже если ЦП / ГП работают вместе.
  • Интерпретируемость: может быть трудно интерпретировать эту модель для аудитории без определенного опыта.
  • Манипуляции: это похоже на черный ящик, так что многие разработчики моделей имеют мало контроля над тем, что делает модель.
  • Переобучение: его можно легко переобучить, так что нам придется настраивать параметры (если хотите, ознакомьтесь со статьей о настройке параметров в Python, посвященной науке о данных).

Советы: Улучшение вашей модели Random Forest:

В этом разделе я не буду рассматривать применение кодирования для моделей случайного леса, поскольку многие отличные специалисты в области науки о данных рассказали о приложениях в различных областях с подробным пошаговым кодированием. Тем не менее, я рекомендую вам проверить эти блоги (PYTHON, R) для приложений кодирования. Но в реализации кода вы можете потратить много времени на настройку гиперпараметров. Это похоже на то, как вы должны решить, какой высоты деревья, сколько деревьев вы хотите в лесу и как быстро вы ожидаете, что лес сформируется. Вы не знаете, какая комбинация этих параметров является лучшей (например, самая низкая среднеквадратическая ошибка теста/самая высокая точность/самая низкая ошибка вне пакета/и т. д.), прежде чем мы запустим нашу модель. Как правило, классические параметры в случайном лесу, которые мы хотели бы настроить в Python, — это скорость машинного обучения (learning_rate), количество деревьев в лесу (n_estimator), максимальное количество функций, используемых для разделения узла. (max_feature), максимальное количество уровней в каждом дереве (max_depth), минимальное количество точек данных, размещенных в узле до разделения узла (min_samples_split), минимальное количество точек данных, разрешенных в листовом узле (min_samples_leaf), и метод выборки точки данных (с заменой или без) (бутстрап). Мы сравниваем результаты обучения/валидации/тестирования вместе, чтобы принять решение, какая комбинация является наилучшей для использования в нашей окончательной модели. Обычно мы можем больше сосредоточиться на результатах теста, поскольку производительность модели в новых точках более значительна, чем в двух других. Однако это не означает, что мы принимаем плохие результаты в обучающих и проверочных наборах.

Использованная литература:

https://www.kth.se/social/upload/526eae35f27654034adf94ef/Moore's%20law%20-%2020131028.pdf

Форст, Джим. Введение в начальную загрузку в статистике с примером. Статистика Джима. https://statisticsbyjim.com/hypothesis-testing/bootstrapping/. Дата обращения: 17 июня 2020 г.

https://victorzhou.com/blog/gini-impurity