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

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

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

  1. Корневые узлы — корневой узел, с которого начинается дерево решений. Это узел, присутствующий в начале дерева решений, от которого начинается деление популяции по различным признакам.
  2. Узлы принятия решений. Узлы, которые мы получаем после разделения корневых узлов, называются узлами принятия решений.
  3. Конечные/конечные узлы. Конечные/конечные узлы являются конечным выходным узлом, и после получения конечного узла дерево нельзя разделить дальше.
  4. Поддерево/ветвь — небольшая часть дерева.
  5. Сокращение – это процесс удаления поддерева/ветки.

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

Ваша задача как врача (и специалиста по данным) — создать дерево решений и предсказать, следует ли лечить Боба как пациента с COVID-19 или нет. Чтобы построить дерево, всегда нужен корень. Но как определить корневой узел дерева? для этого нам нужно понять концепцию примеси

примесь

Чтобы понять, что такое нечистота, представьте, что у вас есть три ящика, в каждом из которых по 4 шара. В первом ящике 4 черных шара, во втором ящике 3 черных и 1 белый шар, в последнем ящике 2 черных и 2 белых шара. Предположим, из каждой коробки случайным образом вытащили шар. Сколько информации вам нужно, чтобы точно определить цвет шара?

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

Итак, как мы измеряем примесь? Ну, есть два из многих способов:

  1. Энтропия
  2. Примесь Джини

Энтропия

Энтропия является общей концепцией, используемой в науке, технике и теории информации. Проще говоря, энтропия — это измерение «неожиданности». Давайте посмотрим на наш пример с тремя коробками. Вероятность того, что из ящика 1 будут извлечены черные шары, высока, равна 1, так как все шары черные. Таким образом, сюрприз при извлечении нечерного шара равен нулю, поэтому энтропия первого ящика равна нулю. Таким образом, если образец однороден, то энтропия равна 0, иначе, если образец разделен поровну, энтропия максимальна 1. Таким образом, первый ящик имеет самую низкую энтропию, второй ящик имеет большую энтропию, а третий ящик имеет самую высокую энтропию. Энтропия математически записывается как

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

Он измеряет загрязненность образца. Он имеет значение от 0 до 1 и рассчитывается как:

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

Разделение узлов

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

Для функции Shore Throat у нас есть

Примесь Джини для берегового горла:

Примеси Джини (береговое горло = Да) = 1–(5/8)²–(3/8)²=0,468

Примесь Джини (береговое горло = нет) = 1–(3/5)²–(2/5)²=0,480

Взвешенная сумма примесей по Джини для береговой горловины:

Примеси Джини (береговое горло) = (8/13) * 0,468 + (5/13) * 0,480 = 0,473

Для температуры мы определяем порог 37,5 как порог

Примесь Джини для температуры:

Примесь Джини (температура › 37,5) = 1–(6/8)²–(2/8)²=0,375

Примесь Джини (температура ≤ 37,5) = 1–(2/5)²–(3/5)²=0,480

Взвешенная сумма примесей Джини для температуры равна

Примесь Джини (температура) = (8/13) * 0,375+ (5/13) * 0,480 = 0,415

От кашля у нас есть

Примесь Джини от кашля:

Примесь Джини (кашель = сухой) = 1–(3/6)²–(3/6)²=0,5

Примесь Джини (кашель = мокрота) = 1–(5/7)²–(2/7)²=0,408

Взвешенная сумма примеси Джини для кашля составляет

Примесь Джини (кашель) = (6/13) * 0,5+ (7/13) * 0,408 = 0,450

Окончательный результат:

Примесь Джини (береговое горло) = 0,473

Примесь Джини (температура) = 0,415

Примесь Джини (кашель) = 0,450

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

Теперь давайте сосредоточимся на вычислении функции температуры. Нам нужно найти примесь Джини для горла и кашля для температуры › 37,5

Для короткого горла у нас есть

Примесь Джини для температуры › 37,5 и Shore Throat:

Примеси Джини (температура › 37,5, береговая горловина = да) = 1–(5/6)²–(1/6)²=0,27

Примеси Джини (температура › 37,5, береговая горловина = нет) = 1–(1/2)²–(1/2)²=0,5

Взвешенная сумма примесей по Джини для температуры › 37,5 и шорного канала равна

Примеси Джини (температура › 37,5, береговая горловина) = (6/8) * 0,27 + (2/8) * 0,5 = 0,333

От кашля у нас есть

Примесь Джини для температуры › 37,5 и кашля:

Примесь Джини (температура › 37,5, кашель = сухой) = 1–(3/3)²–(0/3)²=0

Примеси Джини (температура › 37,5, кашель = мокрота) = 1–(3/5)²–(2/5)²=0,48

Взвешенная сумма примеси Джини для кашля составляет

Примесь Джини (температура › 37,5, кашель) = (3/8)*0+ (5/8)*0,408=0,3

Окончательный результат:

Примеси по Джини (Температура › 37,5,Береговое горло) = 0,333

Примесь Джини (Температура › 37,5,Кашель) = 0,30

В результате примесь Джини для температуры › 37,5 и кашля является самой низкой. Таким образом, признак кашля является узлом принятия решения.

Теперь посмотрим таблицу с температурой › 37,5 и сухим кашлем

решение всегда «Да» для Covid-19, когда кашель «сухой». Итак, мы получили листовой узел. теперь дерево решений можно рассматривать как

Этого достаточно, чтобы вы поняли весь процесс измерения информационной примеси для дерева решений. С этого момента мы могли бы продолжить для кашля Shore Throth и Phlegm, а также мы могли бы определить узлы принятия решения для ответвления температуры ниже 37,5 с помощью того же процесса, что описан выше. А пока давайте попробуем реализовать алгоритм дерева решений в Python.

Выполнение

Для реализации на Python мы будем использовать модуль Scikit-Learn с наборами данных iris.

Первое, что мы делаем, это загружаем много модулей Python.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import plot_tree
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.metrics import confusion_matrix
from sklearn.metrics import plot_confusion_matrix
from sklearn.datasets import load_iris

Загрузите набор данных

iris = load_iris()
X, y = iris.data, iris.target

Поезд и тестовый сплит

X_test,X_train,y_test,y_train=train_test_split(X,y,test_size=0.2,random_state=1234)

Экземпляр классификатора дерева решений (вы можете использовать энтропию для измерения примеси, добавив аргумент criterion='entropy', по умолчанию используется примесь Джини

clf = DecisionTreeClassifier()

Затем вы можете обучить классификатор (это процесс построения дерева)

clf.fit(X,y)

Вы можете построить созданные три, используя этот

plot_tree(clf,filled=True,rounded=True,class_names=X.columns,feature_names=y)

Теперь для прогнозирования тестового набора данных

clf.predict(X_test)

Заключение

В этой статье мы узнали:

  1. Структура дерева решений
  2. Понятие примеси и как измерить примесь для процесса расщепления в дереве решений
  3. Реализация классификатора дерева решений в Python.