Хотите стать специалистом по данным? Оформить заказ За пределами машины!

Современные алгоритмы машинного обучения революционизируют нашу повседневную жизнь. Например, большие языковые модели, такие как BERT, лежат в основе поиска Google, а GPT-3 используется во многих продвинутых языковых приложениях.

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

  • контролируемое обучение
  • Неконтролируемое обучение
  • Полуконтролируемое обучение
  • Обучение с подкреплением

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

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

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

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

Деревья решений находят свое применение в прогнозировании дискретных результатов для задач классификации и непрерывных числовых результатов для задач регрессии. Существует множество различных алгоритмов, разработанных за эти годы, таких как CART, C4.5 и ансамбли, такие как random forest и Gradient Boosted Trees.

Анализ различных компонентов дерева решений

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

Прежде чем перейти к шагам алгоритма дерева решений, давайте пройдемся по компонентам дерева решений:

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

Ниже приведено визуальное представление дерева решений и его вышеупомянутых компонентов:

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

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

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

  • Индекс Джини измеряет примесь Джини, чтобы указать вероятность неправильной классификации алгоритмом случайных меток классов.
  • Прирост информации измеряет улучшение энтропии после разделения, чтобы избежать разделения классов прогнозирования 50/50. Энтропия – это математическая мера примесей в данной выборке данных. хаос в дереве решений, на который указывает разделение почти 50/50

Учебное пособие по классификации цветов с помощью алгоритма дерева решений

Имея в виду вышеупомянутые основы, давайте приступим к реализации. Для этой статьи мы реализуем решение Модель древовидной классификации в Python с использованием библиотеки Scikit-learn.

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

  • Атрибуты/признаки в наборе данных: длина чашелистика, ширина чашелистика, длина лепестка, ширина лепестка.
  • Метки прогноза/типы цветов в наборе данных:Setosis, Versicolor, Virginica.

Ниже приведено пошаговое руководство по реализации классификатора дерева решений на Python:

Импорт библиотек

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

import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier

Загрузка набора данных радужной оболочки

Следующий код использует функцию load_iris для загрузки набора данных iris из библиотеки sklearn.dataset в переменную data_set. Напечатайте типы и особенности радужной оболочки в следующих двух строках.

data_set = load_iris()
print('Iris plant classes to predict: ', data_set.target_names)
print('Four features of iris plant: ', data_set.feature_names)

Разделение атрибутов и меток

Следующие строки кода разделяют характеристики и типы цветов и сохраняют их в переменных. Функция shape[0] определяет количество атрибутов, хранящихся в переменной X_att. Общее количество значений атрибутов в нашем наборе данных равно 150.

#Extracting data attributes and labels
X_att = data_set.data
y_label = data_set.target
print('Total examples in the dataset:', X_att.shape[0])

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

data_view=pd.DataFrame({
    'sepal length':X_att[:,0],
    'sepal width':X_att[:,1],
    'petal length':X_att[:,2],
    'petal width':X_att[:,3],
    'species':y_label
})
data_view.head()

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

Следующий код разбивает набор данных на наборы для обучения и тестирования с помощью функции train_test_split. Параметр random_state в этой функции используется для предоставления функции случайного начального значения, чтобы при каждом выполнении выдавать одинаковые результаты для заданного набора данных. test_size указывает размер набора тестов. 0,25 указывает на разделение 25% тестовых данных и 75% обучающих данных.

#Splitting the data set to create train and test sets
X_att_train, X_att_test, y_label_train, y_label_test = train_test_split(X_att, y_label, random_state = 42, test_size = 0.25)

Применение функции классификации дерева решений

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

#Applying decision tree classifier
clf_dt = DecisionTreeClassifier(criterion = 'entropy')
clf_dt.fit(X_att_train, y_label_train)

Расчет точности модели

Следующий фрагмент кода вычисляет и печатает точность модели классификации дерева решений на обучающем и тестовом наборах. Для расчета показателя точности мы используем функцию predict. Точность составила 100 % для обучающей выборки и 94,7 % для тестовой выборки.

print('Training data accuracy: ', accuracy_score(y_true=y_label_train, y_pred=clf_dt.predict(X_att_train)))
print('Test data accuracy: ', accuracy_score(y_true=y_label_test, y_pred=clf_dt.predict(X_att_test)))

Реальные приложения дерева решений

Деревья решений находят свое применение во многих отраслях в процессах принятия решений. Общие применения деревьев решений можно найти в финансовом и маркетинговом секторах. Их можно использовать для:

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

Как можно улучшить деревья решений?

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

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

Вы хотите стать специалистом по данным?

Если вы заинтересованы в том, чтобы стать специалистом по данным, обязательно ознакомьтесь с моим курсом по науке о данных или просто свяжитесь с нами! Я всегда рад помочь

Хотите стать специалистом по данным? Оформить заказ За пределами машины!

Этот пост первоначально был размещен на https://thedatascientist.com/