フライト所要時間モデル:正則化!
前の演習では、フライト所要時間モデルに予測変数を追加しました。テストデータでの性能は良好でしたが、係数が多すぎて解釈が難しくなりました。
この演習では、L1 ペナルティで正則化された Lasso 回帰を使って、より簡潔なモデルを作成します。結果のモデルでは多くの係数が 0 に設定されます。つまり、実際にモデルに寄与するのは予測変数の一部だけです。モデルはシンプルでも、テストデータでの RMSE は依然として良好です。
ここでは正則化の強さに特定の値を使います。最適な値の見つけ方は、後ほどクロスバリデーションで学びます。
データ(前の演習と同じ)は flights で、flights_train と flights_test にランダムに分割されています。
このモデルには 2 つのパラメータ、λ(regParam)と α(elasticNetParam)があり、α が正則化の「種類」を、λ が正則化の「強さ」を決めます。
この演習はコースの一部です
Machine Learning with 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)