Gradient Boosted Trees กับ XGBoost

การสร้างโมเดลความเสี่ยงด้านเครดิตด้วย Python

Michael Crabtree

Data Scientist, Ford Motor Company

Decision Trees

  • สร้างการทำนายคล้ายกับ Logistic Regression
  • โครงสร้างไม่ได้เป็นแบบ Regression

ตัวอย่าง Decision Tree

การสร้างโมเดลความเสี่ยงด้านเครดิตด้วย Python

Decision Tree สำหรับสถานะสินเชื่อ

  • Decision Tree อย่างง่ายสำหรับทำนายความน่าจะเป็นการผิดนัดชำระของ loan_status

ตัวอย่างการทำนายด้วย Decision Tree

การสร้างโมเดลความเสี่ยงด้านเครดิตด้วย Python

ผลกระทบของ Decision Tree

ตัวอย่างการทำนายด้วย Decision Tree

สินเชื่อ สถานะจริง สถานะที่ทำนาย มูลค่าชำระคืน มูลค่าขาย กำไร/ขาดทุน
1 0 1 $1,500 $250 -$1,250
2 0 1 $1,200 $250 -$950
การสร้างโมเดลความเสี่ยงด้านเครดิตด้วย Python

กลุ่มของต้นไม้

  • XGBoost ใช้ต้นไม้อย่างง่ายหลายต้น (ensemble)
  • แต่ละต้นทำนายได้ดีกว่าการสุ่มเล็กน้อย

ตัวอย่าง Ensemble ของ Tree Predictors

การสร้างโมเดลความเสี่ยงด้านเครดิตด้วย Python

การสร้างและเทรน Tree

  • เป็นส่วนหนึ่งของแพ็กเกจ xgboost ใน Python เรียกใช้งานในชื่อ xgb
  • เทรนด้วย .fit() เช่นเดียวกับโมเดล Logistic Regression
# 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() ให้ค่า 1 หรือ 0 สำหรับ loan_status
# 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

Hyperparameters ของ Gradient Boosted Trees

  • Hyperparameters: พารามิเตอร์ของโมเดล (การตั้งค่า) ที่เรียนรู้จากข้อมูลไม่ได้
  • Hyperparameters ที่พบบ่อยสำหรับ Gradient Boosted Trees
    • learning_rate: ค่าที่น้อยกว่าทำให้แต่ละขั้นตอนระมัดระวังมากขึ้น
    • max_depth: กำหนดความลึกของแต่ละต้นไม้ ค่ามากหมายถึงโมเดลซับซ้อนกว่า
xgb.XGBClassifier(learning_rate = 0.2,
                  max_depth = 4)
การสร้างโมเดลความเสี่ยงด้านเครดิตด้วย Python

มาฝึกกันเถอะ!

การสร้างโมเดลความเสี่ยงด้านเครดิตด้วย Python

Preparing Video For Download...