Bắt đầu ngayBắt đầu miễn phí

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: ClassificationSupervised 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

Xem khóa học

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ủa track_data_to_model_tbl. Lưu ý rằng names() sẽ không cho bạn kết quả mong muốn.
    • Dùng str_subset() để lọc các cột.
    • Đối số pattern của hàm đó nên là fixed("timbre").
    • Gán kết quả vào feature_colnames.
  • Tạo formula cho mô hình bằng reformulate().
    • Đố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 trong feature_colnames với dấu + để tạo vế phải của formula. Kết quả là công thức year ~ timbre1 + timbre2 + ... + timbre12, xác định mối quan hệ giữa các biến sẽ đưa vào mô hình.
  • Chạy mô hình gradient boosting.
    • Gọi ml_gradient_boosted_trees() với đối số duy nhất là year_formula bạn vừa tạo.
    • Gán kết quả vào gradient_boosted_trees_model.

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
  ___
Chỉnh sửa và Chạy Mã