일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Retry
- 공분산
- login crawling
- flask
- airflow subdag
- top_k
- TensorFlow
- subdag
- GenericGBQException
- Counterfactual Explanations
- GCP
- UDF
- Airflow
- 상관관계
- hadoop
- correlation
- grad-cam
- API Gateway
- session 유지
- chatGPT
- 유튜브 API
- youtube data
- gather_nd
- spark udf
- tensorflow text
- XAI
- requests
- BigQuery
- integrated gradient
- API
- Today
- Total
데이터과학 삼학년
불균형 데이터분석을 위한 샘플링 기법 본문
이 자료는 고려대학교 김성범 교수님의 자료를 토대로 정리한 내용입니다.
해당 게시물의 자료 저작권은 김성범 교수님에게 있습니다.
불균형 데이터분석을 위한 샘플링 기법
불균형 데이터 분석 문제
- 데이터의 불균형으로 인해 모델을 학습시키면 정상데이터에 대해 분류 경계선을 만드는 모델로 학습이 될 것이기 때문에 잠재적인 이상 데이터에 대한 예측 정확도는 낮아지는 문제가 있음
불균형 데이터 해결방안
- 데이터를 조정하든지, 모델을 조정하던지
샘플링 기법
- 크게 언더 샘플링과 오버 샘플링으로 구분할 수 있음
- 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
- 기존 관찰된 데이터 만을 기반으로 바운더리를 만들기 때문에 기존 관찰되지 않았던 데이터에 대해 잘못 분류할 가능성이 있음
'Machine Learning' 카테고리의 다른 글
Graph 유형 정리 (GNN) (1) | 2022.09.23 |
---|---|
Feature Selection VS Feature Extraction (0) | 2022.09.02 |
Information Gain and Mutual Information (0) | 2022.07.07 |
tensorflow_decision_forests 를 이용해서 손쉽게 RandomForest, GBM 사용하기 (0) | 2022.06.28 |
LOF (Local Outlier Factor) (0) | 2022.06.04 |