Помогает ли бэггинг предотвратить переобучение в деревьях решений?

Бэггинг эффективный способ предотвратить переобучение в деревьях решений?

Понимание того, почему деревья решений чрезвычайно склонны к переобучению и потенциальные способы его устранения

Фото от Jan Huber на Unsplash

Введение

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

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

Затем мы познакомимся с одной из ансамблевых техник, а именно, с упаковкой данных (bagging), и посмотрим, можно ли ее использовать для увеличения устойчивости деревьев решений.

Мы рассмотрим следующие аспекты:

  • Создание набора данных для регрессии с использованием библиотеки NumPy.
  • Обучение модели дерева решений с использованием scikit-learn.
  • Понимание того, что означает переобучение, рассматривая производительность той же модели на обучающем наборе и тестовом наборе данных.
  • Обсуждение того, почему переобучение более распространено в непараметрических моделях, таких как деревья решений (и, конечно же, узнаем, что означает термин “непараметрический”) и как его можно предотвратить с помощью регуляризации.
  • Понимание того, что представляет собой упаковка данных (bagging) и как она может потенциально помочь с переобучением.
  • И, наконец, мы реализуем версию дерева решений с упаковкой данных и посмотрим, поможет ли она или нет 🤞

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

Давайте начнем!

Сначала настроим блокнот Python и импортируем необходимые библиотеки.

import pandas as pd
import numpy as np
import plotly.graph_objects as go
from sklearn.tree import DecisionTreeRegressor
from sklearn import tree
from sklearn.model_selection import train_test_split