Я кратко рассмотрел введение в дерево решений, и вот мы подошли к теме.

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

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

« Деревья решений просты в построении, использовании и интерпретации».

  • Я предлагаю вам, ребята, хорошо объяснил Джош Стармер

Давайте посмотрим на основные выражения деревьев решений.

  1. Корневой узел: корневой узел является самым первым или родительским узлом. Он представляет собой всю генеральную совокупность или выборку, которая в дальнейшем делится на два или более однородных набора.
  2. внутренний узел: узел в дереве, который имеет один или несколько дочерних узлов, то есть тот, который не является лист.
  3. Конечный / конечный узел: узлы, которые не разделяются, называется конечным или конечным узлом.
  4. Разделение: это процесс разделения узла на два или более подузлов.
  5. Узел принятия решения. Когда подузел разделяется на дополнительные подузлы, он называется узлом принятия решения.
  6. Сокращение. Когда мы уменьшаем размер деревьев решений путем удаления узлов (в противоположность разделению), этот процесс называется сокращением.
  7. Ветвь / поддерево: Подраздел дерева решений называется ветвью или поддеревом.
  8. Родительский и дочерний узлы: узел, который разделен на подузлы, называется родительским узлом подузлов, тогда как подузлы являются дочерними по отношению к родительскому узлу.

Как построить дерево решений: -

  1. ID3 ‹энтропия, получение информации
  2. Индекс Джини
  3. Хи-квадрат
  4. Снижение дисперсии

ID3

ID3 используется для создания дерева решений из набора данных. ID3 является предшественником алгоритма C4.5 и обычно используется в доменах «машинное обучение» и «НЛП». а иногда ID3 использует «энтропию» и «информационную выгоду» для построения дерева решений.

Энтропия

Энтропия - это мера степени неопределенности или случайности в данных. (Или) Система, в которой было больше нарушений. Дерево решений строится сверху вниз от корневого узла и включает разбиение данных на подмножества, которые содержат экземпляры с похожими значениями (однородными). Алгоритм ID3 использует энтропию для вычисления однородности образца.

пример: сравните класс LKG и класс инженеров больше нарушений в классе LKG

Энтропия =

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

Индекс Джини

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

  1. Работает с категориальной целевой переменной «Успех» или «Неудача».
  2. Выполняет только двоичное разбиение
  3. Чем выше значение Джини, тем выше однородность.
  4. CART (Дерево классификации и регрессии) использует метод Джини для создания двоичных разбиений.

Шаги по вычислению Джини для доли

  1. Вычислите коэффициент Джини для подузлов, используя формулу суммы квадрата вероятности успеха и неудачи (p² + q²).
  2. Рассчитайте коэффициент Джини для разделения, используя взвешенный показатель Джини для каждого узла этого разделения.

Хи-квадрат

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

  1. Работает с категориальной целевой переменной «Успех» или «Неудача».
  2. Он может выполнять два и более шпагата.
  3. Чем выше значение хи-квадрат, тем выше статистическая значимость различий между подузлом и родительским узлом.
  4. Хи-квадрат каждого узла рассчитывается по формуле,
  5. Хи-квадрат = ((Фактическое - Ожидаемое) ² / Ожидаемое) ¹ / 2
  6. Он генерирует дерево под названием CHAID (автоматический детектор взаимодействия хи-квадрат).

Сокращение дисперсии

Снижение дисперсии - это алгоритм, используемый для непрерывных целевых переменных (задачи регрессии). Этот алгоритм использует стандартную формулу дисперсии для выбора наилучшего разделения. Разделение с более низкой дисперсией выбирается в качестве критерия для разделения генеральной совокупности:

Полоса над X представляет собой среднее значение, X - фактическое значение, а n - количество значений.

Шаги по вычислению отклонения:

  1. Рассчитайте дисперсию для каждого узла.
  2. Рассчитайте дисперсию для каждого разделения как средневзвешенное значение дисперсии каждого узла.

Когда прекратить разделение?

Вы можете спросить когда прекратить выращивать дерево? Поскольку проблема обычно имеет большой набор функций, она приводит к большому количеству разбиений, что, в свою очередь, дает огромные дерево. Такие деревья сложны и могут привести к переобучению. Итак, нам нужно знать, когда остановиться? Один из способов сделать это - установить минимальное количество обучающих входов для использования на каждом листе. Например, мы можем использовать минимум 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 Scikit-Learn для использования деревьев решений для задач классификации. Хотя сам по себе алгоритм довольно простой, реализация деревьев решений с помощью Scikit-Learn еще проще.

Ниже



Спасибо за прочтение. :)
И, если бы это было хорошее прочтение. Наслаждайтесь!

И не забывай хлопать.

Редактор: Мадан Марам

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