XGBoost를 활용한 그래디언트 부스팅 트리

Python을 활용한 신용 위험 모델링

Michael Crabtree

Data Scientist, Ford Motor Company

결정 트리

  • 로지스틱 회귀와 유사한 방식으로 예측을 생성합니다
  • 회귀처럼 구조화되어 있지는 않습니다

결정 트리 예시

Python을 활용한 신용 위험 모델링

대출 상태를 위한 결정 트리

  • loan_status의 부도 확률을 예측하는 간단한 결정 트리

결정 트리 예측 예시

Python을 활용한 신용 위험 모델링

결정 트리의 영향

결정 트리 예측 예시

대출 실제 대출 상태 예측 대출 상태 대출 상환 가치 매각 가치 손익
1 0 1 $1,500 $250 -$1,250
2 0 1 $1,200 $250 -$950
Python을 활용한 신용 위험 모델링

트리의 숲

  • XGBoost는 단순한 트리를 여러 개 사용합니다(앙상블)
  • 각 트리는 동전 던지기보다 약간 더 나은 성능을 보입니다

트리 예측기 앙상블 예시

Python을 활용한 신용 위험 모델링

트리 생성 및 학습

  • xgboost Python 패키지의 일부로, 여기서는 xgb라고 부릅니다
  • 로지스틱 회귀 모델과 마찬가지로 .fit()으로 학습합니다
# Create a logistic regression model
clf_logistic = LogisticRegression()
# Train the logistic regression
clf_logistic.fit(X_train, np.ravel(y_train))
# Create a gradient boosted tree model
clf_gbt = xgb.XGBClassifier()
# Train the gradient boosted tree
clf_gbt.fit(X_train,np.ravel(y_train))
Python을 활용한 신용 위험 모델링

XGBoost로 부도 예측하기

  • .predict()와 .predict_proba() 모두로 예측합니다
    • .predict_proba()는 0과 1 사이의 값을 생성합니다
    • .predict()는 loan_status에 대해 1 또는 0을 생성합니다
# Predict probabilities of default
gbt_preds_prob = clf_gbt.predict_proba(X_test)
# Predict loan_status as a 1 or 0
gbt_preds = clf_gbt.predict(X_test)
# gbt_preds_prob
array([[0.059, 0.940], [0.121, 0.989]])
# gbt_preds
array([1, 1, 0...])
Python을 활용한 신용 위험 모델링

그래디언트 부스팅 트리의 하이퍼파라미터

  • 하이퍼파라미터: 데이터로부터 학습할 수 없는 모델 파라미터(설정값)
  • 그래디언트 부스팅 트리의 일반적인 하이퍼파라미터
    • learning_rate: 값이 작을수록 각 단계가 더 보수적으로 진행됩니다
    • max_depth: 각 트리가 도달할 수 있는 깊이를 설정하며, 값이 클수록 더 복잡해집니다
xgb.XGBClassifier(learning_rate = 0.2,
                  max_depth = 4)
Python을 활용한 신용 위험 모델링

연습해 봅시다!

Python을 활용한 신용 위험 모델링

Preparing Video For Download...