日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[DA45] 信用卡诈骗分析

發布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [DA45] 信用卡诈骗分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 相關介紹

? ? (一) 類不平衡問題

? ? ? ??在機器學習分類任務中, 類別不平衡是指不同類別的訓練樣例數差別很大.

? ? ? ? 解決類不平衡問題的方法有過抽樣、欠抽樣、閾值移動和組合方法等, 一般來講后兩種方法的效果高于前兩種方法.?

? ? ? ? 更多詳細內容請查看百度百科:?類不平衡問題

? ? (二) 精確率 - 召回率曲線

? ? ? ? sklearn 中的 precision_recall_curve 函數可以通過預測值和真實值來計算精確率 - 召回率曲線.

? ? ? ? 該函數通過傳入樣本的真實類別模型預測樣本的置信分數, 返回精確率數組、召回率數組和對應的閾值數組,通過 matplot.pyplot 工具繪制曲線, 反應了不同概率閾值情況下的精確率和召回率.

? ? (三) ROC 曲線與 AUC?

? ? ? ??接受者操作特性曲線,?又稱為感受性曲線, 它是一種非常有效的模型評價方法, 可為選定臨界值給出定量提示. 將靈敏度設在縱軸, 1-特異性設置在橫軸, 就可以得出 ROC 曲線圖.

? ? ? ? 與精確率 - 召回率曲線類似, sklearn 中的?roc_curve 函數, 返回的是假正例率 fpr 數組、真正例率 tpr 數組和對應的閾值數組.?

? ? ? ? AUC?被定義為 ROC 曲線下與坐標軸圍成的面積, 它的大小與每種模型優劣密切相關, 反映分類器正確分類的統計概率.?由于ROC 曲線一般都處于 y = x 這條直線的上方, 所以 AUC 的取值范圍在0.5和1之間.

? 從AUC 判斷分類器(預測模型)優劣的標準:? (以下數據摘自百度百科)

  • AUC = 1,是完美分類器。

  • AUC = [0.85, 0.95], 效果很好

  • AUC = [0.7, 0.85], 效果一般

  • AUC = [0.5, 0.7],效果較低,但用于預測股票已經很不錯了

  • AUC = 0.5,跟隨機猜測一樣(例:丟銅板),模型沒有預測價值。

  • AUC < 0.5,比隨機猜測還差;但只要總是反預測而行,就優于隨機猜測。

?

二. 數據分析?

? ? (一) 數據加載與探索

? ? ? ? 數據為2013年9月份兩天時間內的信用卡交易數據, 284807筆交易中只有492筆是欺詐行為, 由于數據分析的關注點為欺詐交易, 感興趣的主類占比較少, 屬于典型的類不平衡問題.

? ? ? ? 輸入數據一共包括了28個特征 V1 到 V28 對應的取值, 以及交易時間 Time 和交易金額 Amount. 為了保護數據隱私, 原始數據中?V1 到 V28 為 PCA 變換得到的結果. 另外字段 Class 代表該筆交易的分類, Class=0代表正常, Class=1代表欺詐. 數據中無缺失值.

正常交易數與欺詐交易數

?

從圖中看出的類不平衡

?

? ? (二) 數據預處理

? ? ? ?V1 - V28 的特征值都經過 PCA 的變換, Time 和 Amount 兩個字段還需要進行規范化. Time 字段和交易本身是否為欺詐交易無關, 因此不作為特征選擇, 所以只需要對 Amount 做數據規范化. 同時數據沒有專門的測試集, 需使用 train_test_split 對數據集進行劃分, 由于是欺詐交易數較少, 傳入參數?stratify=labels 確保欺詐交易與正常交易的比例一致.

? ? ? ? 相關代碼:

# 標準化 ss = StandardScaler() data['Amount'] = ss.fit_transform(data['Amount'].values.reshape(-1, 1))# 準備訓練集和測試集 labels = data['Class'].values features = data.drop(['Time', 'Amount', 'Class'], axis=1).values train_x, test_x, train_y, test_y = train_test_split(features, labels, test_size=0.1, stratify=labels)

