Рубрики
Без рубрики

Краткое введение в деревья решений

Введение Дерево решений – это иерархическая структура данных, реализующая раздел … Теги с обучением машины, наукой данных, Python, начинающими.

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

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

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

Дерево – это набор одного или нескольких узлов. Узел 𝑥𝑖, индекс 𝑖 либо пустым или последовательностью одного или нескольких неотрицательных целых чисел, соединяется с другим узлом 𝑥𝑖𝑗 ARC, направленной от 𝑥𝑖 до 𝑥𝑖𝑗.

  1. Корневой узел: Представляет всю популяцию или образец, и это дополнительно делится на два или более однородных множества.

  2. Узел листьев: Этот узел, который не может быть отделен в дальнейшие узлы

  3. Разделение: Разделение корневого узла/поддерева на разные части на основе некоторого состояния

  4. Обручение: Противоположность расщеплению. Удаление нежелательных ветвей от дерева

  5. Филиал/подделка: Субдена дерева решений

  6. Узел родительского и ребенка: Узел, который разделен на подвалки, называется родительским узлом подмазнителей, где суб-узлы являются ребенком родительского узла

Стоимость времени выполнения для построения сбалансированного бинарного дерева:

𝑂 (𝑛𝑠𝑎𝑚𝑝𝑙𝑒𝑠𝑛𝑓𝑒𝑎𝑡𝑢𝑟𝑒𝑠𝑙𝑜𝑔 (𝑛𝑠𝑎𝑚𝑝𝑙𝑒𝑠)))

Индекс Джини

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

Это варьируется от 0 до 1

Он рассчитывается путем вычитания суммы квадрата вероятностей каждого класса из одного

𝐺𝑖𝑛𝑖𝐼𝑛𝑑𝑒𝑥 = 1-σ𝑛𝑖-1 (𝑃𝑖) 2

Информационная прибыль

Энтропия – это измерение примесей или случайности в точках данных

Энтропия рассчитывается между 0 и 1

Энтропия в теории информации Определяет минимальное количество битов, необходимых для кодирования классов экземпляра.

Усиление информации применяется для количественного определения того, какие функции предоставляют максимальную информацию о классификации на основе понятия энтропии, то есть путем количественного определения размера неопределенности, расстройства или примеси, в целом, при этом намерение уменьшить количество энтропии, инициирующей сверху ( Корневой узел) внизу (узелки оставляет)

𝐸𝑛𝑡𝑟𝑜𝑝𝑦 = -σ𝑛𝑖 = 1𝑝𝑖 * 𝑙𝑜𝑔2 (𝑝𝑖)

Уменьшение дисперсии

Сокращение дисперсии – алгоритм, используемый для непрерывных целевых переменных.

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

𝑉𝑎𝑟𝑖𝑎𝑛𝑐𝑒 = σ (𝑋-𝑋¯) 2𝑛

Чи-квадрат

Это алгоритм, чтобы выяснить статистическую значимость между различиями между Sub Nuds и родительским узлом.

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

ID3.

Основной алгоритм для деревьев построения решений называется ID3. Разработанный J. R. Quinlan, этот алгоритм нанимает сверху вниз, жадный поиск через пространство возможных ветвей без возврата. ID3 использует энтропию и прирост информации для создания дерева решений.

C4.5.

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

C4.5 сделал ряд улучшений до ID3. Некоторые из них: обрабатывать как непрерывные, так и дискретные атрибуты – для обработки непрерывных атрибутов, C4.5 создает пороговое значение, а затем расщепляет список в те, чьи значения атрибута – это выше порогового значения, а те, которые меньше или равны.

Обработка данных о тренировках с отсутствующими значениями атрибутов – C4.5 позволяет пометить значения атрибутов, как? для отсутствия. Пропущенные значения атрибутов просто не используются в вычислениях усиления и энтропии. Обработка атрибутов с разными затратами. Обрезка деревьев после создания – C4.5 возвращается через дерево, как только он будет создан, и попытки удалить ветви, которые не помогают, заменяя их с помощью узлов листа.

Корзина

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

Классически этот алгоритм упоминается как «деревья решений», но на некоторых платформах, таких как R, они упоминаются более современной термической тележкой.

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

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

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

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

