目錄
一、數據背景與預處理
1.數據前五行
2.數據預處理步驟
二、邏輯回歸的正則化參數選擇
1.交叉驗證選擇最優C
2.為什么選擇召回率作為評估指標?
三、參數選擇的核心結論
四、后續優化方向
在銀行貸款審批場景中,準確判斷貸款人是否符合貸款條件(允許貸款為 0,拒絕貸款為 1)是風險控制的核心環節。本文將以銀行貸款數據為例,詳解邏輯回歸模型的參數選擇過程,幫助提升貸款審批的準確性。
一、數據背景與預處理
本次使用的銀行貸款數據包含以下關鍵字段:
- Time:貸款人標識(同一人可能在不同銀行有記錄)
- Amount:貸款人收入(單位:萬元)
- V1-V28:28 個匿名特征(可能包含信用評分、負債情況等)
- Class:貸款審批結果(0 = 允許貸款,1 = 拒絕貸款)
1.數據前五行
"Time","V1","V2","V3","V4","V5","V6","V7","V8","V9","V10","V11","V12","V13","V14","V15","V16","V17","V18","V19","V20","V21","V22","V23","V24","V25","V26","V27","V28","Amount","Class"
0,-1.3598071336738,-0.0727811733098497,2.53634673796914,1.37815522427443,-0.338320769942518,0.462387777762292,0.239598554061257,0.0986979012610507,0.363786969611213,0.0907941719789316,-0.551599533260813,-0.617800855762348,-0.991389847235408,-0.311169353699879,1.46817697209427,-0.470400525259478,0.207971241929242,0.0257905801985591,0.403992960255733,0.251412098239705,-0.018306777944153,0.277837575558899,-0.110473910188767,0.0669280749146731,0.128539358273528,-0.189114843888824,0.133558376740387,-0.0210530534538215,149.62,"0"
0,1.19185711131486,0.26615071205963,0.16648011335321,0.448154078460911,0.0600176492822243,-0.0823608088155687,-0.0788029833323113,0.0851016549148104,-0.255425128109186,-0.166974414004614,1.61272666105479,1.06523531137287,0.48909501589608,-0.143772296441519,0.635558093258208,0.463917041022171,-0.114804663102346,-0.183361270123994,-0.145783041325259,-0.0690831352230203,-0.225775248033138,-0.638671952771851,0.101288021253234,-0.339846475529127,0.167170404418143,0.125894532368176,-0.00898309914322813,0.0147241691924927,2.69,"0"
1,-1.35835406159823,-1.34016307473609,1.77320934263119,0.379779593034328,-0.503198133318193,1.80049938079263,0.791460956450422,0.247675786588991,-1.51465432260583,0.207642865216696,0.624501459424895,0.066083685268831,0.717292731410831,-0.165945922763554,2.34586494901581,-2.89008319444231,1.10996937869599,-0.121359313195888,-2.26185709530414,0.524979725224404,0.247998153469754,0.771679401917229,0.909412262347719,-0.689280956490685,-0.327641833735251,-0.139096571514147,-0.0553527940384261,-0.0597518405929204,378.66,"0"
1,-0.966271711572087,-0.185226008082898,1.79299333957872,-0.863291275036453,-0.0103088796030823,1.24720316752486,0.23760893977178,0.377435874652262,-1.38702406270197,-0.0549519224713749,-0.226487263835401,0.178228225877303,0.507756869957169,-0.28792374549456,-0.631418117709045,-1.0596472454325,-0.684092786345479,1.96577500349538,-1.2326219700892,-0.208037781160366,-0.108300452035545,0.00527359678253453,-0.190320518742841,-1.17557533186321,0.647376034602038,-0.221928844458407,0.0627228487293033,0.0614576285006353,123.5,"0"
2.數據預處理步驟
首先對數據進行標準化和特征篩選(代碼來自銀行貸款(參數選擇).py):
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler# 讀取數據
data = pd.read_csv('creditcard.csv')# 標準化收入特征(消除量綱影響)
scaler = StandardScaler()
data['Amount'] = scaler.fit_transform(data[['Amount']])# 移除重復標識特征(Time為貸款人在不同銀行的記錄,對審批結果無直接影響)
data = data.drop(['Time'], axis=1)# 劃分特征與標簽
X = data.iloc[:, :-1] # 所有特征(含V1-V28和標準化后的Amount)
y = data['Class'] # 審批結果(0/1)
預處理的核心目的是:
- 標準化連續特征(如收入),避免因數值范圍差異影響模型權重
- 剔除無關特征(如 Time),減少噪聲干擾
二、邏輯回歸的正則化參數選擇
邏輯回歸中,正則化參數C
是控制模型復雜度的關鍵。C
值越小,正則化強度越高,可有效防止過擬合(過度擬合訓練數據中的噪聲)。
1.交叉驗證選擇最優C
通過 8 折交叉驗證,在不同C
值下評估模型的召回率(重點關注拒絕貸款的識別能力):
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split, cross_val_score# 劃分訓練集(70%)和測試集(30%)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1000 # 固定隨機種子,保證結果可復現
)# 候選參數范圍
c_param_range = [0.01, 0.1, 1, 10, 100]
scores = []# 遍歷參數并評估
for c in c_param_range:# 初始化模型(L2正則化, solver選擇lbfgs)clf = LogisticRegression(C=c, # 正則化參數penalty='l2', # L2正則化(防止系數過大)solver='lbfgs', # 優化算法max_iter=1000 # 增加迭代次數確保收斂)# 交叉驗證計算召回率(關注拒絕貸款的識別能力)recall_scores = cross_val_score(clf, X_train, y_train, cv=8, scoring='recall')mean_recall = recall_scores.mean() # 平均召回率scores.append(mean_recall)print(f"C={c}時,平均召回率:{mean_recall:.4f}")# 選擇最優參數(召回率最高對應的C)
best_c = c_param_range[np.argmax(scores)]
print(f"\n最優懲罰因子為:{best_c}")
2.為什么選擇召回率作為評估指標?
在貸款審批中:
- 召回率(針對 Class=1)= 正確拒絕的貸款申請 / 實際應拒絕的貸款申請
- 高召回率可減少 "誤批" 風險(將本應拒絕的申請誤判為允許),降低銀行壞賬率
三、參數選擇的核心結論
-
C
值與模型的關系:- 過小的
C
(如 0.01)會導致模型欠擬合(過度簡化,識別能力不足) - 過大的
C
(如 100)可能導致過擬合(過度關注訓練數據細節,泛化能力差)
- 過小的
-
業務導向的參數選擇:
銀行需在 "審批效率" 和 "風險控制" 間平衡:- 若側重風險控制(減少壞賬),應選擇召回率更高的
C
值 - 若側重用戶體驗(減少誤拒),可適當降低對召回率的要求
- 若側重風險控制(減少壞賬),應選擇召回率更高的
四、后續優化方向
-
結合采樣技術:對于不平衡數據(如拒絕貸款的樣本占比低),可采用上采樣(SMOTE)或下采樣平衡數據分布(參考銀行貸款2(下采樣).py和銀行貸款3(過采樣).py)。
-
閾值調整:邏輯回歸默認以 0.5 為分類閾值,可通過調整閾值進一步優化召回率(如降低閾值使模型更傾向于拒絕高風險申請)。
-
特征工程:深入分析 V1-V28 等匿名特征與貸款審批的關聯性,篩選更具預測力的特征。
通過科學的參數選擇和優化,邏輯回歸模型可為銀行貸款審批提供可靠的決策支持,在控制風險的同時提高審批效率。