航班時間模型:正規化!
在前一個練習中,你為航班時間模型加入了更多的預測變數。模型在測試資料上的表現不錯,但係數一多就很難詮釋。
在這個練習中,你會使用 Lasso 迴歸(以 L1 懲罰正規化)來建立一個更簡潔的模型。得到的模型中,很多係數會被設為 0。這代表只有部分預測變數實際有助於模型。即使模型更簡單,它在測試資料上的 RMSE 仍然表現良好。
你會先使用特定的正規化強度值。之後你會學到如何用交叉驗證找出最佳值。
資料(與前一題相同)為 flights,並已隨機切分為 flights_train 與 flights_test。
此模型有兩個參數,λ(regParam)與 α(elasticNetParam),其中 α 決定正規化的「類型」,λ 決定正規化的「強度」。
本練習屬於課程
使用 PySpark 的機器學習
練習說明
- 對訓練資料擬合線性迴歸模型,將正規化強度設為 1。
- 計算測試資料上的 RMSE。
- 檢視模型係數。
- 有多少個係數等於 0?
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
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)