โมเดลระยะเวลาเที่ยวบิน: Regularization!
ในแบบฝึกหัดก่อนหน้า คุณได้เพิ่ม predictor เข้าไปในโมเดลระยะเวลาเที่ยวบิน โมเดลทำงานได้ดีบนข้อมูลทดสอบ แต่เมื่อมี coefficient จำนวนมาก ก็ยากที่จะตีความผลลัพธ์
ในแบบฝึกหัดนี้จะใช้ Lasso regression (ที่ใช้ L1 penalty ในการ regularize) เพื่อสร้างโมเดลที่กระชับขึ้น coefficient หลายตัวในโมเดลที่ได้จะถูกกำหนดเป็นศูนย์ หมายความว่ามีเพียง predictor บางส่วนเท่านั้นที่ส่งผลต่อโมเดลจริง แม้โมเดลจะเรียบง่ายกว่า แต่ก็ยังให้ค่า RMSE ที่ดีบนข้อมูลทดสอบ
จะใช้ค่าที่กำหนดไว้สำหรับความแข็งแกร่งของ regularization และในภายหลังจะได้เรียนรู้วิธีหาค่าที่เหมาะสมที่สุดด้วย cross validation
ข้อมูล (ชุดเดียวกับแบบฝึกหัดก่อนหน้า) พร้อมใช้งานในชื่อ flights โดยแบ่งแบบสุ่มเป็น flights_train และ flights_test
โมเดลนี้มีพารามิเตอร์สองตัว ได้แก่ λ (regParam) และ α (elasticNetParam) โดย α กำหนด ประเภท ของ regularization และ λ กำหนด ความแข็งแกร่ง ของ regularization
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Learning with PySpark
คำแนะนำการฝึกหัด
- Fit โมเดล linear regression กับข้อมูลเทรน โดยกำหนดความแข็งแกร่งของ regularization เป็น 1
- คำนวณค่า RMSE บนข้อมูลทดสอบ
- ตรวจสอบค่า coefficient ของโมเดล
- มี coefficient กี่ตัวที่มีค่าเท่ากับศูนย์?
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
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)