Regularization và mô hình cơ sở trong XGBoost

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

Sergey Fogelson

Head of Data Science, TelevisaUnivision

Regularization trong XGBoost

  • Regularization là cách kiểm soát độ phức tạp của mô hình
  • Mong muốn: mô hình vừa chính xác vừa càng đơn giản càng tốt
  • Tham số regularization trong XGBoost:
    • gamma - mức giảm loss tối thiểu để cho phép tách nút
    • alpha - regularization l1 trên trọng số lá; giá trị lớn hơn nghĩa là regularization mạnh hơn
    • lambda - regularization l2 trên trọng số lá
Gradient Boosting Cực Mạnh với XGBoost

Ví dụ regularization L1 trong XGBoost

import xgboost as xgb
import pandas as pd
boston_data = pd.read_csv("boston_data.csv")
X,y = boston_data.iloc[:,:-1],boston_data.iloc[:,-1]

boston_dmatrix = xgb.DMatrix(data=X,label=y) params={"objective":"reg:squarederror","max_depth":4}
l1_params = [1,10,100] rmses_l1=[]
for reg in l1_params: params["alpha"] = reg cv_results = xgb.cv(dtrain=boston_dmatrix, params=params,nfold=4, num_boost_round=10,metrics="rmse",as_pandas=True,seed=123) rmses_l1.append(cv_results["test-rmse-mean"].tail(1).values[0])
print("Best rmse as a function of l1:") print(pd.DataFrame(list(zip(l1_params,rmses_l1)), columns=["l1","rmse"]))
Best rmse as a function of l1:
        l1          rmse
    0    1  69572.517742
    1   10  73721.967141
    2  100  82312.312413
Gradient Boosting Cực Mạnh với XGBoost

Mô hình cơ sở trong XGBoost

  • Mô hình cơ sở tuyến tính:
    • Tổng các hạng tuyến tính
    • Mô hình boosted là tổng có trọng số của các mô hình tuyến tính (vì thế vẫn tuyến tính)
    • Ít dùng
  • Mô hình cơ sở dạng cây:
    • Cây quyết định
    • Mô hình boosted là tổng có trọng số của các cây quyết định (phi tuyến)
    • Hầu như chỉ dùng trong XGBoost
Gradient Boosting Cực Mạnh với XGBoost

Tạo DataFrame từ nhiều danh sách có cùng độ dài

  • pd.DataFrame(list(zip(list1,list2)),columns=["list1","list2"]))
  • zip tạo một generator gồm các giá trị song song:
    • zip([1,2,3],["a","b""c"]) = [1,"a"],[2,"b"],[3,"c"]
    • generators cần được khởi tạo đầy đủ trước khi dùng trong DataFrame
  • list() khởi tạo toàn bộ generator và truyền vào DataFrame để chuyển đổi toàn bộ biểu thức
Gradient Boosting Cực Mạnh với XGBoost

Cùng luyện tập nào!

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

Preparing Video For Download...