Хотите стать специалистом по данным? Оформить заказ За пределами машины!
Современные алгоритмы машинного обучения революционизируют нашу повседневную жизнь. Например, большие языковые модели, такие как 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/