10.專案實戰-交易資料異常檢測
專案背景:信貸資料,是否是一筆正常、合理的貸款
方案:本case採用LR來作檢測
1、樣本不均衡解決方案:
主要有過取樣、下采樣
程式碼示例(下采樣):
number_records_fraud = len(data[data.Class==1]) fraud_indeces = np.array(data[data.Class==1].index)
normal_indices = data[data.Class == 0].index
random_normal_indices = np.random.choice(normal_indices,number_records_fraud,replace=True) random_normal_indices = np.array(random_normal_indices)
under_sample_indices = np.concatenate([fraud_indeces,random_normal_indices])
under_sample_dfata = data.iloc[under_sample_indices,:]
2、交叉驗證和模型評估
train_test_split(),注意設定random_state
3、召回率和閾值:可以通過混淆矩陣來觀察分佈的變化
4、正則化:L1(權重係數的絕對值之和)和L2(權重係數的平方之和),可以遍歷可能的C值來調整懲罰力度
5、過取樣和SMOTE取樣
from imblearn.over_sampling import SMOTE
oversample = SMOTE(random_state=0)
os_features,os_labels = oversample.fit_sample(feature_train,label_train)
生成後的label為1的與label為0的數量一致
與下采樣相比,過取樣後得出的模型整體精度會高些,召回率會低點。建議採用過取樣,資料越多越準確嘛