? ? (三) 建模與預測

? ? ? ? 使用邏輯回歸模型進行分類, 由于本次分析的關注點不在于類不平衡問題樣本數據的優化, 故直接使用第(二)步處理好的數據進行訓練與預測.

? ? ? ? 因為數據集存在類不平衡問題, 故不能使用一般的評價方式對模型進行評定, 在此使用了 f1得分、模型評價報告、混淆矩陣對模型進行了大致評估, 代碼與結果如下:

# 定義混淆矩陣可視化函數 def cm_plot(data_matrix):sns.heatmap(data_matrix, annot=True, fmt='d', cmap='Greens')ax = plt.gca()ax.xaxis.set_ticks_position('top') # x 軸刻度顯示在頂端ax.xaxis.set_label_position('top') # x 軸標簽顯示在頂端ax.spines['right'].set_color('none')ax.spines['bottom'].set_color('none')plt.ylabel('True label')plt.xlabel('Predicted label')plt.show()# 邏輯回歸分類 clf = LogisticRegression() clf.fit(train_x, train_y) predict_y = clf.predict(test_x)# f1得分 f1 = f1_score(test_y, predict_y) print('f1得分:', f1)# 模型評價 report = classification_report(test_y, predict_y) print(report)# 混淆矩陣 matrix = confusion_matrix(test_y, predict_y) cm_plot(matrix) f1 得分 與 模型評價報告 混淆矩陣可視化

?

? ? ? ? 從混淆矩陣中可以看出, 測試集中有正常交易 (28430 + 2) 例, 欺詐交易 (16 + 33) 例, 有 2 例正常的交易被模型誤判為欺詐交易, 有 16 例欺詐交易被模型誤判為了正常交易.

? ? ? ? 精確率 P = TP / (TP + FP) = 33 / (33 + 2) = 0.94

? ? ? ? 召回率?R = TP / (TP + FN) = 33 / (33 + 16)? = 0.67

? ? ? ? f1 得分為 0.79

? ? (四) 曲線繪制

? ? ? ? 繪制精確率 - 召回率曲線與 ROC 曲線, 再通過兩種方法計算 ROC 曲線的 AUC 值.

? ? 相關代碼:

# 定義曲線函數 def curve_plot(x_data, y_data, x_label, y_label, title_name):plt.plot(x_data, y_data, linewidth=2)plt.fill_between(x_data, y_data, step='post', alpha=0.2, color='b')plt.title(title_name)plt.xlabel(x_label)plt.ylabel(y_label)plt.xlim(0, 1.05)plt.ylim(0, 1.05)plt.show()# 樣本的置信分數 score_y = clf.decision_function(test_x)# 精確率-召回率 曲線 precision, recall, thresholds1 = precision_recall_curve(test_y, score_y) curve_plot(precision, recall, '精確率', '召回率', '精確率-召回率 曲線')# ROC 曲線 fpr, tpr, thresholds2 = roc_curve(test_y, score_y) curve_plot(fpr, tpr, '假正例率', '真正例率', 'ROC 曲線')# 計算 AUC print('AUC_1:', roc_auc_score(test_y, score_y)) print('AUC_2:', auc(fpr, tpr))

? ? ? ??

?

?

? ? ? ? 由計算得?AUC 值為 0.96 , 對比百度百科的 AUC 評判優劣標準, 該邏輯回歸分類器屬于比較好的分類器.

? ? ? ? 但是從混淆矩陣上看, 分類器的精確率雖然較高, 但是召回率并不理想, 而且從精確率 - 召回率曲線上看, 閾值移動可提高召回率, 但精確率的犧牲也比較大, 為了解決這種類不平衡問題, 還是需要考慮使用更好的方法, 在此不做進一步分析.

?

?

總結

以上是生活随笔為你收集整理的[DA45] 信用卡诈骗分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。