Mô hình thời lượng chuyến bay: Regularization!
Trong bài trước, bạn đã thêm nhiều biến dự báo vào mô hình dự đoán thời lượng chuyến bay. Mô hình cho kết quả tốt trên dữ liệu kiểm tra, nhưng với quá nhiều hệ số thì rất khó diễn giải.
Trong bài này, bạn sẽ dùng hồi quy Lasso (regularization với phạt L1) để tạo một mô hình gọn hơn. Nhiều hệ số trong mô hình kết quả sẽ được đặt về 0. Điều này có nghĩa là chỉ một phần các biến dự báo thực sự đóng góp vào mô hình. Dù đơn giản hơn, mô hình vẫn cho RMSE tốt trên dữ liệu kiểm tra.
Bạn sẽ dùng một giá trị cụ thể cho độ mạnh regularization. Sau này bạn sẽ học cách tìm giá trị tốt nhất bằng cross validation.
Dữ liệu (giống bài trước) có trong flights, được chia ngẫu nhiên thành flights_train và flights_test.
Có hai tham số cho mô hình này, λ (regParam) và α (elasticNetParam), trong đó α quyết định loại regularization và λ thể hiện độ mạnh regularization.
Bài tập này là một phần của khóa học
Machine Learning với PySpark
Hướng dẫn bài tập
- Khớp một mô hình hồi quy tuyến tính trên dữ liệu huấn luyện. Đặt độ mạnh regularization là 1.
- Tính RMSE trên dữ liệu kiểm tra.
- Xem các hệ số của mô hình.
- Có bao nhiêu hệ số bằng không?
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.
from pyspark.ml.regression import LinearRegression
from pyspark.ml.evaluation import RegressionEvaluator
# Fit Lasso model (λ = 1, α = 1) to training data
regression = ____(____, ____, elasticNetParam=1).____(____)
# Calculate the RMSE on testing data
rmse = ____(____).____(____)
print("The test RMSE is", rmse)
# Look at the model coefficients
coeffs = regression.____
print(coeffs)
# Number of zero coefficients
zero_coeff = sum([____ == ____ for beta in regression.coefficients])
print("Number of coefficients equal to 0:", zero_coeff)