Dataset Shift에 대한 이해 (1) - Covariate Shift

2019. 12. 15. 22:43관심있는 주제/분석 고려 사항

눈 딱감고 한번만 광고 눌러주세요!

https://towardsdatascience.com/understanding-dataset-shift-f2a5a262a766

 

Understanding Dataset Shift

How to make sure your models are not fooled by tricks of your data.

towardsdatascience.com

데이터가 하는 속임수에 속지 않은 방법.

 Dataset Shift, The MIT Press.

Dataset Shift는 인풋들과 아웃풋의 결합 분포가 training과 test 단계 사이에서 도전해야 하는 상황이다.
저자는 Dataset Shift 원인과 징후들에 대한 더 깊은 논의가 데이터 과학계에 도움이 된다고 생각한다.
실제 많은 분석들을 하다 보면 열심히 training dataset에서 훈련을 시키고 test dataset에서 잘 적합하지 않는 경우가 매우 많이 있다. 이럴 경우 overfit이 발생했다고 말한다.
하지만 개인적으로는 나는 그런 경우가 발생할 경우 나는 분포 자체가 애초에 달라서 차이가 난다고 먼저 의심한다.

 

저자는 사람들이 이러한 진술에 대해서 비웃을지 모르지만, Kaggle Challenges에서 흔하게 보는 문제라고 한다.
이러한 경우가 발생할 경우 Dataset shifting에 대한 깊은 이해가 Kaggle competitions에서 승리하기 위한 키일 것이다.
Dataset Shift는 표준 용어는 아니며, 때때로 concept shift나 concept drift, changes of classification, changing environments, contrast mining in classification learning, fracture points and fractures between data라고 언급된다. 
Dataset Shifting은 대부분 지도 학습 머신러닝과 준지도 학습 내에서 발생한다.

dataset shift의 문제는 인풋 변수 활용 방법, training 과 test sets 선택 방법, data sparsity, 비정상 과정 환경 때문에 데이터 분포의 변화, 심층 신경 네트워크의 계층 내 활성화 패턴의 변화에서 비롯될 수 있다.

왜 dataset shift는 중요할까?

그것은 응용 프로그램에 의존한며, 검토와 해결의 데이터 과학자의 기술에 크게 의존한다. 예를 들어, 데이터 세트가 알고리즘에 문제를 일으킬 정도로 충분히 이동한 시기를 어떻게 결정하는가? 만약 특정 변수들이 발산하기 시작한다면, 어떻게 우리는 특정 변수를 제거 함으로써 얻은 정확도의 손실과 잘못 표현된 데이터 분포로써 얻은 정확도의 손실 사이에서 trade-off를 결정할 수 있을까? 

일단 드는 생각은 각각의 분포에서 모델링하여 변수 중요도를 체크하고, 그 변수 중요도를 사용해서 교집합을 이용하면, 일단 최소 성능을 보장할 수 있을까?... 
여기까지 읽으면서 드는 생각이 이렇게 한 변수가 발산하는 것을 결합분포에서 확인하는 것이 정말 중요하다는 것을 알겠는데, 어떤 방식으로 확인할 수 있을까?...


해당 글에서는 다양한 유형의 데이터셋 이동, 데이터셋의 존재로 인해 발생할 수 있는 문제 및 이를 피하기 위해 사용할 수 있는 현재 모범 사례에 대해 설명하겠다고 한다. 해당 글에는 코드가 없... ㅠ 순수히 개념에 관한 글이라고 한다.

Dataset shift에 대한 다양한 이상 징후

  • Covariate shift
  • Prior probability shift
  • Concept shift
  • Internal covariate shift (an important subtype of covariate shift)

이것은 기계 학습에 있어 매우 크고 중요한 주제이므로 이 영역에 대한 포괄적인 개요를 기대하지 마십시오.

Covariate shift

dataset shift의 모든 징후 중에서 가장 이해하기 쉬운 것은 Covariate Shift라고 한다.
Covariate shift는 독립 변수들인 공변량 분포의 변화이다.
이것은 보통 잠재 변수(latent variables)의 상태 변화 때문이다. 시간적(시적 과정의 역학적 특성에 대한 변화) 또는 공간적 또는 덜 명백할 수 있다. — Quora

Covariate Shift는 data 분포의 변화가 생길 때 사용하는 학문적인 용어이다.

공변량 변화로 인해 문제가 발생할 수 있는 몇 가지 예는 다음과 같다.

  • 얼굴 인식 알고리즘은 대게 나이 먹은 얼굴보다는 젊은 얼굴로 학습을 시킨다.
  • Predicting life expectancy but having very few samples in the training set of individuals that smoke, and many more samples of this in the training set.
  • 이미지를 고양이나 개로 분류하고 테스트 세트에서 볼 수 있는 훈련 세트에서 특정 종은 제외한다.

이러한 경우, 인풋과 아웃풋 사이에서 숨은 관계에 대한 차이가 없다.
그러나 그러나 그 관계의 일부는 시험 세트와 훈련 세트가 동일한 분포를 반영하지 않도록 데이터 구분, 생략 또는 잘못 전달된다.

Covariate Shift는 cross validation을 수행할 때 많은 문제를 일으킨다. 
Cross Validation은 공변량 이동 없이 거의 편중되지 않지만 공변량 이동 시 매우 편중되어 있다!

 

도움이 되셨다면 광고 한번만 눌러주세요. 블로그 운영에 큰 힘이 됩니다

 

728x90