Глубина дерева градиентный бустинг
max_depth относится к числу листьев каждого дерева (то есть 4), тогда как n_estimators относится к общему количеству деревьев в ансамбле. Как упоминалось ранее, learning_rate гиперпараметр масштабирует вклад каждого дерева. Если вы установите его на низкое значение, вам потребуется больше деревьев в ансамбле, чтобы соответствовать обучающему набору, но общая дисперсия будет ниже.
regressor = GradientBoostingRegressor(
max_depth=2,
n_estimators=3,
learning_rate=1.0
)
regressor.fit(X_train, y_train)
staged_predict() Метод измеряет ошибку проверки на каждом этапе обучения (т. е. с одним деревом, с двумя деревьями . ), чтобы найти оптимальное количество деревьев.
errors = [mean_squared_error(y_test, y_pred) for y_pred in regressor.staged_predict(X_test)]best_n_estimators = np.argmin(errors)
Теперь мы можем построить и подогнать нашу модель, используя оптимальное количество деревьев.
best_regressor = GradientBoostingRegressor(
max_depth=2,
n_estimators=best_n_estimators,
learning_rate=1.0
)
best_regressor.fit(X_train, y_train)
Sklearn предоставляет многочисленные метрики для оценки производительности наших моделей машинного обучения. Что мне показалось особенно полезным, так это то, что они классифицируют каждую метрику в соответствии с проблемной областью, к которой они применимы. Например, точность имеет смысл только в контексте классификации.
Мы используем среднюю абсолютную ошибку, которую можно интерпретировать как среднее расстояние от наших прогнозов и фактических значений.
y_pred = best_regressor.predict(X_test)mean_absolute_error(y_test, y_pred)
Источник