Регурессия дерева решений

Machine LearningMachine LearningBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

Советы по использованию ВМ

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

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/tree("Decision Trees") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/tree -.-> lab-49323{{"Регурессия дерева решений"}} ml/sklearn -.-> lab-49323{{"Регурессия дерева решений"}} end

Импортируем необходимые библиотеки

Мы импортируем необходимые библиотеки и модули, в том числе numpy, matplotlib и DecisionTreeRegressor.

import numpy as np
from sklearn.tree import DecisionTreeRegressor
import matplotlib.pyplot as plt

Создаем случайный датасет

Мы создадим случайный датасет с использованием NumPy и добавим к нему некоторый шум.

rng = np.random.RandomState(1)
X = np.sort(5 * rng.rand(80, 1), axis=0)
y = np.sin(X).ravel()
y[::5] += 3 * (0.5 - rng.rand(16))

Обучаем регрессионную модель

Мы обучим регрессионные модели с двумя разными максимальными глубинами: 2 и 5.

regr_1 = DecisionTreeRegressor(max_depth=2)
regr_2 = DecisionTreeRegressor(max_depth=5)
regr_1.fit(X, y)
regr_2.fit(X, y)

Предсказание

Мы будем использовать модели для предсказания значений в диапазоне от 0 до 5.

X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis]
y_1 = regr_1.predict(X_test)
y_2 = regr_2.predict(X_test)

Построим результаты

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

plt.figure()
plt.scatter(X, y, s=20, edgecolor="black", c="darkorange", label="data")
plt.plot(X_test, y_1, color="cornflowerblue", label="max_depth=2", linewidth=2)
plt.plot(X_test, y_2, color="yellowgreen", label="max_depth=5", linewidth=2)
plt.xlabel("data")
plt.ylabel("target")
plt.title("Decision Tree Regression")
plt.legend()
plt.show()

Резюме

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