Введение
В этом практическом занятии мы научимся использовать алгоритм регрессии дерева решений для аппроксимации синусоидальной кривой с добавлением шума. Деревья решений будут использоваться для обучения локальных линейных регрессий, приближающих синусоидальную кривую. Мы увидим, что если максимальная глубина дерева установлена слишком высокой, деревья решений учат слишком мелкие детали обучающих данных и учатся на шум, то есть они переобучаются.
Советы по использованию ВМ
После запуска ВМ нажмите в верхнем левом углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импортируем необходимые библиотеки
Мы импортируем необходимые библиотеки и модули, в том числе 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()
Резюме
В этом практическом занятии мы узнали, как использовать алгоритм регрессии дерева решений для подгонки синусоидальной кривой с дополнительными шумными наблюдениями. Мы увидели, что если максимальная глубина дерева установлена слишком высокой, деревья решений учат слишком мелкие детали обучающих данных и учатся на шум, то есть они переобучаются. Мы также узнали, как построить результаты, чтобы визуализировать, как модели подходят к данным.