교차 검증

PySpark로 하는 Machine Learning

Andrew Collier

Data Scientist, Fathom Data

전체 데이터셋

PySpark로 하는 Machine Learning

데이터셋을 학습/테스트로 분할

PySpark로 하는 Machine Learning

훈련 데이터를 여러 폴드로 분할

PySpark로 하는 Machine Learning

폴드 겹겹이 - 첫 번째 폴드

첫 번째 폴드

PySpark로 하는 Machine Learning

폴드 겹겹이 - 두 번째 폴드

두 번째 폴드

PySpark로 하는 Machine Learning

폴드 겹겹이 - 기타 폴드

남은 폴드

PySpark로 하는 Machine Learning

자동차 다시 보기

cars.select('mass', 'cyl', 'consumption').show(5)
+------+---+-----------+
|  mass|cyl|consumption|
+------+---+-----------+
|1451.0|  6|       9.05|
|1129.0|  4|       6.53|
|1399.0|  4|       7.84|
|1147.0|  4|       7.84|
|1111.0|  4|       9.05|
+------+---+-----------+
PySpark로 하는 Machine Learning

Estimator와 evaluator

모형을 학습할 객체입니다. 파이프라인일 수도 있습니다.

regression = LinearRegression(labelCol='consumption')

모형 성능을 평가할 객체입니다.

evaluator = RegressionEvaluator(labelCol='consumption')
PySpark로 하는 Machine Learning

그리드와 교차 검증기

from pyspark.ml.tuning import CrossValidator, ParamGridBuilder

하이퍼파라미터 값의 그리드(현재는 비어 있음).

params = ParamGridBuilder().build()

교차 검증 객체입니다.

cv = CrossValidator(estimator=regression,
                    estimatorParamMaps=params,
                    evaluator=evaluator,
                    numFolds=10, seed=13)
PySpark로 하는 Machine Learning

교차 검증기도 학습이 필요함

훈련 데이터에 교차 검증을 적용합니다.

cv = cv.fit(cars_train)

폴드 전체의 평균 RMSE는 얼마입니까?

cv.avgMetrics
[0.800663722151572]
PySpark로 하는 Machine Learning

교차 검증기는 모델처럼 동작함

원래 테스트 데이터로 예측합니다.

evaluator.evaluate(cv.transform(cars_test))
# 테스트 데이터의 RMSE
0.745974203928479

교차 검증 RMSE보다 더 작습니다.

# 교차 검증의 RMSE
0.800663722151572

단순한 학습/테스트 분할만 사용하면 성능이 과대평가될 수 있습니다.

PySpark로 하는 Machine Learning

모든 모델을 교차 검증하세요!

PySpark로 하는 Machine Learning

Preparing Video For Download...