데이터 비닝(변수 구간화)
연속형 변수를 구간화를 통해 그룹으로 나누는 과정이다.
데이터 비닝을 통해 해당 변수의 스케일이나, 분포가 모델에 미치는 영향을 줄일 수 있고, 모델 복잡도를 줄일 수 있다.
비닝의 가장 대표적인 예시
- 카운팅/ 값에 대한 경계로 구간화
- 값으로 통일 폭 변수 구간화
- 동일 빈도 변수 구간화
- 구간별 평균값으로 평활화
- 중앙값으로 평활화
- 경계값으로 평활화
구간화를 어떻게 하는지는 데이터에 따라 달라진다. (나이 : 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 비율 : 1
x < 1 인 경우 : 연체 x 비율이 더 크다 : 0 ~ 1 사이의 값을 가진다
가 1보다 큰 경우, ln(x)> 0
가 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 값이 음수가 나왔다.)
'Python > Data Analysis' 카테고리의 다른 글
Apriori 연관 규칙 알고리즘 - 개념, 전처리 방법, 모델 적용 (1) | 2024.03.24 |
---|---|
Box-Cox , Yeo-johnson Transformation (0) | 2024.03.17 |
[텍스트 분석] konlpy 한글 형태소 분석 (0) | 2024.02.22 |
[텍스트 분석] nltk 영어 형태소 분석 - 토큰화/정규화/품사 태깅 (0) | 2024.02.21 |
[텍스트 분석] Python 문법 , 정규표현식으로 텍스트 분석하기 - basic (0) | 2024.02.17 |