Funcții obiectiv (de pierdere) și learner-i de bază

Gradient Boosting Extrem cu XGBoost

Sergey Fogelson

Head of Data Science, TelevisaUnivision

Funcții obiectiv și utilitatea lor

  • Cuantifică abaterea unei predicții față de valoarea reală
  • Măsoară diferența dintre valorile estimate și cele reale pe un set de date
  • Obiectiv: găsirea modelului care minimizează funcția de pierdere
Gradient Boosting Extrem cu XGBoost

Funcții de pierdere comune și XGBoost

  • Nume de funcții de pierdere în xgboost:
    • reg:squarederror - pentru probleme de regresie
    • reg:logistic - pentru clasificare când se dorește doar decizia, nu probabilitatea
    • binary:logistic - când se dorește probabilitatea, nu doar decizia
Gradient Boosting Extrem cu XGBoost

Learner-i de bază și utilitatea lor

  • XGBoost creează un meta-model compus din mai multe modele individuale care combinate produc predicția finală
  • Modele individuale = learner-i de bază
  • Se dorește ca, combinați, learner-ii de bază să producă o predicție finală neliniară
  • Fiecare learner de bază ar trebui să fie specializat pe o altă parte a setului de date
  • Două tipuri de learner-i de bază: arbori și liniari
Gradient Boosting Extrem cu XGBoost

Arbori ca learner-i de bază: API-ul 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)
Gradient Boosting Extrem cu XGBoost

Arbori ca learner-i de bază: API-ul Scikit-learn

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

print("RMSE: %f" % (rmse))
RMSE: 129043.2314
Gradient Boosting Extrem cu XGBoost

Learner de bază liniar: doar API-ul de învățare

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)
Gradient Boosting Extrem cu XGBoost

Learner de bază liniar: doar API-ul de învățare

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

print("RMSE: %f" % (rmse))
RMSE: 124326.24465
Gradient Boosting Extrem cu XGBoost

Să exersăm!

Gradient Boosting Extrem cu XGBoost

Preparing Video For Download...