1. 程式人生 > >10.專案實戰-交易資料異常檢測

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的數量一致

與下采樣相比,過取樣後得出的模型整體精度會高些,召回率會低點。建議採用過取樣,資料越多越準確嘛