Функції втрат (objective) та базові алгоритми

Екстремальний градієнтний бустинг з XGBoost

Sergey Fogelson

Head of Data Science, TelevisaUnivision

Функції мети та навіщо вони потрібні

  • Вимірює, наскільки прогноз відрізняється від фактичного результату
  • Оцінює різницю між оціненими та істинними значеннями для певної вибірки даних
  • Мета: знайти модель з мінімальним значенням функції втрат
Екстремальний градієнтний бустинг з XGBoost

Поширені функції втрат і XGBoost

  • Назви функцій втрат у xgboost:
    • reg:squarederror — використовуйте для задач регресії
    • reg:logistic — використовуйте для класифікації, коли потрібне лише рішення, а не ймовірність
    • binary:logistic — використовуйте, коли потрібна ймовірність, а не лише рішення
Екстремальний градієнтний бустинг з XGBoost

Базові алгоритми та навіщо вони потрібні

  • XGBoost створює метамодель з багатьох окремих моделей, що разом дають фінальний прогноз
  • Окремі моделі = базові алгоритми
  • Потрібні базові алгоритми, які разом дають нелінійний фінальний прогноз
  • Кожен базовий алгоритм має добре відрізняти або прогнозувати різні частини набору даних
  • Два типи базових алгоритмів: деревні та лінійні
Екстремальний градієнтний бустинг з XGBoost

Приклад дерев як базових алгоритмів: API Scikit-learn

import xgboost as xgb
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

boston_data = pd.read_csv("boston_housing.csv")

X, y = boston_data.iloc[:,:-1],boston_data.iloc[:,-1] X_train, X_test, y_train, y_test= train_test_split(X, y, test_size=0.2, random_state=123)
xg_reg = xgb.XGBRegressor(objective='reg:squarederror', n_estimators=10, seed=123) xg_reg.fit(X_train, y_train) preds = xg_reg.predict(X_test)
Екстремальний градієнтний бустинг з XGBoost

Приклад дерев як базових алгоритмів: API Scikit-learn

rmse = np.sqrt(mean_squared_error(y_test,preds))

print("RMSE: %f" % (rmse))
RMSE: 129043.2314
Екстремальний градієнтний бустинг з XGBoost

Приклад лінійних базових алгоритмів: лише learning API

import xgboost as xgb
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

boston_data = pd.read_csv("boston_housing.csv")

X, y = boston_data.iloc[:,:-1],boston_data.iloc[:,-1]

X_train, X_test, y_train, y_test= train_test_split(X, y, test_size=0.2, 
                                                         random_state=123)

DM_train = xgb.DMatrix(data=X_train,label=y_train) DM_test = xgb.DMatrix(data=X_test,label=y_test)
params = {"booster":"gblinear","objective":"reg:squarederror"}
xg_reg = xgb.train(params = params, dtrain=DM_train, num_boost_round=10) preds = xg_reg.predict(DM_test)
Екстремальний градієнтний бустинг з XGBoost

Приклад лінійних базових алгоритмів: лише learning API

rmse = np.sqrt(mean_squared_error(y_test,preds))

print("RMSE: %f" % (rmse))
RMSE: 124326.24465
Екстремальний градієнтний бустинг з XGBoost

До роботи!

Екстремальний градієнтний бустинг з XGBoost

Preparing Video For Download...