Алгоритми дерев рішень

pic

Архітектура, застосування та інсайти

У галузі машинного навчання алгоритми рішень дерева є одними з найпопулярніших і найзручніших методів. Дерева рішень забезпечують просту, зрозумілу модель як для задач регресії, так і для задач класифікації завдяки їхній структурі, схожій на дерево. У цій статті будуть розглянуті архітектура дерев рішень, їх використання в класифікації та регресії, а також аналіз їх переваг і недоліків.

Архітектура дерев рішень

pic

Дерево рішень є структурою, схожою на блок-схему, де кожен внутрішній вузол відповідає тесту чи рішенню за атрибутом, кожна гілка — результату рішення, а кожен листовий вузол — фінальному прогнозу чи результату. Структуру можна розділити на три основні компоненти:

  1. Корінний вузол: Початкова точка дерева, де для першого вибору використовується найважливіша ознака.
  2. Вузли рішень: Внутрішні вузли, які створюють гілки, поділяючи набір даних за конкретними критеріями.
  3. Листові вузли: Кінцеві вузли дерева, що представляють очікуване значення в регресії або фінальний вихід чи мітку класу в класифікації.

Для створення дерева рішень необхідно вибрати найкращу ознаку для розбиття даних на кожному вузлі. Залежно від типу проблеми цей вибір здійснюється з урахуванням таких метрик, як зменшення дисперсії, ентропія або нечистота Джіні.

Дерева рішень у регресії

Для завдань регресії дерева рішень прогнозують неперервні значення. В межах отриманих підмножин алгоритм розподіляє набір даних за ознакою, яка зменшує дисперсію цільової змінної. На кожному листовому вузлі прогноз зазвичай є середнім значенням цільових значень у цій підмножині.

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

Реалізація регресії

from sklearn.datasets import fetch_california_housing  
from sklearn.tree import DecisionTreeRegressor  
from sklearn.model_selection import train_test_split  
from sklearn.metrics import mean_squared_error  
import numpy as np  

# Завантаження набору даних  
housing = fetch_california_housing()  
X = housing.data  
y = housing.target  

# Поділ даних на навчальну та тестову вибірки  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  

# Створення і тренування моделі дерева рішень  
regressor = DecisionTreeRegressor(criterion='mse', max_depth=5, random_state=42)  
regressor.fit(X_train, y_train)  

# Прогнозування  
y_pred = regressor.predict(X_test)  

# Оцінка моделі  
mse = mean_squared_error(y_test, y_pred)  
print(f"Середня квадратична помилка: {mse:.2f}")  

# Важливість ознак  
feature_importances = regressor.feature_importances_  
for name, importance in zip(housing.feature_names, feature_importances):  
 print(f"{name}: {importance:.4f}")

Дерева рішень у класифікації

У задачах класифікації дерева рішень надають мітки класів для даних.
Алгоритм вибирає розбиття, яке оптимізує чистоту класів в отриманих підмножинах; якість розбиттів часто оцінюється за допомогою таких метрик, як інформаційний приріст або нечистота Джіні.

Приклад використання: Класифікація електронної пошти як спаму чи не спаму на основі ключових слів, відправника та метаданих.

Реалізація класифікації

from sklearn.datasets import load_iris  
from sklearn.tree import DecisionTreeClassifier  
from sklearn.model_selection import train_test_split  
from sklearn.metrics import accuracy_score  

# Завантаження набору даних  
iris = load_iris()  
X = iris.data  
y = iris.target  

# Поділ даних на навчальну та тестову вибірки  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  

# Створення і тренування моделі дерева рішень  
clf = DecisionTreeClassifier(criterion='gini', max_depth=3, random_state=42)  
clf.fit(X_train, y_train)  

# Прогнозування  
y_pred = clf.predict(X_test)  

# Оцінка моделі  
accuracy = accuracy_score(y_test, y_pred)  
print(f"Точність: {accuracy:.2f}")  

# Візуалізація дерева рішень  
from sklearn.tree import plot_tree  
import matplotlib.pyplot as plt  

plt.figure(figsize=(12, 8))  
plot_tree(clf, feature_names=iris.feature_names, class_names=iris.target_names, filled=True)  
plt.show()

Переваги дерев рішень

pic

  1. Інтерпретованість: Навіть для зацікавлених осіб, які не мають технічних знань, дерева рішень є зрозумілими та легкими для аналізу. Процес прийняття рішень наочно ілюструється структурою дерева.
  2. Непараметрична природа: Вони є гнучкими для різних застосувань, оскільки не роблять жодних припущень щодо розподілу даних.
  3. Важливість ознак: Дерева рішень за замовчуванням надають оцінки важливості ознак, що дає змогу зрозуміти найбільш важливі змінні.
  4. Управління нелінійністю: Вони ефективно моделюють нелінійні зв'язки.
  5. Мінімальна підготовка даних: Для дерев рішень потрібна мінімальна обробка даних, наприклад, масштабування або нормалізація.

Недоліки дерев рішень

  1. Переобучення: Коли дерева рішень стають занадто складними, вони можуть перенавчитися на тренувальних даних. Це часто зменшується за допомогою стратегій, таких як обрізка або встановлення обмежень, таких як максимальна глибина.
  2. Нестабільність: Дерева, чутливі до шуму, можуть суттєво змінюватися через незначні зміни в даних.
  3. Упередженість до домінуючих класів: Без належних технік балансування дерева рішень можуть бути упередженими до більшості класу в незбалансованих наборах даних.
  4. Неоптимальні прогнози: Дерева можуть мати проблеми з неперервними цільовими змінними або плавними межами класів, що може призвести до прогнозів із різкими розривами.

Перекладено з: Decision Tree Algorithms

Leave a Reply

Your email address will not be published. Required fields are marked *