작성
·
284
0
안녕하세요. 좋은 강의 감사합니다.
TrainValidationSplit 수강 중 질문이 있습니다.
TrainValidationSplit를 이용하여 학습과 검증 비율을 trainRatio 파라미터를 이용하여 나누게 되는데, TrainValidationSplit을 사용할 시 randomSplit은 사용할 필요가 없나요? 아니면 사용하는 경우가 있을까요?
CrossValidator은 교차 검증 k fold 방식으로 알고 있는데, randomSplit에서 나눈 비율로 교차 검증을 진행하는 걸로 이해하면 될까요?
예를 들면 randomSplit 0.8(학습) 0.2(검증) 으로 나누었다면, 해당 비율로 교차검증을 진행하는지 궁금합니다.
마지막으로 현재 업무에서 스파크 스트리밍을 사용하고 있고 scala 기반으로 되어 있기 때문에 scala를 이용한 ml 도입을 고려하고 있습니다. 이때 강의에서 진행하는 pyspark과 비교하여 제공하지 않는 기능이라던지 고려해야 할 사항이 있을까요?
감사합니다!
답변 1
1
안녕하십니까,
1, 2번은 묶어서 한번에 답변 드리겠습니다.
보통 머신러닝을 위한 데이터 세트를 학습, 검증, 테스트 데이터 세트로 나눕니다. 이때 검증 데이터 세트를 사용하는 경우도 있고, 그렇지 않은 경우가 있습니다.
일반적으로는 전체 데이터를 학습과 테스트 데이터 세트로 나눕니다. 그리고 테스트 데이터 세트는 모델 학습, 평가등이 어느 정도 된 후 최종 평가를 위해서 남겨 둡니다.
검증 데이터 세트는 학습 데이터에서 다시 일부분을 이용하여 사용하는 경우가 대부분입니다.
따라서 전체 데이터가 있다면 스파크 ML에서는 randomSplit()을 이용하여 학습과 테스트 데이터를 분리 한 뒤에 이후에 이 학습 데이터를 다시 TrainValidationSplit()를 이용하여 학습과 검증 데이터로 분리 합니다.
즉 randomSplit 0.8 학습, 0.2 테스트로 분리 한 뒤에 다시 이 학습 데이터를 TrainValidationSplit()을 이용해서 교차 검증을 수행합니다.
그리고 3번 질문에 대한 답변으로
일반적으로 Spark의 모든 기능들은 Scala로 먼저 개발됩니다(Scala 우선 주의 입니다 ^^). 때문에 아마도 pyspark에서만 지원되고 Scala에서 지원되지 않는 기능은 거의 없을 것입니다.
감사합니다.