인프런 커뮤니티 질문&답변

강병하님의 프로필 이미지
강병하

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

데이터 분리와 교차 검증

해결된 질문

작성

·

234

0

안녕하세요?

교차 검증이 별도의 여러 세트로 구성된 학습 데이터 세트와 검증 데이터 세트에서 학습과 평가를 수행하는 것이라고

책에 표현해주셨는데 그렇다면 

1) 학습 데이터와 테스트 데이터를 분리를 먼저 하고

2) 그리고 그 분리된 학습 데이터로 부터 다시 학습 데이터 세트와 검증 데이터 세트로 분리하는 것이 교차 검증이 맞는건가요?

답변 4

2

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까, 질문을 제가 잘 이해를 못했습니다만, 아래 내용을 갈음하고자 합니다. 원하시는 답변이 아니시면 다시 질문 남겨 주시기 바랍니다.

일반적으로 테스트 데이터는 오픈하지 않고 숨겨놓습니다. 하지만 테스트 데이터가 학습이나 검증에 전혀 사용되었다고 해서 정확하게 모델의 성능을 측정하는 공정한 데이터 세트라고 장담할 수는 없습니다. 테스트 데이터가 다양한 현실의 데이터를 반영한다면 모르지만 그렇지 않다면 모델 성능이 테스트 데이터에서 납득하기 힘들 정도로 좋아지거나 반대로 나빠 질 수도 있습니다.

특히 데이터 세트가 적을 경우 이런 현상을 볼수 있습니다. 또한 학습데이터에 비해 테스트 데이터가 imbalanced 되어 있는 경우(또는 반대의 경우)에 발생할 수 있습니다.  테스트 데이터를 추출하는 작업을 정확히 해야 한다면 그냥 랜덤으로 전체 데이터에서 뽑지 않고 현실의 다양한 요소를 감안하여 뽑아야 하지만 현실적으로는 어려운 부분입니다.

데이터가 작다면 교차 검증이 오히려 더 좋은 성능 지표가 될 수 있습니다. 물론 개별 교차 검증 세트의 분산이 일정하다는 가정하에서 입니다.

또한 모델의 성능 수치를 공개할 때 교차 검증시에는 평균 0.8 이 나왔으나 테스트 데이터 세트에 테스트 시에는 0.9(또는 0.7)이 나와서 둘의 성능 수치 차이가 크다면, 테스트 데이터의 크기가 작아서(또는 학습/검증 데이터의 중요 컬럼들의 분포가 상당히 차이가 나는)  제대로 모델에 대한 성능 수치를 나타내지 못할 가능성이 큽니다.

이런 경우라면 교차 검증의 수치와 테스트 데이터의 수치를 함께 고려하면서 모델을 정교화 할 필요가 있습니다. 만일 보고를 해야한다면 역시 교차 검증 수치와 테스트 데이터의 수치를 함께 기재하고 어떠한 영향으로 이런 차이가 발생했는지 같이 설명하는 것도 좋습니다. 원래대로라면 왜 이런 차이가 발생하는지 테스트 데이터를 더 분석해서 차이를 찾아야 합니다만 일반적으로 작은 데이터 세트에 대해서는 흔하게 발생하는 현상중에 하나 입니다.

교차 검증과 테스트 데이터 세트에 대해 반드시 따라야할 규칙은 없습니다. 보다 객관적인 모델 검증을 위해서 교차 검증 후 별도의 테스트 데이터에 성능 지표를 확인 받는 것이 일반적으로 타당하기 때문에 이를 따르는 것입니다. 환경이 그렇지 못하다면 거기에 따른 보충 설명이나 문제점을 공개하여 모델 성능을 참조하도록 하는 것이 바람직합니다.

감사합니다.

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

넵. 맞습니다.

감사합니다.

0

강병하님의 프로필 이미지
강병하
질문자

자세히 설명해주셔서 감사합니다 :)

0

강병하님의 프로필 이미지
강병하
질문자

그러면 총 데이터 셋 개수가 적은 경우 교차 검증을 하고 모델 train 및 predict를 했는데

overfitting이 발생하였습니다. 이런 경우에는 어떻게 해야할까요? 

강병하님의 프로필 이미지
강병하

작성한 질문수

질문하기