이번 포스팅에서는 불균형 데이터 처리 기법 중에 Under Sampling에 대해 살펴보도록 하겠습니다. 언더 샘플링은 다수 클래스의 데이터 수를 줄여서 클래스 분포의 균형을 맞추려는 방법입니다.
언더 샘플링(Under Sampling)
언더 샘플링은 다수 클래스의 샘플을 소수 클래스의 분포 비율과 일치하도록 무작위로 제거하는 방법입니다. 두개의 클래스를 맞추기 위해 한쪽 데이터를 제거하기 때문에 가진 정보를 잃어버리게 됩니다. 이것은 데이터가 편향될 수 있기 때문에 작은 데이터에서 선호하지 않는 방법입니다.
- 단순히 데이터를 제거하기 때문에 오버 샘플링보다 언더 샘플링이 상대적으로 비용이 더 적게 듬
- 부정 클래스가 다수일 경우는 일부를 줄이는 것이 허용됨, 되도록 하지 않는 경우임
- 주로 긍정 클래스의 정보가 많을 경우에 언더 샘플링을 하는 경향이 있음, 이는 맞추려고 하는 데이터가 충분하다는 의미임
Random Under Sampling
Random Sampling이란 말 그대로 다수 범주에서 무작위(random)로 샘플들을 선택하여 제거하는 방법입니다.
- 장점 : 샘플 선택에 아무런 제약이 없기 때문에 처리 시간 빠름
- 단점 : 샘플링 할 때마다 다른 결과가 나옴
Tomek Links
두 범주 사이를 탐지하고 데이터 정리를 통해 부정확한 분류 경계선을 좀 더 명확하게 하는 기법입니다. Tomek link라는 용어는 점과 점 사이에 더 짧은 거리의 데이터가 없는 경우를 말합니다. 처리 로직은 형성하는 Tomek Links의 두 샘플 중 하나는 노이즈일 수도 있지만, 두 점 모두 경계선 근처에 있다는 사실입니다. 여기서 Tomek link를 형성한 샘플 중 다수 범주에 속한 샘플을 제거합니다.
- 장점 : 분류 경계면의 다수 범주를 삭제하여 분류가 다수샘플쪽 이동
- 단점 : 제거 샘플이 한정적이라 큰 언더 샘플링 효과 없음
CNN(Condensed Nearest Neighbor)
다수 범주에서는 하나의 샘플을 무작위로 선택하고 동시에 소수 범주에서는 모든 샘플을 선택하여 서브 데이터를 구성합니다.
처리 로직
- 원데이터를 서브 데이터(다수 1건, 소수 전체)를 기준으로 1-nearest neighbor(1-NN) 분류
- 1-NN은 데이터가 첫번째 가까운 쪽으로 분류함
- 다수 범주에서 소수 범주로 분류된 샘플(녹색)과 서브 데이터만을 남기고 나머지 샘플(회색)은 삭제
위 과정을 통해 다수 범주의 데이터는 다운 샘플링 됩니다. 이렇게 얻어진 샘플들을 이용해 분류 경계면을 학습하게 됩니다. 중요한 특징은 다수 범주쪽에 데이터를 확실한 언더 샘플링하는 효과가 있다는 것입니다. 처리 로직에서 1-NN 아니면 안되는 이유가 3-NN으로 하면 모든 데이터가 선택되어 버립니다.
OSS(One-Sided Selection)
OSS 방법은 Tomek link + CNN이라고 생각하면 됩니다. Tomek link로 다수 범주의 데이터를 제거 후 CNN을 사용하여 다시 한 번 언더 샘플링 수행합니다. Tomek link로 클래스의 경계면에 있는 데이터를 제거하고 CNN으로는 경계면에서 멀리 떨어진 다수 범주의 데이터를 제거하게 됩니다. 이 기법은 Tomek link와 CNN의 한계를 상호 보완했다는 장점이 있습니다.
Under Sampling의 장단점
- 장점
- 다수 범주 관측치 제거로 계산 시간 감소
- 데이터 클렌징으로 클래스 오버랩 감소 가능
- 단점
- 데이터 제거로 인한 정보 손실 발생
마무리
언더 샘플링은 클래스 분포의 균형을 맞추고 클래스 불균형과 관련된 문제를 완화하는 데 도움이 될 수 있지만 다수 클래스에서 잠재적으로 가치 있는 정보를 잃을 수 있다는 단점이 있습니다. 따라서 올바른 언더샘플링 비율과 기술을 선택하는 것이 중요합니다. 너무 많은 정보를 잃지 않고 클래스 간의 균형을 달성하기 위해서는 오버샘플링 및 합성 데이터 생성과 같은 다른 방법도 함께 사용되는 경우가 많습니다. 오버 샘플링(Over Sampling)에 대한 내용은 참고하시기 바랍니다.