이 부분은 가장 중요한 부분인데 평가에 대한 이론적인 부분과 어떻게 적용해서 검증했는지에 대해
두개 Part로 구분하여 설명한다.
Spark ML Guide에서는 아래와 같이 설명하고 있다.
ML에서 중요한 작업은 모델 선택 또는 데이터를 사용하여 주어진 작업에 대한 최상의 모델 또는 매개 변수를 찾는 것입니다. 이를 튜닝이라고도합니다
LogisticRegression과 같은 개별 Estimator 또는 다중 알고리즘, 기능 부여 및 기타 단계가 포함 된 전체 파이프 라인에 대해 튜닝을 수행 할 수 있습니다.
사용자는 파이프 라인의 각 요소를 개별적으로 조정하지 않고 전체 파이프 라인을 한 번에 조정할 수 있습니다.
Spark 은 모델 선택을 지원하기 위해 CrossValidator 와 TrainValidationSplit을 제공한다.
이러한 도구에는 다음 항목이 필요합니다.
Estimator : 알고리즘이나 파이프라인 튜닝
ParamMap : Parameter Grid에 설정값 저장
Evaluator : 주어진 테스트데이터상에서 모델이 얼마나 잘 적용되었는지 가치를 측정하는 척도
이 모델 선택 도구는 높은 수준에서 다음과 같이 작동합니다.
- 이들은 입력 데이터를 별도의 교육 및 테스트 데이터 세트로 분리합니다.
- 각 (교육, 테스트) 쌍에 대해 ParamMaps 집합을 반복합니다.
o 각 ParamMap에 대해 Estimator에 맞는 매개 변수를 사용하고 적합한 모델을 가져 와서 Evaluator를 사용하여 모델의 성능을 평가합니다.
- 그들은 가장 잘 수행되는 매개 변수 집합에 의해 만들어진 모델을 선택합니다.
Evaluator는 회귀 문제에 대한 RegressionEvaluator, 이진 데이터에 대한 BinaryClassificationEvaluator 또는 여러 가지 문제에 대한 MulticlassClassificationEvaluator가 될 수 있습니다.
최적의 ParamMap을 선택하는 데 사용되는 기본 메트릭은 이러한 각 Evaluator의 setMetricName 메소드로 대체 할 수 있습니다.
1. CrossValidator
CrossValidator는 k번( k-folds) 설정할 수 있는데 k=3으로 설정하면 훈련을 위해 2/3의 데이터를 사용하고 테스트를 위해 1/3의 데이터 세트를 사용하는 3 개의 (훈련, 테스트) 데이터 세트 쌍을 생성한다.
특정 ParamMap을 평가하기 위해 CrossValidator는 3 가지 (교육, 테스트) 데이터 세트 쌍에 Estimator를 적용하여 생성된 3 가지 모델에 대한 평균 평가 메트릭을 계산한다.
최상의 ParamMap을 식별 한 후 CrossValidator는 최상의 ParamMap과 전체 데이터 세트를 사용하여 최종적으로 Estimator를 다시 맞춘다.
정확한 대신 비용이 많이 든다. 시간이 많이 걸린다는 뜻이다.
데이터가 많지 않을 때 사용한다.
2. TrainValidationSplit
CrossValidator의 경우 k 배가 아니라 각 매개 변수 조합을 한 번만 평가한다. 따라서 비용이 저렴하지만 교육 데이터 세트가 충분히 크지 않은 경우 신뢰할 수있는 결과를 산출하지 못한다.
데이터가 엄청 많을 때 사용한다.
CrossValidator가 어떻게 동작하는지는 모델 평가 2장에서 설명한다.