클래스의 데이터가 불균형한 상태에서 anomaly detection을 위해 데이터에 라벨링(양성, 음성)을 했습니다.
이때, 전처리를 통해 만든 feature를 학습에 사용할지 정하는 과정에서 feature extraction을 진행합니다.
어떤 기준을 통해 정하는지 고민하던 차에 베이즈 확률보단 오즈비를 활용하는 것이 더 낫다는 사실을 알게됐습니다.
베이즈나 오즈비나 똑같이 2x2의 confusion matrix를 구성하고 계산하는데 왜 오즈비가 더 나을까에 대한 생각입니다.
최근 흑백요리사가 유행하면서 이븐(even)익지 않았다 라는 말이 밈으로 사용중이죠.
고기가 이븐(even)하게 익었다는 말은 고기가 균일하게 골고루 익었다는 말입니다.
그리고 반대로 이븐하게 익지 않았다는 말은 사실 오즈(odd)하게 익었다라고 할 수도 있는데요.
오즈(odd)는 균일하지 않다는 의미입니다.
오즈비(odds ratio) 왠지 단어에서 부터 균일하지 않은 클래스를 비교할 때 좋지 않을까 생각이 들지 않나요?
오즈비(odds ratio)에 앞서 오즈(odds)를 먼저 알아봅시다.
통계에서의 오즈(odds)는 사건이 발생할 확률을 사건이 발생하지 않을 확률로 나눈 값을 말합니다.
: 사건이 발생할 확률
: 사건이 발생하지 않을 확률
예를 들어, 무게중심이 완벽한 동전을 던진다고 하면 앞면이 나올 확률과 뒷면이 나올 확률이 동일할 것입니다.
즉 오즈(odds)는 사건이 발생할 확률과 발생하지 않을 확률이 동일하다면 이 나오게 됩니다.
오즈비(odds ratio)는 이벤트가 발생할 확률과 발생하지 않을 확률의 비율을 비교하는 방법입니다.
특정 변수가 어떤 사건의 발생에 미치는 영향을 평가할 때, 오즈비를 통해 사건 발생의 상대적인 영향도를 확인할 수 있습니다.
불균형한 데이터에서는 특정 클래스가 과도하게 많거나 적을 수 있기 때문에 오즈비는 데이터의 클래스 불균형 문제에서 유용합니다.
예를 들어 6시그마를 달성한 제조 공정이라면 100만개 중 단 3.4개만이 불량이 발생합니다. 일반적인 상황에서는 노이즈(ripple)라고 평가할 수 있습니다.
하지만 제조 공정에서 불량에 대해 분석하려고 할땐 정상인 경우보다 단, 3.4개가 발생한 경우가 더 중요합니다.
이런 경우 단순한 확률보다는 오즈비를 통해 효과적으로 영향을 평가할 수 있습니다.
=
정의는 이렇지만 사실 와닿지 않죠?
조금 더 쉽게 이해해 봅시다.
| 모집단 | 불량(positive) | 정상(negative) | 합계 |
|---|---|---|---|
| 공정 중 충격이 가해짐(Exposed) | 3(a) | 99997(b) | 100000(a+b) |
| 공정 중 충격이 가해지지 않음(Unexposed) | 1(c) | 899999(d) | 900000(c+d) |
| 합계 | 4(a+c) | 999996(b+d) | 1000000(a+b+c+d) |
공정 중 불의의 사고로 충격이 가해진다면 제품이 불량으로 생산될 가능성이 오르겠죠?
이 가능성을 숫자로 제시하는게 오즈비입니다.
= = = = =
즉, 공정 중 사고로 충격이 가해진다면 가해지지 않은 제품에 비해 불량으로 생산될 가능성이 27배라고 볼 수 있습니다.
매우 중요 : 이때 충격이 가해졌을 때 가해지지 않은 제품에 비해 불량으로 생산될 확률이 27배인것은 아닙니다.
실제 확률을 비교하는것은 로 헷갈리지 않도록 합시다.
베이즈 확률(Bayesian probability)을 사용하면 모델링 시 사전확률(prior probability)을 반영할 수 있습니다. 그러나 데이터가 클래스 불균형한 상황에서는 사전확률을 설정하는 과정에서 왜곡이 발생할 수 있습니다. 모델링을 위해 데이터 마트를 구성하게 될텐데 노이즈로 여겨지지 않기 위해서 불량클래스와 정상클래스의 비율을 임의로 조절하기 때문입니다.
| 모집단 | 불량(positive) | 정상(negative) | 합계 |
|---|---|---|---|
| 공정 중 충격이 가해짐(Exposed) | 3(a) | 99997(b) | 100000(a+b) |
| 공정 중 충격이 가해지지 않음(Unexposed) | 1(c) | 899999(d) | 900000(c+d) |
| 합계 | 4(a+c) | 999996(b+d) | 1000000(a+b+c+d) |
위에서 계산했기 때문에 결과만 기술
=
모집단의 비율을 무시하고 임의로 머신러닝을 위한 데이터 마트를 구성해 보겠습니다.
모집단의 비율 그대로 학습할 경우 양성 클래스를 노이즈 취급할 가능성이 매우 높기 때문에 데이터 마트에서는 임의로 비율을 조정합니다.
양성 클래스를 크게 확대하여 총 500개의 불량 샘플을 포함합니다.
음성 클래스는 1,500개의 샘플로 줄여, 불량과 정상 샘플 비율을 으로 조정했습니다.
| 데이터 마트 | 양성(Positive) | 음성(Negative) | 합계 |
|---|---|---|---|
| 공정 중 충격이 가해짐(Exposed) | 250 | 250 | 500 |
| 공정 중 충격이 가해지지 않음(Unexposed) | 250 | 1250 | 1,500 |
| 합계 | 500 | 1,500 | 2,000 |
데이터 마트에서는 로 계산됐습니다.
데이터 마트의 구성에 따라 베이즈 확률이 왜곡될 수 있다는 것을 보여줍니다.
데이터 마트에서는 입니다.
데이터 마트의 구성에 따라 오즈비 또한 왜곡될 수 있다는 것을 보여줍니다.
불균형한 데이터에서 가장 큰 문제는 양성 클래스와 음성 클래스 간의 비율 차이로 인해 모델이 학습할 때 특정 클래스를 무시하거나 과도하게 학습하는 현상이 발생하는 것입니다.
오즈비는 단순히 각 클래스의 확률을 비교하는 것이 아니라 각 클래스에서의 사건 발생의 상대적 비율을 측정하기 때문에 데이터의 불균형을 잘 처리해서 보여주는 지표가 됩니다.
베이즈 확률은 사전확률(prior probability)을 반영하는데 이는 베이즈 확률에서 중요한 역할을 합니다. 그러나 데이터가 불균형할 때, 데이터 마트에서 양성 클래스와 음성 클래스의 비율을 인위적으로 맞추는 과정에서 본래 모집단의 분포를 반영하지 못할 수 있습니다. 이로 인해 베이즈 확률을 사용하면 사전확률을 임의로 설정한 결과가 모델에 큰 영향을 미칠 수 있습니다.
반면, 오즈비는 각 클래스 간의 비율을 비교하므로 비교적 사전확률의 영향을 적게 받습니다.
오즈비 역시 데이터 마트의 비율에 의존하기 때문에 모집단의 특성을 그대로 반영하지 않습니다.
클래스 간 비율차이가 너무 클 때, 두 클래스 간의 발생 가능성을 비교하기 때문에 비교적 클래스 불균형에 의한 왜곡 없이 상대적 영향을 평가하는 지표일 뿐입니다.
데이터 마트를 구성할 때 최대한 모집단과 비슷하게 샘플링(층화표본추출 및 기타 샘플링 기법 사용)하여 오즈비를 계산하여 최대한 정확한 해석을 할 수 있도록 합시다.