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

문선교님의 프로필 이미지
문선교

작성한 질문수

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

사용자 행동 인식 데이터를 이용한 결정 트리 실습 - 01

GridSearchCV 질문드립니다

작성

·

350

0

grid 에서 나온 최적의 하이퍼 파라미터 값이 

직접 y_test 히여 정확도를 추출하였을때의 성능 모델 순위에서 낮으면 어떻게 하나요 ?

예를들어서 max_depth = 8로 최적 파라미터값이 출력이 되었는데 y_test 를 가지고 돌렸을시 max_dept =12 인 정확도가 가장 높을때 어떻게 하나요 ? 

답변 1

3

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

안녕하십니까,

테스트 데이터를 어떻게 만드느냐에 따라서 충분히 발생할 수 있는 상황입니다.

만일 업무에서 사용하는 타겟값을 갖춘 데이터 세트가 있고, 이 중 일부를 테스트 데이터로 분리하고, 학습 데이터로 grid search CV로 최적화를 했는데, 테스트 데이터에서는 좋지 않은 결과가 나타날 수 있습니다.

이때 테스트 데이터를 어떻게 만들었는지, 학습 데이터와 중요 피처들의 분포가 어떻게 달라졌길래 테스트 데이터에서는 성능이 저하되었거나 다른 하이퍼 파라미터가 더 나은 성능을 보였는지 원인을 찾아야 합니다. 뭔가 테스트 데이터에서는 학습 데이터를 기반으로 만든 검증 데이터와 다르기 때문에 다른 결과가 나온 것입니다.  만약 달라진 원인을 찾지 못했다면 다른 테스트 데이터로 한번 더 검증해볼 필요가 있습니다.

일반적으로 업무에서 테스트 데이터를 만들때 아래와 같은 사항들을 고려하면 생성합니다.

1. 학습 데이터와는 중요 피처의 분포도를 달리하여 테스트 데이터를 만들었을 때 얼마나 성능이 일관성 있게 나타나는가?

2. 동시에 학습 데이터와 비슷한 유형으로 테스트 데이터를 생성해서 검증(validation) 결과와는 얼마나 달라지는가?

이런 요소들을 감안해서 여러번 테스트 데이터로 테스트를 수행합니다. 즉 테스트 데이터를 어떻게 만들었느냐에 따라서 결과가 달라질 수 있고, 최적 하이퍼 파라미터가 또 달라질 수 있습니다.

하지만 일반적으로는 CV 결과를 Baseline으로 생각하여, 최적으로 튜닝이 된것으로 간주합니다. 이 기반에서 테스트 데이터 세트의 유형에 따라서 모델 성능이 어느정도 변동성을 가지는지를 확인하는 것 역시 중요한 평가 지표 입니다. 

만약 경연 대회라면 무조건 테스트 데이터에 성능이 최적화 될 수 있게 맞춰야 합니다. 하지만 실 업무에서는 CV결과로 나오는 성능을 기반 지표로 생각하고 다양한 테스트 데이터 세트에서 나오는 성능을 보조적인 성능 지표로서 성능을 판단해야 합니다.

결론적으로 CV 결과 하이퍼 파라미터를 신뢰해야 하지만 적용하려는 요건에 따라서 달라 질 수 있습니다.

감사합니다.

문선교님의 프로필 이미지
문선교

작성한 질문수

질문하기