Сравнение пребывания и постпроизводства, можно сказать, что пребывание быстрее, но постром обычно приводит к более точным деревьям.

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

  • Хорошо работает для большинства проблем.

  • Он может обрабатывать как числовые, так и категорические переменные.

  • Может хорошо работать как с небольшими, так и большими наборами данных.

  • Деревья решений обеспечивают определенную подсказку, какие особенности более полезны для классификации.

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

  • Эта модель переопределяется и довольно легко подставлена.

  • Деревья решений склонны к ошибкам в задачах классификации со многими классами и относительно небольшим количеством примеров тренировок.

  • Дерево решений может быть вычислено дорогостоящим для обучения.

  • Большие деревья сложны для понимания.

Мы используем, пожалуй, самым известным набором данных в литературе распознавания шаблонов. Набор данных содержит 3 класса из 50 экземпляров, где каждый класс относится к типу рациона радуга. Один класс линейно отделен от другого 2; Последние не линейно отделяются друг от друга.

Атрибуты

  • Длина Sepal (в см)
  • Ширина Sepal (в см)
  • Длина лепестки (в см)
  • Ширина лепесток (в CM) класс:
    • Iris Setosa
    • Iris Versicolour
    • Ирис Виржика
    • Визуализация

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

from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

Загрузка набора данных

iris = load_iris(return_X_y = True, as_frame= True)
dataset = iris[0]
target = iris[1]

Построение гистограммы

dataset.hist(edgecolor='black', linewidth=1.2)
fig=plt.gcf()
fig.set_size_inches(12,6)
plt.show()

Создание модели классификации

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

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

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

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

Чтобы смягчить переоборудование, конструкция деревьев заканчивается, когда узлы становятся достаточно чистыми, а именно, подмножество данных не разделено дальше, если 𝐼 <θ𝐼. Здесь θ𝐼 – это параметр сложности. Когда он маленький, дисперсия высока, и дерево растет большим, чтобы точно отразить тренировочный набор, и когда они большие, дисперсия ниже, и меньшее дерево примерно представляет собой набор обучения.

Мы используем Sklearn.tree. Метод принятия решения для принятия решения для библиотеки SKALENN для создания нашего классификации дерева.

Критерий параметров: «Джини» или «энтропия» Splitter: «Лучший» или «случайный» MAX_DEPTH (INT): максимальная глубина дерева. По умолчанию нет, то узлы расширяются, пока все листья не будут чистыми min_samples_split (int): минимальное количество образцов, необходимых для разделения внутреннего узла.

max_depth = 5
min_samples_split = 2 
criterion = "gini"  
splitter = "best" 

from sklearn.tree import DecisionTreeClassifier

X, y = load_iris(return_X_y=True)
clf = DecisionTreeClassifier(
    max_depth=max_depth,
    min_samples_split=min_samples_split,
    criterion=criterion,
    splitter=splitter
)
clf = clf.fit(X,y)
from sklearn import tree
%matplotlib inline
fn=['sepal length (cm)','sepal width (cm)','petal length (cm)','petal width (cm)']
cn=['setosa', 'versicolor', 'virginica']
fig = plt.figure(figsize=(20,15))
_ = tree.plot_tree(clf, 
                   feature_names=fn,  
                   class_names=cn,
                   filled=True)

Строительство регрессионной модели

Регрессионное дерево построено практически так же, как дерево классификации, за исключением того, что примесная мера, которая подходит для классификации, заменяется измерением, подходящей для регрессии.

Мы используем Sklearn.tree. Метод принятия решения для решения для библиотеки Sklearn.

Критерий параметров: «Джини» или «энтропия» Splitter: «Лучший» или «случайный» MAX_DEPTH (INT): максимальная глубина дерева. По умолчанию нет, то узлы расширяются, пока все листья не будут чистыми min_samples_split (int): минимальное количество образцов, необходимых для разделения внутреннего узла.

max_depth = 5
min_samples_split = 2  
criterion = "mse"  
splitter = "best" 

from sklearn.tree import DecisionTreeRegressor

X, y = load_iris(return_X_y=True)
reg = DecisionTreeRegressor(
    max_depth=max_depth,
    min_samples_split=min_samples_split,
    criterion=criterion,
    splitter=splitter
)
reg = reg.fit(X,y)
Visualising the Regression Model
%matplotlib inline
tree.plot_tree(reg, filled = True)
plt.show()

Мы также можем экспортировать дерево в формат Graphviz, используя Export_Graphviz () Отказ

Статьи

Ноутбуки Python

Научно-исследовательские работы

  • Л. Брайман, Дж. Фридман, Р. Ольшен и С. Камень. Классификация и регрессионные деревья. Wadsworth, Belmont, CA, 1984.

Ссылки набора данных

Набор данных IRIS

Оригинал: “https://dev.to/sauravmaheshkar/brief-introduction-to-decision-trees-15dg”