Machine Learning

불균형 데이터분석을 위한 샘플링 기법

Dan-k 2022. 8. 30. 19:22
반응형

이 자료는 고려대학교 김성범 교수님의 자료를 토대로 정리한 내용입니다.

해당 게시물의 자료 저작권은 김성범 교수님에게 있습니다.

불균형 데이터분석을 위한 샘플링 기법

불균형 데이터 분석 문제

- 데이터의 불균형으로 인해 모델을 학습시키면 정상데이터에 대해 분류 경계선을 만드는 모델로 학습이 될 것이기 때문에 잠재적인 이상 데이터에 대한 예측 정확도는 낮아지는 문제가 있음

불균형 데이터 해결방안

- 데이터를 조정하든지, 모델을 조정하던지

샘플링 기법

- 크게 언더 샘플링과 오버 샘플링으로 구분할 수 있음

- under sampling : 보유하고 있는 데이터의 크기를 조절하여 데이터의 비율을 맞춤

- over sampling : 임의의 데이터를 증식시켜 데이터의 비율을 맞춤

 

  언더 샘플링 오버 샘플링
장점 1. 다수 범주 관측치 제거로 계산시간 감소
2. 데이터 클랜징으로 클래스 오버랩 감소 가능
1. 정보 손실이 업음
2. 대부분의 경우 언더샘플링에 비해 높은 분류정확도를 보임
단점 1. 데이터 제거로 인한 정보 손실 발생 1. 과적합 가능성
2. 계산 시간이 증가
3. 노이즈 또는 이상치에 민감

 

Under Sampling

- 다수 범주의 데이터를 제거하는 방법

1. random under sampling 

- 데이터를 무작위로 선택하여 비율을 맞춤

 

2. Tomek Links

- Tomek links의 조건에 해당하는 tomek link 데이터를 만든후 해당 데이터 제거

- 즉 확실히 경계를 만들수 있는 데이터만 남기는 형태로 이해할 수 있음

 

3. CNN(Condensedd nearest neighbor)

- 소수 범주 전체와 다수 범주에서 무작위로 하나의 관측치를 선택하여 서브데이터로 구성

> 1-NN 알고리즘을 통해 원데이터를 분류 -> 정상 분류된 다수 범주의 관측치를 제거

> 보라색만 남기고 모두 제거



4. OSS(One-Side Selection)

- Tomek + CNN을 합친 방법으로 두 알고리즘에 걸린 아래 그림의 보라색 데이터 제거



Over Sampling

- 소수 범주의 데이터를 증폭시키는 방법

1. Resampling

- 소수 범주의 데이터를 단순히 복사하는 방법 → 새로운 데이터가 아니라 소수 데이터 갯수만 많아지는 방식

- 단점 : 소수 클래스에 과적합이 발생할 가능성이 있음

2. SMOTE(Synthetic Minority Oversampling Techinque)

- 새로운 가상의 데이터를 생성하는 방법 중 하나

- 소수 범주의 데이터를 임의로 하나 정한 이후 가장 가까운 이웃(k개) 중 무작위를 하나 선택해서 아래 식을 기반으로 새로운 데이터를 생성하는 방식

- 즉, k이웃의 데이터 간 연결한 이후 그 연결점 중 한자리에 새로운 데이터를 만들어 넣는 방식

 

 

3. Borderlines-SMOTE

- Borderlines(경계부분) 부분만을 샘플링하는 방법

- 아무 데이터나 선택해서 데이터를 만들지 말고 두개 범주의 경계부분의 데이터만 선정해서 SMOTE를 사용하는 방식

- Borderlines을 정하는 방식 

> 소수 클래스의 하나를 선택하여 k개의 주변을 선택했을 때, 소수 범주 데이터가 아닌 다수 클래스에 선택하는 주변점 갯수가 많을 경우 선택 

> k의 값중 반개 이상 정도 다수 클래스가 관찰되는 케이스만 해당함

- Borderline의 점을 이용해 SMOTE를 적용하면 아래 그림과 같음

 

4. ADASYN(Adaptive Synthetic Sampling Approach)

- 샘플링하는 개수를 위치에 따라 다르게 하자.

- 모든 소수 클래스에 대해 주변을 k개만큼 탐색하고 그 중 다수 클래스가 관측되는 비율을 계산

- 구한 비율 ri값을 이용해서 weight를 만듦 → weight에 따라 생성하는 샘플수가 달라짐

- G= 다수클래스의 갯수 - 소수클래스의 차이 → weight에 G를 곱해서 소수 클래스당 생성할 샘플 개수를 정함

- 즉, 소수 클래스 주변의 다수 클래스의 수에 따라 유동적으로 over sampling 개수를 다르게 하여 생성

- ADASYN도 결국 SMOTE를 적용하는 개념 → 소수 클래스의 케이스에 따라 다르게 데이터를 생성하는 것 일 뿐

- Borderline은 경계선만 집중한다는 개념이고, ADASYN 모든 소수클래스를 반영하여 만들자.



5. GAN을 이용한 방법

- TabGAN 등 networks 두개가 서로의 결과를 이용해 학습하면서 진짜 샘플과 유사한 데이터를 생성시키는 방법



참조

https://www.youtube.com/watch?v=Vhwz228VrIk

 

불균형 데이터 모델링

1. 비용 기반 학습

- 이상치를 정상으로 분류하는 오분류를 막기위해 이상치에 좀 더 비중을 둬서 분석하는 방법

 

2. 단일 클래스 분류 방법

- 다수 범주만 고려해서 분류하는 방법 

- 다수 범주의 중심을 기준으로 바운더리를 생성하는 방법

 

one-class classification 

- 기존 관찰된 데이터 만을 기반으로 바운더리를 만들기 때문에 기존 관찰되지 않았던 데이터에 대해 잘못 분류할 가능성이 있음

 

728x90
반응형
LIST