Я кратко рассмотрел введение в дерево решений, и вот мы подошли к теме.
Дерево решений - это метод обучения с учителем, это самый мощный и популярный инструмент для классификации и регрессии. Дерево решений - мощный мысленный инструмент для принятия разумных решений. Вы намечаете возможные результаты и пути.
Дерево решений - это инструмент поддержки принятия решений, который использует структуру, подобную блок-схеме, где каждый «внутренний узел» обозначает тест по «атрибуту», каждая ветвь представляет собой «результат» «теста», и каждый «листовой узел» содержит «метку класса» (выжил (да), не сохранился (нет)).
« Деревья решений просты в построении, использовании и интерпретации».
- Я предлагаю вам, ребята, хорошо объяснил Джош Стармер
Давайте посмотрим на основные выражения деревьев решений.
- Корневой узел: корневой узел является самым первым или родительским узлом. Он представляет собой всю генеральную совокупность или выборку, которая в дальнейшем делится на два или более однородных набора.
- внутренний узел: узел в дереве, который имеет один или несколько дочерних узлов, то есть тот, который не является лист.
- Конечный / конечный узел: узлы, которые не разделяются, называется конечным или конечным узлом.
- Разделение: это процесс разделения узла на два или более подузлов.
- Узел принятия решения. Когда подузел разделяется на дополнительные подузлы, он называется узлом принятия решения.
- Сокращение. Когда мы уменьшаем размер деревьев решений путем удаления узлов (в противоположность разделению), этот процесс называется сокращением.
- Ветвь / поддерево: Подраздел дерева решений называется ветвью или поддеревом.
- Родительский и дочерний узлы: узел, который разделен на подузлы, называется родительским узлом подузлов, тогда как подузлы являются дочерними по отношению к родительскому узлу.
Как построить дерево решений: -
- ID3 ‹энтропия, получение информации
- Индекс Джини
- Хи-квадрат
- Снижение дисперсии
ID3
ID3 используется для создания дерева решений из набора данных. ID3 является предшественником алгоритма C4.5 и обычно используется в доменах «машинное обучение» и «НЛП». а иногда ID3 использует «энтропию» и «информационную выгоду» для построения дерева решений.
Энтропия
Энтропия - это мера степени неопределенности или случайности в данных. (Или) Система, в которой было больше нарушений. Дерево решений строится сверху вниз от корневого узла и включает разбиение данных на подмножества, которые содержат экземпляры с похожими значениями (однородными). Алгоритм ID3 использует энтропию для вычисления однородности образца.
пример: сравните класс LKG и класс инженеров больше нарушений в классе LKG
Энтропия =
Прирост информации:. Прирост информации основан на уменьшении энтропии после разделения набора данных по атрибуту. Построение дерева решений - это поиск атрибута, который возвращает наибольший информационный выигрыш.
Индекс Джини
Индекс Джини говорит, что если мы выбираем два элемента из совокупности случайным образом, то они должны быть одного класса, и вероятность этого равна 1, если совокупность чистая.
- Работает с категориальной целевой переменной «Успех» или «Неудача».
- Выполняет только двоичное разбиение
- Чем выше значение Джини, тем выше однородность.
- CART (Дерево классификации и регрессии) использует метод Джини для создания двоичных разбиений.
Шаги по вычислению Джини для доли
- Вычислите коэффициент Джини для подузлов, используя формулу суммы квадрата вероятности успеха и неудачи (p² + q²).
- Рассчитайте коэффициент Джини для разделения, используя взвешенный показатель Джини для каждого узла этого разделения.
Хи-квадрат
Это алгоритм определения статистической значимости различий между подузлами и родительским узлом. Мы измеряем его суммой квадратов стандартизованных различий между наблюдаемой и ожидаемой частотами целевой переменной.
- Работает с категориальной целевой переменной «Успех» или «Неудача».
- Он может выполнять два и более шпагата.
- Чем выше значение хи-квадрат, тем выше статистическая значимость различий между подузлом и родительским узлом.
- Хи-квадрат каждого узла рассчитывается по формуле,
- Хи-квадрат = ((Фактическое - Ожидаемое) ² / Ожидаемое) ¹ / 2
- Он генерирует дерево под названием CHAID (автоматический детектор взаимодействия хи-квадрат).
Сокращение дисперсии
Снижение дисперсии - это алгоритм, используемый для непрерывных целевых переменных (задачи регрессии). Этот алгоритм использует стандартную формулу дисперсии для выбора наилучшего разделения. Разделение с более низкой дисперсией выбирается в качестве критерия для разделения генеральной совокупности:
Полоса над X представляет собой среднее значение, X - фактическое значение, а n - количество значений.
Шаги по вычислению отклонения:
- Рассчитайте дисперсию для каждого узла.
- Рассчитайте дисперсию для каждого разделения как средневзвешенное значение дисперсии каждого узла.
Когда прекратить разделение?
Вы можете спросить когда прекратить выращивать дерево? Поскольку проблема обычно имеет большой набор функций, она приводит к большому количеству разбиений, что, в свою очередь, дает огромные дерево. Такие деревья сложны и могут привести к переобучению. Итак, нам нужно знать, когда остановиться? Один из способов сделать это - установить минимальное количество обучающих входов для использования на каждом листе. Например, мы можем использовать минимум 10 пассажиров, чтобы принять решение (умерли или выжили), и игнорировать любой лист, вмещающий менее 10 пассажиров. Другой способ - установить максимальную глубину вашей модели. Максимальная глубина - это длина самого длинного пути от корня до листа.
Обрезка
Производительность дерева можно еще больше повысить за счет обрезки. Он включает удаление веток, в которых используются малозначимые функции. Таким образом, мы уменьшаем сложность дерева и, таким образом, увеличиваем его прогнозирующую способность за счет уменьшения переобучения.
Преимущества:-
- прост в использовании и понимании
- может обрабатывать как категориальные, так и числовые данные
- сопротивляться выбросам, поэтому требуется небольшая предварительная обработка данных
Недостатки: -
- склонен к переобучению
- нужно быть осторожным с настройкой параметров
Как избежать переобучения в Dtree: -
- переоснащение - одна из основных проблем для каждой модели машинного обучения.
- чтобы избежать переобучения деревьев решений, мы удаляем ветви, которые делают функции менее важными. это называется обрезкой.
Дерево решений для классификации: -
В этом разделе я предсказываю, выжил бы пассажир на Титанике или нет. с использованием алгоритма дерева решений по коду Python.
Набор данных: набор данных для этой задачи можно скачать по этой ссылке:
Импорт библиотек
Следующий скрипт импортирует необходимые библиотеки:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
Импорт набора данных
Поскольку наш файл имеет формат CSV, мы будем использовать read_csv
метод panda для чтения нашего файла данных CSV. Для этого выполните следующий сценарий:
df = pd.read_csv('titanic_train.csv', index_col='PassengerId')
Анализ данных
Выполните следующую команду, чтобы увидеть количество строк и столбцов в нашем наборе данных:
dataset.shape
В выходных данных будет отображаться «(714,6)», что означает, что в нашем наборе данных 714 записей и 6 атрибутов.
pd.DataFrame(df.head())
Выбор функции
Здесь вам нужно разделить данные столбцы на два типа переменных: зависимые (или целевая переменная) и независимые переменные (или функциональные переменные).
X = df.drop('Survived', axis=1)# here we remove survive column into dataframe y = df['Survived']
Разделение данных
Чтобы понять производительность модели, хорошей стратегией является разделение набора данных на обучающий набор и тестовый набор.
Давайте разделим набор данных с помощью функции train_test_split (). Вам необходимо передать 3 параметра features, target и test_set size.
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 1)
Построение модели дерева решений
Давайте создадим модель дерева решений с помощью Scikit-learn.
from sklearn.tree import DecisionTreeClassifier #Create Decision Tree classifer object clf = DecisionTreeClassifier() clf #Train Decision Tree Classifer clf = clf.fit(X_train,y_train) #Predict the response for test dataset y_pred = clf.predict(X_test) y_pred
Из [34]:
array([1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1])
Оценка модели
Оценим, насколько точно классификатор или модель может предсказать тип сорта.
Точность можно вычислить путем сравнения фактических значений тестовой выборки и прогнозируемых значений.
from sklearn.metrics import accuracy_score accuracy_score(y_test, y_pred)
Из [37]:
0.8268156424581006
- Для задач классификации часто используются следующие метрики: confusion_matrix.
from sklearn.metrics import confusion_matrix from sklearn.metrics import confusion_matrix pd.DataFrame( confusion_matrix(y_test, y_pred), columns=['Predicted Not Survival', 'Predicted Survival'], index=['True Not Survival', 'True Survival'])
Из [55]:
array([[97, 15], [16, 51]])
Параметры дерева решений: -
DecisionTreeClassifier (): это не что иное, как функция классификатора дерева решений для построения модели дерева решений в машинном обучении с использованием Python. Функция DecisionTreeClassifier () выглядит так:
DecisionTreeClassifier (критерий = ‘gini’, random_state = None, max_depth = None, min_samples_leaf = 1)
Вот несколько важных параметров:
- критерий: используется для измерения качества разделения в классификации дерева решений. По умолчанию это «джини»; он также поддерживает «энтропию».
- max_depth: используется для добавления максимальной глубины к дереву решений после того, как дерево развернуто.
- min_samples_leaf: этот параметр используется для добавления минимального количества образцов, которые должны присутствовать на листовом узле.
Ресурсы
Хотите узнать больше о Scikit-Learn и других полезных алгоритмах машинного обучения? Я бы порекомендовал изучить более подробные ресурсы, например онлайн-курс:
- Учебный курс по Python для науки о данных и машинного обучения
- Машинное обучение от А до Я: практические навыки Python и R в науке о данных
- Наука о данных в Python, Pandas, Scikit-learn, Numpy, Matplotlib
Заключение
В этой статье я показал, как можно использовать популярную библиотеку Python Scikit-Learn для использования деревьев решений для задач классификации. Хотя сам по себе алгоритм довольно простой, реализация деревьев решений с помощью Scikit-Learn еще проще.
Ниже
Спасибо за прочтение. :)
И, если бы это было хорошее прочтение. Наслаждайтесь!
И не забывай хлопать.
Редактор: Мадан Марам
Если вы найдете эту статью интересной, не стесняйтесь сказать привет через Linkedin, я всегда буду рад связаться с другими профессионалами в этой области.