Дерево решений — строительный блок

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

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

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

Случайный лес — это ансамбль дерева решений, который обычно обучается с помощью метода мешков, обычно с параметром max_sample, равным размеру обучающей выборки. Вместо того, чтобы создавать BaggingClassifier и передавать ему DecisionTreeClassifier, вместо этого вы можете использовать класс RandomForestClassifier, который более удобен и оптимизирован для Дерева решений. .

Подобно RandomForestClassifier, существует класс RandomForestRegressor для задачи регрессии.

RandomForestClassifierимеет все гиперпараметры DecisionTreeClassifier (для управления ростом деревьев) и все гиперпараметры BaggingClassifier для управления самим ансамблем. .

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

Реализация случайного леса

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

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

Подготовка данных

Я скачал титанический набор данных с Kaggle и импортировал его с помощью pandas.

Ссылка на набор данных Kaggle Titanic:



Подготовка данных

Удаление бесполезных столбцов

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

Удаление пустых значений

Таким образом, в приведенной ниже функции remove_null_values() мы заменяем нулевые значения средними значениями этих столбцов.

Разделение набора данных

Мы разделили наши данные на обучающий и тестовый наборы данных с данными обучения 80% и тестовыми данными 20%.

Создание конвейера моделей

Здесь мы делаем пайплайн для One-Hot-Encoder и StandardScaler

В случае OneHotEncoder мы закодировали столбец sex и started, из которых мы получили всего 5 столбцов.

В случае StandardScaler мы взяли все 10 столбцов (7 столбцов из набора данных, в котором 2 столбца в кодировщике onehot 7–2=5, из OneHotEncoder мы получили 5 столбцов, поэтому общее количество столбцов у нас равно 5+5= 10)

Мы также использовали нашу RandomForestClassifierмодель с настройками по умолчанию.

Прогноз модели

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

Итак, как мы добились такой точности с помощью автонастройки Random Forest

Дополнительные деревья

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

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

Важность функции

Еще одно замечательное качество случайного леса заключается в том, что они позволяют легко измерить относительную важность каждой функции. Scikit-Learn измеряет важность функции, глядя на то, насколько в среднем узлы дерева, использующие эту функцию, уменьшают количество примесей.

Scikit-Learn автоматически вычисляет эту оценку для каждой функции после обучения, а затем масштабирует результаты так, чтобы сумма всех значений была равна 1.

Вы получите доступ к результату, используя переменную feature_importance_.

Заворачивать

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

  1. Построение блок-схемы вопросов и ответов, ведущих к решению
  2. Мудрость (случайной и разнообразной) толпы

Именно сочетание этих основных идей приводит к мощи модели случайного леса.

Подписывайтесь на меня

Если вы находите идеи, которыми я с вами делюсь, интересными, пожалуйста, не стесняйтесь связаться здесь, на Medium, Twitter, GitHub, LinkedIn или Kaggle.