Gradient boosted trees: xây dựng mô hình
Gradient boosting là một kỹ thuật để cải thiện hiệu năng của các mô hình khác. Ý tưởng là bạn chạy một mô hình yếu nhưng dễ tính toán. Sau đó bạn thay thế các giá trị phản hồi bằng phần dư (residual) từ mô hình đó và khớp một mô hình khác. Bằng cách “cộng” mô hình dự đoán phản hồi ban đầu với mô hình dự đoán phần dư mới, bạn có được một mô hình chính xác hơn. Bạn có thể lặp lại quy trình này nhiều lần: chạy các mô hình mới để dự đoán phần dư của mô hình trước và cộng dồn kết quả. Mỗi vòng lặp, mô hình sẽ ngày càng mạnh hơn.
Để cụ thể hơn, sparklyr sử dụng gradient boosted trees, nghĩa là áp dụng gradient boosting với cây quyết định làm mô hình yếu nhưng dễ tính toán. Chúng có thể dùng cho cả bài toán phân loại (biến phản hồi là phân loại) và hồi quy (biến phản hồi liên tục). Với bài toán hồi quy như bạn sẽ dùng ở đây, thước đo mức độ khớp kém của một điểm chính là phần dư.
Cây quyết định được trình bày chi tiết hơn trong các khóa học Supervised Learning in R: Classification và Supervised Learning in R: Regression. Khóa học thứ hai cũng đề cập đến gradient boosting.
Để chạy mô hình gradient boosted trees trong sparklyr, hãy gọi ml_gradient_boosted_trees(). Cách dùng hàm này đã được thảo luận trong bài tập đầu tiên của chương.
Bài tập này là một phần của khóa học
Nhập môn Spark với sparklyr trong R
Hướng dẫn bài tập
Một kết nối Spark đã được tạo sẵn cho bạn với tên spark_conn. Một tibble gắn với dữ liệu metadata/timbre của track đã được gộp và lọc, lưu trên Spark, đã được định nghĩa sẵn là track_data_to_model_tbl.
- Lấy các cột chứa chuỗi
"timbre"để dùng làm đặc trưng (features).- Dùng
colnames()để lấy tên cột củatrack_data_to_model_tbl. Lưu ý rằngnames()sẽ không cho bạn kết quả mong muốn. - Dùng
str_subset()để lọc các cột. - Đối số
patterncủa hàm đó nên làfixed("timbre"). - Gán kết quả vào
feature_colnames.
- Dùng
- Tạo
formulacho mô hình bằngreformulate().- Đối số
termlabels(các biến đầu vào của công thức) làfeature_colnames. - Đối số
response(đầu ra của công thức) là"year". - Gán kết quả vào
year_formula. - Dùng
reformulate()theo cách này sẽ kết hợp tất cả biến trongfeature_colnamesvới dấu+để tạo vế phải củaformula. Kết quả là công thứcyear ~ timbre1 + timbre2 + ... + timbre12, xác định mối quan hệ giữa các biến sẽ đưa vào mô hình.
- Đối số
- Chạy mô hình gradient boosting.
- Gọi
ml_gradient_boosted_trees()với đối số duy nhất làyear_formulabạn vừa tạo. - Gán kết quả vào
gradient_boosted_trees_model.
- Gọi
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.
# track_data_to_model_tbl has been pre-defined
track_data_to_model_tbl
feature_colnames <- track_data_to_model_tbl %>%
# Get the column names
___ %>%
# Limit to the timbre columns
___(___(___))
feature_colnames
# Create the formula for the model
year_formula <- ___
gradient_boosted_trees_model <- track_data_to_model_tbl %>%
# Run the gradient boosted trees model
___