본문 바로가기
Python/Data Analysis

데이터 비닝과 WOE(Weight of Evidence), IV(Information Value)

by skwkiix 2024. 2. 29.
728x90

데이터 비닝(변수 구간화)

연속형 변수를 구간화를 통해 그룹으로 나누는 과정이다.

데이터 비닝을 통해 해당 변수의 스케일이나, 분포가 모델에 미치는 영향을 줄일 수 있고, 모델 복잡도를 줄일 수 있다.

 

비닝의 가장 대표적인 예시

- 카운팅/ 값에 대한 경계로 구간화

- 값으로 통일 폭 변수 구간화

- 동일 빈도 변수 구간화

- 구간별 평균값으로 평활화

- 중앙값으로 평활화

- 경계값으로 평활화

 

구간화를 어떻게 하는지는 데이터에 따라 달라진다. (나이 : 10대,20대,30대 등, 학점 등)


오늘 포스팅에서는 변수 구간화 이후, Feature Selection의 영역에서 각 구간별로 나누어진 변수가 얼마나 예측력이 있는지 WOE(Weight of Evidence)IV(Information)를 활용하여 평가하는 방법을 설명한다. 


IV(Information Value)

얼마나 많은 정보량이 포함되어있는가? 를 수치적으로 표현해주는 개념이다. 신용연체평가모델링에 많이 사용되는 방법이다.

해당 지표를 통해 어떤 변수가 타겟변수와 더 강한 관계를 가지고 있는지 평가할 수 있다.

예측을 잘하기 위해 쓰는 방법(과적합의 원인이 될 수 있다 > 더블 체크 필요)으로 변수의 설명력을 높이기 위한 방법은 아니다.

 

  • IV <0.02: 유용하지 않은 변수
  • 0.02 <=IV <0.1: 약한 예측력
  • 0.1 <=IV <0.3: 중간 예측력
  • 0.3 <=IV <0.5: 강한 예측력
  • IV >= 0.5, 1.0 이상: 매우 강한 예측력

수식을 확인해보자.

 

각 구간(i) 에 대한 WOE 값을 계산했을 때,(양성클래스 비율 - 음성클래스비율) 에 곱한 값이 구간 별 IV 이다.

그럼 WOE 는 어떻게 계산할까


WOE(Weighe of Evidence)

 

양성 클래스 구성비율 / 음성 클래스 구성비율에 자연로그를 취한 값이 WOE 이다. (위 두식이 같은 뜻이다)


예를 들어, 대출 연체 여부를 예측하는 모델을 만든다고 가정해보자.

연체 여부를 나타내는 다음과 같은 데이터셋이 있다 (일부만 표시)

age 연체
12 1
25 0
27 1
35 0
40 1
52 1
33 0
42 0

 

이 데이터셋을 아래와 같이 '나이'를 구간화 시키고 인코딩 시켜준다.

연령대 연체  (양성클래스) 비연체 (음성클래스) 연체 0 비율 연체 x 비율
10대 3 2 3 / 16  2/ 12
20대 4 4 4/ 16 4 / 12
30대 5 4 5 / 16 4 / 12
40대 2 1 2 / 16 1 / 12
50대 2 1 2 / 16 1 / 12
total 16 12 1 1

 

WOE(연령대) = ln(연체 0 비율 / 연체 x 비율)을 구한다.

연령대 WOE
10대
ln(3/16 / 2/12) ≈ -0.182
20대 ln(4/16 / 4/12) = 0
30대 ln(5/16 / 4/12) ≈ 0.182
40대 ln(2/16 / 1/12) ≈ 0.287
50대 ln(2/16 / 1/12) ≈ 0.287

 

(양성 클래스 비율/ 음성 클래스 비율) 에 ln 자연로그를 취하는 이유는 무엇일까?


자연로그

 

자연로그는 자연상수 e 를 밑으로 하는 로그 함수이다.

 

 

는 양수이고, 는 극한의 개념으로 정의된다.

 

예시 데이터에 따르면,  ln(연체 0 비율 / 연체 x 비율), 즉 x 값이 연체 0 비율 / 연체 x 비율이다.

 

경우의 수를 정리해보자.

x > 1 인 경우 : 연체 0 비율이 더 크다(양성클래스 힘이 더 세다) : 1 ~ 무한대의 값을 가진다

x = 1 인 경우 : 연체 0 비율 = 연체 x 비율 :

x < 1 인 경우 : 연체 x 비율이 더 크다 : 0 ~ 1 사이의 값을 가진다

 

 

가 1보다 큰 경우, ln(x)>

가 1일 때,

x가 1보다 작은 경우, ln(x)< 0 

 

자연로그는 비선형 함수이기 때문에, 변수 간의 선형 관계를 비선형으로 변환하여 모델의 예측력을 향상시킨다. (트리 기반 모델은 입력 특성의 비선형성을 자동으로 학습할 수 있기 때문에, 트리기반 모델에는 사용하지 않는다.)


 

이제 IV 를 계산해보자

연령대 연체 (양성클래스) 비연체 (음성클래스) 연체 비율 비연체 비율 연체 비율 - 비연체 비율 WOE IV
10대 3 2 3/16 2/12 0.0625 -0.182 -0.011375
20대 4 4 4/16 4/12 0 0 0
30대 5 4 5/16 4/12 0.0208 0.182 0.0037856
40대 2 1 2/16 1/12 0 0.287 0
50대 2 1 2/16 1/12 0 0.287 0

 

최종 IV 값은 각 연령대의 IV 값을 합산한 값이다. 보통 IV는 양수 값으로 음수가 나오는 경우는 드물며 데이터셋에 오류가 생길 경우에 발생한다. ( 이 데이터셋은 무작위로 생성한 예시 데이터로 연령대별 구간화한 최종 IV 값이 음수가 나왔다.)