Hàm mục tiêu (hàm loss) và bộ học cơ sở

Gradient Boosting Cực Mạnh với XGBoost

Sergey Fogelson

Head of Data Science, TelevisaUnivision

Hàm mục tiêu và lý do sử dụng

  • Định lượng mức chệch của dự đoán so với kết quả thực tế
  • Đo chênh lệch giữa giá trị ước lượng và giá trị thật trên một tập dữ liệu
  • Mục tiêu: Tìm mô hình làm giá trị hàm loss nhỏ nhất
Gradient Boosting Cực Mạnh với XGBoost

Các hàm loss phổ biến và XGBoost

  • Tên các hàm loss trong xgboost:
    • reg:squarederror - dùng cho bài toán hồi quy
    • reg:logistic - dùng cho phân loại khi bạn chỉ cần quyết định, không cần xác suất
    • binary:logistic - dùng khi bạn muốn xác suất thay vì chỉ quyết định
Gradient Boosting Cực Mạnh với XGBoost

Bộ học cơ sở và vì sao cần chúng

  • XGBoost tạo một meta-model gồm nhiều mô hình thành phần kết hợp để cho ra dự đoán cuối
  • Mô hình thành phần = bộ học cơ sở (base learner)
  • Muốn bộ học cơ sở khi kết hợp tạo dự đoán cuối phi tuyến
  • Mỗi bộ học cơ sở nên giỏi phân biệt hoặc dự đoán các phần khác nhau của tập dữ liệu
  • Hai loại bộ học cơ sở: cây và tuyến tính
Gradient Boosting Cực Mạnh với XGBoost

Ví dụ bộ học cơ sở dạng cây: 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)
Gradient Boosting Cực Mạnh với XGBoost

Ví dụ bộ học cơ sở dạng cây: API Scikit-learn

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

print("RMSE: %f" % (rmse))
RMSE: 129043.2314
Gradient Boosting Cực Mạnh với XGBoost

Ví dụ bộ học cơ sở tuyến tính: chỉ dùng 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)
Gradient Boosting Cực Mạnh với XGBoost

Ví dụ bộ học cơ sở tuyến tính: chỉ dùng learning API

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

print("RMSE: %f" % (rmse))
RMSE: 124326.24465
Gradient Boosting Cực Mạnh với XGBoost

Bắt tay vào làm thôi!

Gradient Boosting Cực Mạnh với XGBoost

Preparing Video For Download...