Регурессия с помощью бустингового дерева решений

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

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

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

Введение

В этом лабораторном занятии мы будем использовать библиотеку Scikit-Learn на Python для выполнения регрессии с помощью бустингового дерева решений на одномерном синусоидальном наборе данных. Мы сравним производительность одного Регурессора дерева решений с производительностью Регурессора AdaBoost с 300 Регурессорами деревьев решений в качестве базовых обучателей.

Советы по работе с ВМ

После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Ноутбук, чтобы получить доступ к 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") sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/ensemble("Ensemble Methods") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/tree -.-> lab-49057{{"Регурессия с помощью бустингового дерева решений"}} sklearn/ensemble -.-> lab-49057{{"Регурессия с помощью бустингового дерева решений"}} ml/sklearn -.-> lab-49057{{"Регурессия с помощью бустингового дерева решений"}} end

Подготовка данных

Начнем с подготовки виртуальных данных с синусоидальной зависимостью и некоторым гауссовым шумом. Мы используем функцию linspace() из библиотеки Numpy для создания одномерного массива из 100 равномерно распределенных значений между 0 и 6. Затем мы используем атрибут np.newaxis, чтобы преобразовать одномерный массив в двумерный массив формы (100,1). Мы применяем функцию sin() к этому массиву и добавляем второй синусоидальный сигнал, полученный путем умножения массива на 6. Затем мы добавляем некоторый гауссовый шум с средним значением 0 и стандартным отклонением 0,1 с использованием функции normal() из библиотеки Numpy.

import numpy as np

rng = np.random.RandomState(1)
X = np.linspace(0, 6, 100)[:, np.newaxis]
y = np.sin(X).ravel() + np.sin(6 * X).ravel() + rng.normal(0, 0.1, X.shape[0])

Обучение и предсказание с помощью Регурессоров дерева решений и AdaBoost

Теперь мы определяем классификаторы и настраиваем их на основе данных. Первый регрессор определяется как DecisionTreeRegressor с max_depth=4. Второй регрессор определяется как AdaBoostRegressor с DecisionTreeRegressor с max_depth=4 в качестве базового обучателя. Мы создаем AdaBoost Regressor с n_estimators=300 таких базовых обучателей. Затем мы настраиваем оба регрессора на основе данных и делаем предсказания на тех же данных, чтобы увидеть, насколько хорошо они подходят к ним.

from sklearn.ensemble import AdaBoostRegressor
from sklearn.tree import DecisionTreeRegressor

regr_1 = DecisionTreeRegressor(max_depth=4)

regr_2 = AdaBoostRegressor(
    DecisionTreeRegressor(max_depth=4), n_estimators=300, random_state=rng
)

regr_1.fit(X, y)
regr_2.fit(X, y)

y_1 = regr_1.predict(X)
y_2 = regr_2.predict(X)

Построение графиков результатов

Наконец, мы построим графики, показывающие, насколько хорошо наша модель работает с нашими двумя регрессорами: одним деревом решений и AdaBoost. Мы используем функцию scatter() библиотеки Matplotlib для построения точек обучающей выборки и предсказанных значений обоих регрессоров. Мы используем функцию plot() библиотеки Matplotlib для построения графиков предсказанных значений в зависимости от исходных данных для обоих регрессоров. Добавляем легенду на график, чтобы отличить между двумя регрессорами.

import matplotlib.pyplot as plt
import seaborn as sns

colors = sns.color_palette("colorblind")

plt.figure()
plt.scatter(X, y, color=colors[0], label="training samples")
plt.plot(X, y_1, color=colors[1], label="n_estimators=1", linewidth=2)
plt.plot(X, y_2, color=colors[2], label="n_estimators=300", linewidth=2)
plt.xlabel("data")
plt.ylabel("target")
plt.title("Boosted Decision Tree Regression")
plt.legend()
plt.show()

Резюме

В этом лабораторном занятии мы научились выполнять регрессию с помощью бустингового дерева решений на одномерном синусоидальном наборе данных с использованием библиотеки Scikit-Learn для Python. Мы сравнили производительность одного Регурессора дерева решений с производительностью Регурессора AdaBoost с 300 Регурессорами деревьев решений в качестве базовых обучателей. Мы визуализировали производительность обоих регрессоров с использованием Matplotlib.