728x90
1. 불균형 데이터란
- '정상' 범주의 관측치 수와 '이상' 범주의 관측치 수의 차이가 크게 나타나는 경우
- 클래스 별 관측치의 수가 현저하게 차이가 나는 데이터
- 문제
- 정상을 정확히 분류하는 것과 이상을 정확히 분류하는 것 중 일반적으로 이상을 정확히 분류하는 것이 더 중요
- 불균형한 데이터 세트는 이상 데이터를 정확히 찾아내지 못할 수 있다는 문제점이 존재
2. 불균형 데이터 해결 방안
- 데이터를 조정해서 해결
- 샘플링 기법 (Sampling method)
- 모델을 조정해서 해결
- 비용 기반 학습 (Cost sensitive learning)
- 단일 클래스 분류기법 (Novelty detection)
2-1. 샘플링 기법
1) 언더 샘플링
- 다수 범주의 데이터를 소수 범주의 데이터 수에 맞게 줄이는 샘플링 방식
- 장점
- 다수 범주 데이터의 제거로 계산시간이 감소
- 단점
- 데이터 제거로 인한 정보 손실이 발생
1-1) Random undersampling
- 무작위로 다수 클래스 데이터의 일부만 선택하는 방법
- 샘플링 할때마다 성능의 차이가 남
- 의외로 잘 작동하는 경우가 있다
1-2) Tomek Links
- 두 범주 사이를 탐지하고 정리를 통해 부정확한 분류경계선을 방지하는 방법
- 다른 두 클래스의 데이터 2개를 연결했을 때 주변에 다른 임의의 데이터(k)가 존재할 때
- 선택한 두 데이터에서 k까지의 거리보다 선택한 두 데이터 사이의 거리가 짧을 때
- 선택한 두 데이터 간의 링크를 Tomek Link라고 한다.
- 선택한 두 데이터에서 k까지의 거리보다 선택한 두 데이터 사이의 거리가 짧을 때
- Tomek Links를 형성한 후, 다수 범주에 속한 관측치를 제거
1-3) CNN Rule
- Condensed Nearest Neighbor
- 다수 클래스에 밀집된 데이터가 없을 때까지 데이터를 제거하여 데이터 분포에서 대표적인 데이터만 남도록 하는 방법
- 소수 범주에 속하는 데이터 전체와 다수 범주에 속하는 데이터 중 임의로 선택한 데이터 한 개 (A) 로 구성된 서브 데이터를 생성
- 다수 범주에 속하는 나머지 데이터들 중 하나씩 K=1 인 1-NN 방식을 이용하여 A와 가까운지 소수 범주와 가까운지 확인하여 가까운 범주로 임시 분류
- 2번이 끝나면 정상 분류된 다수 범주 관측치를 제거하여 언더 샘플링
1-4) OSS
- One Sided Selection
- Tomek links + CNN
2) 오버 샘플링
- 소수 범주의 데이터를 다수 범주의 데이터 수에 맞게 늘리는 샘플링 방식을 말합니다.
- 장점
- 데이터를 증가시키기 때문에 정보 손실이 없다.
- 대부분의 경우 언더 샘플링에 비해 높은 분류 정확도를 보인다.
- 단점
- 데이터 증가로 인해 계산 시간이 증가
- 과적합 가능성 (Over-fitting) 존재
- 학습데이터는 잘 맞추고 예측은 잘 하지 못하는 경우
- 노이즈 또는 이상치에 민감
2-1) Resampling
- 다수 범주의 관측치 수와 비슷해지도록 소수클래스 관측치 복제
- 단점
- 소수 클래스에 과적합이 발생할 가능성이 있음
- 보완 -> 가상의 관측치를 생성하자
2-2) SMOTE
- synthetic minority oversampling technique
- 소수 범주에서 가상의 데이터를 생성하는 방법
- K값을 정한 후 소수 범주에서 임의의 데이터를 선택
- 선택한 데이터와 가장 가까운 K개의 데이터 중 하나를 무작위로 선정해 synthetic 공식을 통해 가상의 데이터 생성
- 소수 범주 내 모든 관측치에 대해 과정을 반복하고 가상 관측치 생성
- K는 무조건 2이상
- K가 1인 경우 데이터 형태가 이상해짐
2-3) Borderline-SMOTE
- Borderline 부분만을 샘플링
- Borderline 찾기
- 소수 클래스 xi에 대해서 k개 주변을 탐색 -> k개 중 다수 클래스의 수를 확인
- 다수 클래스의 데이터 수가 K인 경우 Noise 관측치
- K/2 ~ K 에 속할 경우 Danger 관측치
- 0 ~ K/2 에 속할 경우 Safe 관측치
- 소수 클래스 xi에 대해서 k개 주변을 탐색 -> k개 중 다수 클래스의 수를 확인
- Danger 관측치에 대해서만 SMOTE 적용
- Borderline 찾기
2-4) ADASYN
- adpative synthetic sampling approach
- Borderline SMOTE 방법과 비슷하지만
- 샘플링 개수를 데이터 위치에 따라 다르게 설정하는 것이 차이
- 다수클래스쪽에 있는 데이터에도 집중해보자
- 각 소수 클래스 주변에 얼마나 많은 다수 클래스 관측치가 있는가를 정량화 한 지표
- ri 구하기
- ri 스케일링(확률로 바꾸기)
- G = 다수 클래스 개수 - 소수 클래스 개수
- 각 ri에 G를 곱하고 반올림한 결과 == 생성되는 소수 클래스 수
- 각 소수 클래스를 할당된 개수 만큼 SMOTE를 적용
- 장점
- 소수 범주 데이터 주변의 다수 범주 데이터의 수에 따라 유동적으로 생성이 가능
2-5) GAN
- Generative Adversarial Nets
- 생성자와 구분자로 구성되어 있고 모델은 딥러닝을 사용하는 최신 오버 샘플링 기법
- 작동 방식
- 무작위로 노이즈를 생성 N(0,1)
- 생성자를 통해 가짜 샘플을 생성
- 구분자에서 진짜/가짜 샘플 판별
- 반복적인 생성자 업데이트를 통해 진짜 샘플과 유사하게 데이터를 생성
2-2. 비용 기반 학습
- 모델 조정
- 이상을 정상으로 분류 중 정상을 이상으로 분류 전자가 더 큰 문제
- 방법
- 비용 기반 데이터 가중치 부여
- 각 범주에 따른 오분류 비용을 부여하고 분류기를 생성
2-3. 단일 클래스 분류 기법
- 모델 조정
- 다수 범주만 고려해서 분류
- 가능한한 모든 다수 범주를 포함하는 분류경계선 생성
728x90
반응형
'TIL - 외 > 빅데이터' 카테고리의 다른 글
[머신러닝] 회귀 알고리즘 및 실습 (0) | 2023.04.13 |
---|---|
[머신러닝] K-최근접 이웃(KNN) 알고리즘 및 실습 (0) | 2023.04.09 |
구름 php + MySQL (0) | 2022.11.02 |
DB (0) | 2022.11.02 |
처음 만들어보는 GAN Model (0) | 2022.11.01 |
댓글