Дерево решений — это контролируемый алгоритм обучения, используемый как для задач классификации, так и для задач регрессии. Проще говоря, он принимает форму дерева с ветвями, представляющими возможные ответы на заданный вопрос. Существуют метрики, используемые для обучения деревьев решений. Одним из них является получение информации
Рассмотрим набор данных с N классами. Энтропию можно рассчитать по следующей формуле:
p_i — вероятность случайного выбора примера в классе i.
Можно определить прирост информации как меру того, сколько информации предоставляет функция о классе. Получение информации помогает определить порядок атрибутов в узлах дерева решений. Главный узел называется родительским узлом, тогда как подузлы называются дочерними узлами. Мы можем использовать прирост информации, чтобы определить, насколько хорошо разделение узлов в дереве решений. Это может помочь определить качество расщепления.Расчет прироста информации поможет лучше понять эту концепцию.
Gain = Eparent - E_{children}
Термин «выигрыш» означает прирост информации. Eparent - это энтропия родительского узла, а E_{children} - средняя энтропия дочерних узлов. Используем пример, чтобы визуализировать получение информации и ее расчет. Чем больше удалено энтропии, тем больше прирост информации. Чем выше прирост информации, тем лучше разделение.
В качестве родительского (корневого) узла следует выбрать атрибут с наибольшим информационным приростом из набора. На изображении ниже это атрибут A.
Создавайте дочерние узлы для каждого значения атрибута A, следуя тому же принципу. Повторяйте итеративно, пока не закончите построение всего дерева.
========================
Чем больше удалено энтропии, тем больше прирост информации. Чем выше прирост информации, тем лучше разделение.
========================
Цель сейчас - визуализировать дерево решений на простом примере Python. Для деревьев большей сложности вы должны ожидать появления большего количества параметров. Однако, поскольку строится максимально простое дерево решений, используются именно эти два параметра.Максимальная глубина. Каждое дерево решений имеет максимально допустимое количество уровней. max_depth представляет это число. min_samples_leaf - минимальное количество выборок, которое может храниться в конечном узле.
(.env) boris@boris-All-Series:~/INFOGAIN$ cat infoTreeGain.py
from sklearn.datasets import load_iris
from sklearn import tree
from matplotlib import pyplot as plt
iris = load_iris()
X = iris.data
y = iris.target
#build decision tree
clf = tree.DecisionTreeClassifier(criterion='entropy', max_depth=4,min_samples_leaf=4)
#fit the tree to iris dataset
clf.fit(X,y)
#plot decision tree
fig, ax = plt.subplots(figsize=(6, 6))
tree.plot_tree(clf,ax=ax,feature_names=['sepal length','sepal width','petal length','petal width'])
plt.show()
No comments:
Post a Comment