항공편 소요 시간 모델: Regularization!
이전 연습 문제에서는 항공편 소요 시간 모델에 더 많은 예측 변수를 추가했어요. 모델은 테스트 데이터에서 성능이 좋았지만, 계수가 너무 많아 해석하기가 어려웠습니다.
이번 연습 문제에서는 L1 패널티로 정규화된 Lasso 회귀를 사용해 더 간결한 모델을 만들어 보겠습니다. 결과 모델의 많은 계수는 0으로 설정되며, 이는 실제로 모델에 기여하는 예측 변수가 일부에 불과하다는 뜻입니다. 모델이 단순해져도 테스트 데이터에서의 RMSE는 여전히 좋게 나옵니다.
정규화 강도는 특정 값을 사용합니다. 이후에는 교차 검증으로 최적 값을 찾는 방법을 배우게 됩니다.
데이터는 이전 연습 문제와 동일하며, flights를 무작위로 분할한 flights_train과 flights_test가 제공됩니다.
이 모델에는 두 가지 매개변수 λ(regParam)와 α(elasticNetParam)가 있으며, α는 정규화의 유형을, λ는 정규화의 강도를 결정합니다.
이 연습은 강의의 일부입니다
PySpark로 하는 Machine Learning
연습 안내
- 학습 데이터에 선형 회귀 모델을 적합하세요. 정규화 강도는 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)