https://gs-ml.blogspot.com/2024/09/gradient-boost-boosting.html
https://www.phind.com/search?cache=ud4cei6pah74jkekibvjrdsx
Оптимизируемые гиперпараметры
В вашем коде вы оптимизируете следующие гиперпараметры Gradient Boosting Regressor:
- n_estimators (количество деревьев)
- max_depth (максимальная глубина дерева)
- learning_rate (скорость обучения)
- min_samples_split (минимальное количество образцов для разделения узла)
- min_samples_leaf (минимальное количество образцов в листе)
Диапазоны гиперпараметров
Вы определяете диапазоны для каждого гиперпараметра следующим образом:
n_estimators_range = range(50, 301, 50)
max_depth_range = range(3, 11, 2)
learning_rate_range = [0.001, 0.01, 0.1, 0.5]
min_samples_split_range = [2, 5, 10, 15]
min_samples_leaf_range = [1, 2, 4]
param_grid = dict(
n_estimators=n_estimators_range,
max_depth=max_depth_range,
learning_rate=learning_rate_range,
min_samples_split=min_samples_split_range,
min_samples_leaf=min_samples_leaf_range
)
Это создает сетку параметров, где каждый гиперпараметр имеет несколько возможных значений.
----------------------------------------------------------------------------
Кроссвалидация
Кроссвалидация выполняется внутри функции evaluate_model, которая вызывается GridSearchCV:
def evaluate_model(params):
model = GradientBoostingRegressor(**params)
return -cross_val_score(model, X_train, y_train, cv=5, scoring='neg_mean_squared_error').mean()
X_trainиy_trainиспользуются для обучения моделиcv=5указывает на использование 5-кратной кроссвалидацииscoring='neg_mean_squared_error'использует отрицательную среднюю квадратичную ошибку как метрику оценки
GridSearchCV автоматически применяет эту функцию для каждой комбинации параметров, оценивая производительность модели и выбирая лучшую комбинацию параметров.
-----------------------------------------------------------------------------
5-кратная кроссвалидация (5-fold cross-validation) - это метод оценки качества модели, который разделяет данные на 5 равных подмножеств (фолдов). Затем модель обучается на 4 из 5 фолдов и оценивается на оставшемся фолде. Этот процесс повторяется 5 раз, используя каждый фолд в качестве тестового набора один раз.
Основные характеристики 5-кратной кроссвалидации:
- Разделение данных: Общий набор данных разделен на 5 равных фолдов.
- Процесс оценки:
- 4 фолда используются для обучения модели
- 1 фолд используется для оценки модели
- Повторение: Процесс повторяется 5 раз, каждый раз с другим фолдом в качестве тестового набора.
- Оценка: Средняя оценка производительности модели получается за все 5 итераций.
Преимущества 5-кратной кроссвалидации:
- Экономит данные по сравнению с leave-one-out cross-validation
- Меньше чувствителен к случайному выбору фолдов по сравнению с leave-one-out
- Хорошо балансирует между переобучением и недообучением
Недостатки:
- Может быть менее точным для очень маленьких наборов данных
- Не учитывает взаимодействия между фолдами
В контексте вашего кода, вы используете 5-кратную кроссвалидацию в функции evaluate_model:
5-кратная кроссвалидация (5-fold cross-validation) - это метод оценки качества модели, который разделяет данные на 5 равных подмножеств (фолдов). Затем модель обучается на 4 из 5 фолдов и оценивается на оставшемся фолде. Этот процесс повторяется 5 раз, используя каждый фолд в качестве тестового набора один раз.
Основные характеристики 5-кратной кроссвалидации:
- Разделение данных: Общий набор данных разделен на 5 равных фолдов.
- Процесс оценки:
- 4 фолда используются для обучения модели
- 1 фолд используется для оценки модели
- Повторение: Процесс повторяется 5 раз, каждый раз с другим фолдом в качестве тестового набора.
- Оценка: Средняя оценка производительности модели получается за все 5 итераций.
Преимущества 5-кратной кроссвалидации:
- Экономит данные по сравнению с leave-one-out cross-validation
- Меньше чувствителен к случайному выбору фолдов по сравнению с leave-one-out
- Хорошо балансирует между переобучением и недообучением
Недостатки:
- Может быть менее точным для очень маленьких наборов данных
- Не учитывает взаимодействия между фолдами
В контексте вашего кода, вы используете 5-кратную кроссвалидацию в функции
evaluate_model:
return -cross_val_score(model, X_train, y_train, cv=5, scoring='neg_mean_squared_error').mean()
Здесь cv=5 указывает на использование 5-кратной кроссвалидации для оценки производительности модели
Комментариев нет:
Отправить комментарий