Trực quan hóa từng cây trong XGBoost
Giờ đây, sau khi bạn đã dùng XGBoost để xây dựng và đánh giá mô hình hồi quy cũng như phân loại, hãy học cách khám phá mô hình bằng trực quan. Ở đây, bạn sẽ trực quan hóa từng cây từ mô hình đã boosting đầy đủ mà XGBoost tạo ra bằng toàn bộ tập dữ liệu nhà ở.
XGBoost có hàm plot_tree() giúp việc trực quan hóa này trở nên dễ dàng. Sau khi bạn huấn luyện một mô hình bằng API học của XGBoost, bạn có thể truyền mô hình đó vào hàm plot_tree() cùng với số lượng cây muốn vẽ bằng đối số num_trees.
Bài tập này là một phần của khóa học
Gradient Boosting Cực Mạnh với XGBoost
Hướng dẫn bài tập
- Tạo một từ điển tham số với
"objective"là"reg:squarederror"và"max_depth"là2. - Huấn luyện mô hình với
10vòng boosting và bộ tham số bạn vừa tạo. Lưu kết quả vàoxg_reg. - Vẽ cây đầu tiên bằng
xgb.plot_tree(). Hàm này nhận hai đối số — mô hình (trong trường hợp này làxg_reg) vànum_trees, được đánh chỉ số từ 0. Vì vậy để vẽ cây đầu tiên, đặtnum_trees=0. - Vẽ cây thứ năm.
- Vẽ cây cuối cùng (thứ mười) theo chiều ngang. Để làm điều này, truyền thêm đối số từ khóa
rankdir="LR".
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Create the DMatrix: housing_dmatrix
housing_dmatrix = xgb.DMatrix(data=X, label=y)
# Create the parameter dictionary: params
params = {"objective":"reg:squarederror", "max_depth":2}
# Train the model: xg_reg
xg_reg = xgb.train(params=params, dtrain=housing_dmatrix, num_boost_round=10)
# Plot the first tree
____
plt.show()
# Plot the fifth tree
____
plt.show()
# Plot the last tree sideways
____
plt.show()