決策樹作為一種直觀、易解釋的機器學習算法,在金融、醫療、電商、風控等多個領域都有廣泛的實際應用。以下將講解1個典型案例:貸款違約預測。
對于貸款違約預測,即在貸款人員在貸款之前對其進行預測,通過他的眾多特征情況判別是否可以為其辦理貸款業務及其可以辦多少額度的貸款項目。
場景背景:
銀行或金融機構在發放個人貸款時,需要評估申請人的還款能力和違約風險,避免因借款人違約導致的資金損失。傳統風控依賴人工審核,效率低且主觀性強,而決策樹可通過歷史數據自動構建風險評估模型。
核心需求:
基于申請人的基本信息(年齡、收入、職業)、信用記錄(征信逾期次數、信用卡負債)、貸款信息(貸款金額、期限)等特征,預測其未來是否會違約(二分類問題:違約 / 不違約)。
決策樹應用過程
數據收集與預處理
收集歷史貸款用戶數據,包括特征變量(如年齡、月收入、征信逾期次數、貸款金額、是否有房貸等)和目標變量(是否違約:1 = 違約,0 = 不違約)。處理缺失值(如用中位數填充收入缺失)、異常值(如剔除極端高收入樣本)。
模型構建
用決策樹算法對數據進行訓練,通過遞歸劃分特征空間:
第一層可能以 “征信逾期次數> 3 次” 為劃分節點,將高逾期用戶分到高風險分支;
低逾期分支再以 “月收入 < 5000 元” 劃分,收入較低者進入次高風險分支;
最終葉子節點輸出 “違約概率 80%” 或 “不違約概率 95%” 等結果。
實際價值
自動篩選高風險申請人,降低壞賬率;
規則可視化,便于風控人員理解和調整策略。
代碼實現:
import pandas as pd
import numpy as np
from sklearn import tree
from sklearn import metrics
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
data = pd.read_excel('客戶數據.xlsx')
X = data.iloc[:,:-1]
y = data.iloc[:,-1]
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y ,test_size=0.2, random_state=42)
scores = []
sc = 0
dp = [5,6,7,8,9,10,11] # min_samples_leaf min_samples_split
msl = [5,8,9,10,11,12]
mss = [7,8,9,10,11,12]
mln = [5,6,7,8,9,10,11]
for a in dp:for b in msl:for c in mss:for d in mln:dtr = tree.DecisionTreeClassifier(criterion='gini', max_depth=a,min_samples_leaf=b,min_samples_split=c,max_leaf_nodes=d,random_state=42)score = cross_val_score(dtr, X_train, y_train, cv=3, scoring='recall')score_mean = sum(score) / len(score)if score_mean > sc:sc = score_meanscore_mean = score_meanbest = [a,b,c,d]
print(best)
# best_C = dp[np.argmax(scores)]
# print('最優深度為:{}'.format(best_C))
dtr = tree.DecisionTreeClassifier(criterion='gini', max_depth=best[0],min_samples_leaf=best[1],min_samples_split=best[2],max_leaf_nodes=best[3],random_state=42)
dtr.fit(X_train,y_train)
train_predicted = dtr.predict(X_train)
print(metrics.classification_report(y_train,train_predicted))
test_predicted = dtr.predict(X_test)
print(metrics.classification_report(y_test,test_predicted))
?上述代碼就是一個將數據帶入一個簡單的決策樹模型進行對貸款人員的信息進行篩選評判獲取可貸款人員,其中對決策樹的模型進行了參數的交叉驗證選出最優參數。
決策樹憑借直觀的規則、易解釋性和廣泛的適用性,在風控、醫療、營銷等領域成為經典的 “開箱即用” 算法。實際應用中需結合業務場景選擇合適的特征,通過剪枝、集成(如隨機森林、GBDT)等方法優化性能,充分發揮其在 “將復雜問題轉化為可執行規則” 上的優勢。