Узнайте о двух древовидных алгоритмах: дереве решений и случайном лесу.

Дерево решений

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

Что значит непараметрический и параметрический?

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

Непараметрические алгоритмы — это алгоритмы, которые не делают никаких предположений о данных, которые они будут обрабатывать. У нас есть огромное количество данных, и если мы мало о них знаем, мы мало знаем о том, какие функции использовать. Здесь правильнее было бы оперировать непараметрическими алгоритмами. Конечно, это не означает, что данные не имеют параметров. Это означает, что алгоритм работает без предположения.

Структура алгоритма дерева решений выглядит следующим образом.

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

Вы пойдете на пикник? Если да, то с кем ты пойдешь? Мы пытаемся решить, что делать с их вопросами.

Как видно из рисунка, он действует как структура if-else. Солнечно ли для пикника? Часть, где возникает вопрос, называется корневым узлом, а образовавшиеся ветви называются листовым узлом (конечным узлом), самыми нижними точками дерева узлов. Кроме того, «родительский узел» — это разветвленные узлы, «дочерние узлы» — это узлы, не разделенные на ветви, но соединенные с ветвью, а «поддерево» — это часть родителя и дочерних элементов, заключенных в красный круг, который мы видим на дереве. )" называется.

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

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

Некоторые ключевые термины дерева решений определены ниже.

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

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

  • Энтропия:

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

Интуитивно можно сказать, что энтропия должна быть как можно меньше. Как видно на графике выше, при вероятности 0,5 энтропия принимает максимальное значение. Поэтому при расчете Энтропии необходимо начинать делить дерево с признака с наименьшим значением. Итак, мы стремимся всегда иметь 0 или всегда 1, чтобы вероятность была равна 0 или 1, поэтому энтропия равна 0.

  • Получение информации:

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

Где «до» — это набор данных до разделения, K — количество подмножеств, сгенерированных разделением, а (j, после) — подмножество j после разделения.

  • Примесь Джини:

Это мера неравенства, разработанная коэффициентом Джини. В отличие от энтропии, она принимает значение от 0 до 0,5. Цель состоит в том, чтобы свести к минимуму примеси Джини в листьях, насколько это возможно.

Индекс Джини и энтропия являются критериями для расчета прироста информации. Алгоритмы дерева решений используют прирост информации для разделения узла. Узел с более чем одним классом является нечистым, а узел только с одним классом — чистым. Если узел имеет более одного класса, то этот узел имеет беспорядок.

Гиперпараметры:

критерий: {"джини", "энтропия"}, по умолчанию = "джини". Критерии, которые мы будем использовать при расчете чистоты, мы упоминали выше.

разделитель: {"лучший", "случайный"}, по умолчанию = "лучший". Стратегия, в которой мы выбираем разделение в каждом узле.

max_depth : целое, по умолчанию = нет. Максимальная глубина дерева решений. Глубина; Он представляет количество делений от корневого узла до конечного узла. Если выбрано «Нет», узлы разделяются до тех пор, пока листовые узлы не станут полностью чистыми.

min_samples_split : int или float, по умолчанию = 2. Минимальное количество выборок, необходимое для разделения узлов. Например.; Если выбрано 10, узел не разделяется, если в узле меньше 10 выборок.

min_samples_leaf : int или float, по умолчанию = 1. Минимальное количество экземпляров, которые должны быть в конечном узле. Если значение не введено, он продолжает разбивать узлы до тех пор, пока в листовом узле не останется 1 образец.

min_weight_fraction_leaf : с плавающей запятой, по умолчанию = 0,0. Отношение взвешенных выборок к общему количеству выборок.

После объяснения параметров давайте перечислим преимущества и недостатки деревьев решений.

Плюсы:

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

Минусы:

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

Наиболее важной проблемой при использовании алгоритма дерева решений должна быть «подгонка». Алгоритм удобен для запоминания благодаря своей структуре. Узлы достигают листьев путем деления. Если мы не вмешиваемся в гиперпараметры, узлы разбиваются до тех пор, пока не останется одна выборка.
Наш алгоритм, который видит только обучающую выборку в больших данных, может запоминать данные таким образом. Чтобы предотвратить это, применяется метод, который мы называем «обрезкой». Наиболее часто используемые гиперпараметры для обрезки — это max_depth, min_samples_split, min_samples_leaf, max_leaf_nodes и min_impurity_decrease, которые мы объяснили выше.

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

После некоторых действий по разработке функций мы разделили наш набор данных для обучения поезду.

X_train = titanic_df.drop(“Survived”,axis=1)
y_train = titanic_df[“Survived”]
X_train1, X_test1, y_train1, y_test1 = model_selection.train_test_split(X_train, y_train, test_size=0.2,random_state=42)
model_dt = DecisionTreeClassifier()
model_dt.fit(X_train1,y_train1)
parameters = {“criterion”:[‘gini’,’entropy’],
              “max_depth”: range(3,20),
              “min_samples_leaf”:range(3,20)
             }
grid_dt = GridSearchCV(estimator=model_dt,param_grid= parameters,
                       cv=3,return_train_score=True,n_jobs= -1
                       )
grid_dt.fit(X_train1, y_train1)
grid_dt.best_params_
grid_dt.best_score_
0.8202318902244442

Наше дерево и оценки приведены ниже со значениями, которые мы получили из GridSearchCV.

predsdt =grid_dt.best_estimator_.predict(X_test1)
print(classification_report(y_test1,predsdt))
               precision    recall  f1-score   support
           0       0.80      0.90      0.84       105
           1       0.82      0.68      0.74        74
accuracy                               0.80       179
macro avg          0.81      0.79      0.79       179 
weighted avg       0.81      0.80      0.80       179

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

Случайный лес

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

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

Что означает ансамблевый метод?

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

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

Упаковка:

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

Начальная загрузка — это статистическая процедура, которая выполняет повторную выборку одного набора данных для создания множества смоделированных примеров. Этот процесс позволяет вычислять стандартные ошибки, строить доверительные интервалы и выполнять проверку гипотез для многих типов выборочной статистики. Строки выбираются случайным образом из исходного набора данных и сохраняются в наборе данных, называемом начальной загрузкой. Как правило, 1/3 исходного набора данных не представлена ​​в наборе данных начальной загрузки. Данные, которые не представлены в наборе данных Bootstrap, называются «набором данных Out-of-Bag».

Повышение:

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

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

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

Плюсы:

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

Минусы:

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

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

parameters = {"criterion":['gini','entropy'],
              "max_depth": range(1,20),         
              "min_samples_leaf":range(1,20)
             }
grid_rf = GridSearchCV(estimator=model_rf, param_grid= parameters,  
                       cv=3,return_train_score=True,n_jobs= -1
                      )
grid_rf.fit(X_train1,y_train1)
grid_rf.best_score_
0.8174189507026438
predsrf = grid_rf.best_estimator_.predict(X_test1)
print(classification_report(y_test1,predsrf))
                precision    recall  f1-score   support
           0       0.82      0.89      0.85       105 
           1       0.82      0.73      0.77        74
accuracy                               0.82       179 
macro avg          0.82      0.81      0.81       179
weighted avg       0.82      0.82      0.82       179

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

Ссылки:





Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.