Содержание:
1. Что такое дерево решений
2. Графическое представление дерева решений
3. Терминология в дереве решений
4. Алгоритм ТЕЛЕГИ
5. Индекс Джини
6. Энтропия
7. Получение информации
8. Снижение дисперсии
9. Пример классификации
10. Обрезка
11. Регрессор дерева решений
12. Как работает регрессор дерева решений
13. Пример в регрессии
14. Код
Что такое дерево решений:
Это контролируемый алгоритм машинного обучения, поэтому его можно использовать в задачах классификации и регрессии. Как следует из названия, «Дерево решений» имеет ряд узлов, включая корневой узел, конечный узел, ветви и внутренние узлы. Дерево решений широко используется в машинном обучении для решения различных проблем, и это основной алгоритм, который используется в методах ансамбля (случайный лес, градиентное усиление, XG Boost, Ada Boost…). Это означает, что если вы изучите это, вы изучите основы машинного обучения из-за его использования в нескольких алгоритмах. Кроме того, лучшее в дереве решений то, что оно обеспечивает графическое представление разбиения дерева решений после построения модели.
Графическое представление дерева решений:
В деревьях решений используется важная и полезная терминология.
1. Корневой узел:
Корень — это просто узел, как и другие, но он используется для представления всего дерева. Это начальный узел дерева, как вы можете видеть в дереве выше, в котором есть «Я голоден?» как корневой узел. Итак, узел, находящийся в начале дерева решений, от этого узла популяция начинает делиться по различным признакам.
2. Конечный узел/конечный узел:
Этот узел полностью противоположен корневому узлу, потому что это последний узел в дереве решений, где дерево заканчивается. Он не имеет дополнительных узлов и не разделен на дополнительные узлы. Следовательно, узлы, дальнейшее разделение которых невозможно, называются листовыми узлами или конечными узлами.
3. Разделение:
Это не узел, но он играет жизненно важную роль в построении дерева решений, потому что это то, что говорит нам, в каком состоянии мы должны разделить данные в каком направлении. Разделение используется для разделения корня/подузла на разные части при некоторых условиях.
4. Ветвь/поддерево:
Он формируется путем разделения дерева/узла. Ветвь, поскольку название предполагает, что это часть любого узла, который может быть корневым узлом или может быть любым поддеревом. У него есть дополнительные ветви, которые недоступны, а также это ветвь дерева/узла. Следовательно, так же, как небольшая часть графа называется подграфом, так и подраздел этого дерева решений называется поддеревом.
5. Сокращение:
Это важная часть дерева решений, потому что она используется для вырезания из дерева нежелательных узлов, которые могут быть причиной переобучения. Обрезка имеет еще два типа: пост-обрезка и предварительная обрезка.
6. Родительский узел:
Родительский узел аналогичен корневому узлу. Он имеет некоторые свойства, которые далее делятся. Родительский узел является базовым узлом любого дерева решений.
7. Дочерний узел:
Дочерний узел является подузлом родительского узла, он использует некоторые свойства своего родительского узла и создает новый узел. Ребенок может быть еще одним родителем и иметь дочерние узлы.
Алгоритм CART:
В деревьях решений используется алгоритм CART (дерево классификации и регрессии), поскольку его можно использовать для непрерывных и дискретных наборов данных. Этот алгоритм представляет собой тип проблемы классификации, который используется для построения дерева решений на основе примеси Джини или энтропии. Точно так же, если данные находятся в непрерывном формате и в то время требуется регрессия, для решения этой проблемы используется сокращение дисперсии. Это базовый алгоритм, но вариант использования этого алгоритма велик в машинном обучении, например, в деревьях решений, методах ансамбля и многом другом.
CART — это зонтик, который имеет два разных типа вариантов использования:
1. Проблема классификации: когда данные находятся в форме классификации, как бинарная классификация, так и мультиклассификация, в то время дерево решений использует индекс Джини для решения такого рода проблем.
2. Проблема регрессии: когда данные непрерывны в это время, CART использует сокращение дисперсии, чтобы разделить дерево и сделать прогноз.
Индекс Джини:
Индекс Джини играет важную роль в алгоритме CART и в разбиении дерева решений, поскольку он используется для измерения примесей в данных при построении дерева решений. Кроме того, чем больше значение индекса, тем выше будет неравенство. Таким образом, индекс Джини отвечает за разделение дерева решений на две половины в зависимости от значения Джини каждого значения. Например, если индекс Джини пятого значения данных выше, чем Джини остальных, то корневым узлом будет пятое значение. Далее она будет разделена на ту же технику для решения задачи.
Энтропия:
Энтропия работает так же, как индекс Джини в алгоритме CART, и также используется для разделения дерева на две разные половины путем вычисления примесей в данных. Энтропия — это метрика теории информации, которая измеряет примесь или неопределенность в группе наблюдений. Он определяет, как дерево решений выбирает разделение данных. Изображение ниже дает лучшее описание чистоты набора.
Формула энтропии:
E=−∑i=1N пи log2 пи
or
E=-(prlog2pr+pplog2pp+pylog2py)
Получение информации:
Прирост информации — это уменьшение энтропии после разделения набора данных на основе атрибута. Построение дерева решений сводится к поиску атрибута, дающего наибольший информационный прирост. После нахождения индекса энтропии или Джини следующим шагом является поиск информации, полученной для обработки данных и выбора наилучшего узла для корня и дальнейшего разделения в дереве решений.
Формула:
Усиление = Родитель-Дети
Уменьшение дисперсии:
Это алгоритм, используемый для непрерывных целевых переменных (задачи регрессии). Разделение с более низкой дисперсией выбирается в качестве критерия для разделения совокупности. Он использует алгоритм CART, чтобы найти лучший узел для разделения данных и решения проблемы с более высокой точностью.
Формула:
Во-первых, нам нужно найти дисперсию, прежде чем найти уменьшение дисперсии.
Дисперсия=1/n ∑ni=1 (yi -ŷ)2
Теперь найдите уменьшение дисперсии
Уменьшение дисперсии = Var(Root)- ∑ Wi Var(дочерний)
Пример:
В приведенной выше таблице, как видно, есть 5 различных параметров. Воспроизведение является зависимой функцией, а остальные независимы. Первые 4 скажут Малышу играть или нет на основе различных ценностей.
Шаг 1: На этом шаге мы должны выбрать лучший корневой узел и сделать идеальное разделение дочерних/подузлов. Для этого нам нужно найти энтропию, чтобы найти примесь в данных. Применим формулу, приведенную ниже:
Энтропия(ы)=-p(да) log2 p(да)-p(нет) log2 p(нет)
Здесь s — это общее пространство выборки, а p (да) и p (нет) — вероятность того, что произойдет «да» и «нет».
Давайте узнаем энтропию, поэтому сначала есть 9 да и 5 нет из 14 общих значений. Так,
E(s)=-(9/14) log2 (9/14) — (5/14) log2 (5/14)
E(s)=0.94
Теперь выберите из Outlook:
Найдите энтропию для всех подфункций Outlook,
E(прогноз=солнечно) =-(2/5) log2 (2/5) — (3/5) log2 (3/5) =0,971
E(outlook=пасмурно) = — (-1) log2 (1) =0, потому что у нас есть только Да в пасмурно
E(прогноз=дождь) = -(3/5) log2 (3/5) –(2/5) log2 (2/5) = 0,971
Информация из Outlook:
I(прогноз)=5/14(0,971) +4/14(0)+5/14(0,971) = 0,693
Здесь мы взяли 5, потому что у Санни 5 общих значений в наборе данных из 14, умножаем на энтропию Санни и делаем то же самое для всех остальных.
Получение информации для Outlook:
Выигрыш(прогноз) = E(s)-I(прогноз)
=0.94–0.693 = 0.247
Теперь найдите информацию, полученную для остальных функций, с помощью того же процесса, который выглядит следующим образом:
Усиление (ветрено) = 0,048 = информация (ветрено) = 0,892
Коэффициент усиления (температура) = 0,029 = информация (температура) = 0,911
Усиление (влажность) = 0,152 = информация (влажность) = 0,788
Таким образом, ветреная функция будет выбрана из-за наибольшего прироста информации (0,247), который больше, чем у любой другой функции.
Таким образом, дерево будет выглядеть следующим образом:
Сокращение
У сокращения есть два различных типа, которые определены ниже,
Постобрезка:
Процесс обрезки начинается после создания дерева решений. Мы реализуем пост-обрезку, определяя параметры модели дерева решений, такие как максимальная глубина, максимальные функции и т. д.
Это предотвращает переоснащение. Это можно использовать с меньшими наборами данных.
Предварительная обрезка:
Примените max-deep и max-features перед построением дерева решений. Это может быть полезно для больших наборов данных.
Регрессор дерева решений
Как работает регрессор дерева решений:
Регрессия — это все о непрерывных данных, когда наборы данных имеют данные непрерывного типа в зависимых функциях, к которым применяется регрессор дерева решений. Регрессор дерева решений использует уменьшение дисперсии из алгоритма CART для выполнения регрессии. При уменьшении дисперсии сначала определяется дисперсия по следующей формуле:
Дисперсия (корень/потомок)= 1/n ∑ni=1 (y-ŷ)2
Что в дальнейшем используется для расчета уменьшения дисперсии:
Уменьшение дисперсии = дисперсия (корень) - ∑ wi Variace (дочерняя)
Пример:
Во-первых, найдите среднее значение Зарплаты, которая является зависимой характеристикой, и это будет ŷ формулы. (40к+42к+52к+60к+56к)/2 = 50к. Таким образом, среднее значение составляет 50 000 окладов.
Теперь найдите корневой узел, используя уменьшение дисперсии, здесь сначала проверьте уменьшение дисперсии на 2, затем на 2,5 и т. д., и будет выбрано, какой из них будет иметь большее уменьшение дисперсии. Здесь я проверю первые два узла и выберу лучший.
Дисперсия (‹=2) = 1/5[(40 000–50 000)2 + (42 000–50 000)2+(52 000–50 000)2+(60 000–50 000)2+(65 000–50 000)2)]
Здесь используйте 1/5, потому что всего 5 выборок, и разделите каждое значение на среднее значение.
Дисперсия (‹=2) = 60,8 тыс.
Дисперсия (‹=2,5) = 60,к
Теперь отсюда начните находить дисперсию каждого ребенка.
Дисперсия (ребенок 1/=2) = 1/1 (40-50 тыс.)2 = 100 тыс.
Дисперсия (ребенок 2/>2) = 1/4 [(42k-50k)2+(52k-50k)2+(60k-50k)2+(56k-50k)2] = 51K
Уменьшение дисперсии (‹=2) = 60,8k-(1/5(100k) +4/5(51k)) = 0
Теперь для (‹=2,5)
Дисперсия (ребенок 1/ ‹=2,5) = 1/2 [(40k-50k)2 + (42k-50k)2] à 82k
Дисперсия (ребенок 2 / >2,5) = 1/3 [(52k-50k)2+(60k-50k)2+(56k-50k)2] à 46,66k
Снижение дисперсии (‹=2,5) = 51k- (2/5(82k) + 3/5(46,66k)) à 0,304
VR(<=2) < VR(<=2.5)
Вот почему корневой узел на данный момент равен ‹=2,5 и делает дерево решений из ‹=2,5.
Теперь разделите дерево решений дальше, просто выполнив те же шаги.
Код:
df=pd.read_csv('/content/Iris.csv') df.drop(['Id'],axis=1,inplace=True) #Split data and preprocessing: x=df.iloc[:,0:4] y=df.iloc[:,-1:] from sklearn.preprocessing import LabelEncoder le=LabelEncoder() y=le.fit_transform(y) from sklearn.model_selection import train_test_split x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3) #Model Building: from sklearn import tree clf2=tree.DecisionTreeClassifier( criterion='gini',min_samples_leaf=2, max_depth=3) clf2.fit(x_train,y_train) clf2.score(x_test,y_test) plt.figure(figsize=(15,10))