📗 개인 프로젝트/🏦 정기 예금 가입 여부 예측

🏦 정기 예금 가입 여부 예측 | 2️⃣ 모델링

Lento_ 2025. 4. 21. 16:12

☑️  데이터 분리

: 모델 학습에 사용할 컬럼 선택 / 입력 변수, 출력 변수 분리 / Train, Test 데이터 분할


☑️  라벨 인코딩

: 범주형 데이터 라벨 인코딩하기 (범주형 → 수치형)


☑️  트리 모델

(Decision Tree_결정트리 모델)

- 모델이 하나의 변수(nr.employed)에 과도하게 의존한다.
- 'euribor3m', 'emp.var.rate', 'previous', 'campaign' 등은 거의 쓰이지 않았고, 이들을 제거해도 성능 변화가 없을 수 있다.
- 의사결정 트리의 단점이 드러남. → 하나의 피처에 지나치게 의존해 분기가 단순해졌다.
- 가장 중요한 feature = nr.employed(고용된 사람 수) → (0.8) : 모델이 대부분 이 변수 하나만으로 예측 가능하다.
- 그다음으로 중요한 변수는 poutcome (과거 캠페인 결과), cons.price.idx(소비자 물가 지수)이고, 비중이 0.1 이하로 작다.
- 나머지 변수들은 0에 가깝고, 거의 의사 결정 트리에서 사용 안 한다.

 

(결정 트리 시각화)

결정 트리 시각화


(Random Forest_랜덤 포레스트)

- (‘age’) : 나이가 많고 적음이 예금 가입 여부에 가장 큰 영향을 주는 것으로 보인다.

- (‘euribor3m’) : 유럽 기준금리로 경제적 요인이 큰 영향을 끼치는 것으로 보인다..

- (‘campaign’) : 마케팅 접촉 횟수가 중요 요인인 것 같다.

- (‘grouped_job’) : 직업군에 따른 행동 패턴 차이가 있을 수 있다.

- 개인 특성(age, job)과 경제적 지표(euribor3m, nr.employed, emp.var.rate) 그리고 마케팅 전략(campaign) 민감하게 반응한다.

랜덤 포레스트 내의 첫번째 트리


(XGBoost)

(max_depth = 3)

: 가장 높은 mean_test_score 보이며, 특히 n_estimators200-300 사이일 때 성능이 좋다.

(최적의 모델 선택)

: max_depth=3max_depth=4의 경우가 유리하지만, 복잡도와 안정성을 고려할 때 max_depth=3가 상대적으로 더 좋은 선택으로 보인다.

(nr.employed)

: nr.employed 변수 하나만으로도 모델 예측의 대부분을 설명하고 있다. (0.77)

: 전체 고용 수치(nr.employed)가 고객의 예금 가입 여부매우 밀접하게 연관되어 있다는 것을 의미한다.

 

(모델의 학습 편향 가능성이 의심됨)

: nr.employed 제외한 특성들의 중요도가 미미하다.


☑️  평가

모델 정확도 Precision Recall F1-score 평가 요약
Decision Tree 0.89 0.73 0.16 0.26 과적합 의심
실질적 성능이 떨어짐
Random Forest 0.8763 0.4646 0.4646 0.3820 보수적 예측
Precision 우위
XGBoost 0.8458 0.3982 0.6025 0.4795 가장 균형적인 성능
실제 가입자를 잘 포착함

 

1. F1-score가 가장 높아 모델의 전반적 성능이 가장 우수 / 실제 예금 가입자를 최대한 포착하고 싶은 경우

XGBoost가 가장 적합

 

2. 반대로 예측 정확도와 해석 가능성을 중시하고, FP(False Positive)을 줄이는 게 중요한 경우

Random Forest 선택 가능

 

3. Decision Tree는 간단한 모델 해석에는 유용할 수 있으나, 성능상 선택 우선순위는 낮음