SMOTE-XGBoost實戰:金融風控中欺詐檢測的樣本不平衡解決方案

1. 行業問題背景

(1)金融欺詐檢測的特殊性
在支付風控領域,樣本不平衡是核心痛點。Visa 2023年度報告顯示,全球信用卡欺詐率約為0.6%,但單筆欺詐交易平均損失高達$500。傳統機器學習模型在此場景下表現堪憂:

# 典型分類問題表現
from sklearn.dummy import DummyClassifier
dummy = DummyClassifier(strategy='most_frequent').fit(X_train, y_train)
print(classification_report(y_test, dummy.predict(X_test)))
# 輸出結果:
#               precision    recall  f1-score  support
#           0       0.99      1.00      1.00     28432
#           1       0.00      0.00      0.00       172

(2)現有解決方案的三大缺陷

  • 隨機欠采樣:損失90%以上的正常樣本信息
  • 代價敏感學習:需精確調整class_weight參數
  • ADASYN等變種:對離散型交易特征(如MCC碼)適應性差
3% 32% 33% 33% 不同方法的信息保留率 隨機欠采樣 SMOTE Borderline-SMOTE 本文方法

圖1:各采樣方法的信息保留對比(基于IEEE-CIS數據集測試)

2. 技術方案深度解析

(1)動態密度SMOTE算法

核心改進在于特征空間密度感知:

import numpy as np
from sklearn.neighbors import NearestNeighborsclass DensityAwareSMOTE:def __init__(self, k=5, threshold=0.7):self.k = kself.density_threshold = thresholddef _calc_density(self, X):nbrs = NearestNeighbors(n_neighbors=self.k).fit(X)distances, _ = nbrs.kneighbors(X)return 1 / (distances.mean(axis=1) + 1e-6)def resample(self, X, y):densities = self._calc_density(X)borderline = densities < np.quantile(densities, self.density_threshold)X_min = X[y==1]X_border = X_min[borderline[y==1]]# 只在邊界區域過采樣sm = SMOTE(sampling_strategy=0.5, k_neighbors=3)return sm.fit_resample(np.vstack([X, X_border]), np.hstack([y, np.ones(len(X_border))])

關鍵技術創新點:

  1. 基于k近鄰距離的動態密度計算
  2. 只對決策邊界附近的少數類樣本過采樣
  3. 自適應調整k值(稀疏區域k減小,密集區k增大)

(2)XGBoost的欺詐檢測優化

針對金融場景的特殊參數配置:

def get_xgb_params(scale_pos_weight, feature_names):return {'objective': 'binary:logistic','tree_method': 'hist',  # 優化內存使用'scale_pos_weight': scale_pos_weight,'max_depth': 8,  # 防止過擬合'learning_rate': 0.05,'subsample': 0.8,'colsample_bytree': 0.7,'reg_alpha': 1.0,  # L1正則'reg_lambda': 1.5,  # L2正則'enable_categorical': True,  # 支持類別特征'interaction_constraints': [[i for i,name in enumerate(feature_names) if name.startswith('geo_')],  # 地理特征組[i for i,name in enumerate(feature_names)if name.startswith('device_')]  # 設備特征組]}

3. 全流程實戰案例

(1)特征工程體系

原始交易數據
時間特征
設備指紋
行為序列
小時段交易頻次
設備異常評分
最近10次交易金額標準差
特征矩陣

圖2:金融風控特征工程架構

關鍵特征示例:

# 時間窗口特征
df['hourly_txn_count'] = df.groupby([df['user_id'], df['timestamp'].dt.hour]
)['amount'].transform('count')# 設備聚類特征
from sklearn.cluster import DBSCAN
device_features = ['ip_country', 'os_version', 'screen_resolution']
cluster = DBSCAN(eps=0.5).fit(df[device_features])
df['device_cluster'] = cluster.labels_

(2)模型訓練與調優

完整訓練流程:

# 分層時間分割
time_split = TimeSeriesSplit(n_splits=5)
for train_idx, test_idx in time_split.split(X, y):X_train, X_test = X.iloc[train_idx], X.iloc[test_idx]y_train, y_test = y.iloc[train_idx], y.iloc[test_idx]# 動態SMOTE處理sm = DensityAwareSMOTE()X_res, y_res = sm.resample(X_train, y_train)# XGBoost訓練model = xgb.XGBClassifier(**params)model.fit(X_res, y_res,eval_set=[(X_test, y_test)],eval_metric=['aucpr','recall@80'])# 閾值優化precision, recall, thresholds = precision_recall_curve(y_test, model.predict_proba(X_test)[:,1])optimal_idx = np.argmax(recall[precision>0.8])optimal_threshold = thresholds[optimal_idx]

(3)性能對比實驗

在IEEE-CIS數據集上的測試結果:

方法RecallPrecisionAUC-PR推理時延(ms)
原始XGBoost0.620.450.5112
SMOTE+XGBoost0.780.530.6315
代價敏感學習0.710.580.6513
本文方法0.850.610.7218

4. 生產環境部署方案

(1)在線推理優化

# Triton推理服務配置示例
name: "fraud_detection"
platform: "onnxruntime_onnx"
max_batch_size: 1024
input [{ name: "input", data_type: TYPE_FP32, dims: [45] }
]
output [{ name: "output", data_type: TYPE_FP32, dims: [1] }
]
instance_group [{ count: 2, kind: KIND_GPU }
]

(2)動態閾值調整機制

流量<1000TPS
流量>=1000TPS
recall@85
recall@75
監控
低負載
高負載
嚴格模式
寬松模式

圖4:動態閾值狀態機

5. 業務價值與未來方向

(1)已實現業務指標

  • 欺詐召回率提升23個百分點
  • 誤報率降低15%(相比基線)
  • 單筆交易檢測耗時<20ms

(2)持續優化方向

  1. 聯邦學習架構:在銀行間建立聯合模型
  2. 圖神經網絡:捕捉交易關系網絡特征
  3. 可解釋性增強:SHAP值實時計算
# SHAP解釋示例
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test[:1000])
shap.summary_plot(shap_values, X_test[:1000])

附錄:工程注意事項

  1. 特征存儲優化
# 使用Parquet格式存儲
df.to_parquet('features.parquet',engine='pyarrow',partition_cols=['dt'])
  1. 模型版本管理
# MLflow記錄實驗
mlflow xgboost.autolog()
mlflow.log_metric('recall@80', 0.85)
  1. 異常處理機制
class FraudDetectionError(Exception):passdef predict(request):try:if not validate_input(request):raise FraudDetectionError("Invalid input")return model.predict(request)except Exception as e:logging.error(f"Prediction failed: {str(e)}")raise

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/85725.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85725.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85725.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Instagram下載保存 -下載狗解析工具

在日常瀏覽Instagram時&#xff0c;是否有過這樣的煩惱&#xff1a;看到一個精彩的視頻&#xff0c;想要保存下來&#xff0c;卻不知道如何操作&#xff1f;有時候我們會看到一些特別的旅行視頻、搞笑片段&#xff0c;甚至是喜歡的名人分享的內容&#xff0c;簡直是舍不得錯過。…

flink如何基于Pekko實現RPC調用

摘要 通過閱讀flink源碼&#xff0c;了解flink是如何基于Pekko實現遠程RPC調用的 Pekko實現遠程調用 Flink 的 RPC 框架底層是構建在 Pekko 的 actor 模型之上的&#xff0c;了解Pekko如何使用&#xff0c;對后續源碼的閱讀有幫助。 Apache Pekko&#xff08;原為 Akka 的一…

Kafka節點注冊沖突問題分析與解決

一、核心錯誤分析 ERROR Error while creating ephemeral at /brokers/ids/1, node already exists and owner does not match org.apache.zookeeper.KeeperException$NodeExistsException: KeeperErrorCode NodeExists問題本質&#xff1a;ZooKeeper中已存在ID為1的broker節…

突破PPO訓練效率瓶頸!字節跳動提出T-PPO,推理LLM訓練速度提升2.5倍

突破PPO訓練效率瓶頸&#xff01;字節跳動提出T-PPO&#xff0c;推理LLM訓練速度提升2.5倍 在大語言模型&#xff08;LLM&#xff09;通過長思維鏈&#xff08;CoT&#xff09;展現出強大推理能力的當下&#xff0c;強化學習&#xff08;RL&#xff09;作為關鍵技術卻面臨訓練…

【Python】dictionary

1 字典功能 字典是可變容器模型&#xff0c;且可存儲任意類型對象&#xff1b; 字典的每個鍵值對 <key: value> 用冒號 : 分割&#xff0c;每個對之間用逗號(,)分割&#xff0c;整個字典包括在花括號 {} 中 ,格式如下所示&#xff1a; d {key1 : value1, key2 : value…

【python】If 語句

1 使用if 進行條件判斷 1.1 檢查字符串是否相等 car bmw car BMW # FALSEcar bmw car.upper() BMW # true # 變小寫用方法&#xff1a;lower1.2 檢查字符串是否不相等 my_car yadeaif my_car ! Audi:print("Buy one! Buy one! Buy one!")1.3 比較數字 answe…

Knife4j 使用詳解

一、概述 Knife4j 是一款基于 Swagger 的開源 API 文檔工具&#xff0c;旨在為 Java 開發者提供更美觀、功能更強大的 API 文檔生成、展示和調試體驗。它是 Swagger-Bootstrap-UI 的升級版&#xff0c;通過增強 UI 界面和擴展功能&#xff0c;解決了原生 Swagger UI 界面簡陋、…

Java excel坐標計算

package com.common.base.util.excel;/*** excel 坐標計算*/ public class UtilExcelPosi {/*** deepseek生成 ExcelProperty(index UtilExcelPosi.pA)*/public final static int pA 0;public final static int pB 1;public final static int pC 2;public final static i…

【JavaWeb】Servlet+JSP 實現分頁功能

文章目錄 思路數據抽出功能設計 功能模塊工具類前端內容用戶端數據處理 思路 數據抽出 需要顯示的數據&#xff0c;查詢的數據抽出&#xff1b;進行分頁顯示&#xff0c;需要統計抽出的件數&#xff0c;然后根據頁面顯示尺寸調整顯示頁面內容&#xff1b; 功能設計 翻頁需要…

SpringBoot-準備工作-工程搭建

目錄 1.創建空項目 2.檢查項目jdk版本 3.檢查Maven的全局配置 4.配置項目的字符集 5.創建SpringBoot工程 1.創建空項目 2.檢查項目jdk版本 3.檢查Maven的全局配置 4.配置項目的字符集 5.創建SpringBoot工程

01、python實現matlab的插值算法,以及驗證

import numpy as np from scipy.interpolate import griddata import sys def griddata_wrapper(x, y, v, xq, yq, method): """ 包裝scipy的griddata函數,支持單個點或多個點的插值 """ try: # 將輸入轉換為numpy數組…

React ahooks——useRequest

目錄 簡介 1. 核心功能 2. 基本用法 3. 高級用法 &#xff08;1&#xff09;輪詢請求&#xff08;Polling&#xff09; &#xff08;2&#xff09;防抖&#xff08;Debounce&#xff09; &#xff08;3&#xff09;依賴刷新&#xff08;refreshDeps&#xff09; &#x…

re正則、Xpath、BeautifulSouplxml 區別

目錄 1. re 正則表達式2. XPath3. BeautifulSoup + lxml4. 功能特性對比5.對比與建議在網頁數據解析中,正則表達式(re)XPath(常結合lxml)BeautifulSoup(常依賴解析器如lxml)是三種主流技術,各有核心差異和適用場景。 1. re 正則表達式 優勢:文本匹配效率高,尤其適用于…

教師辦工專用 資源包|課件+手抄報+PPT模板+常用表格 PDF格式93GB

如果家里親戚或朋友有走上教育之路的人&#xff0c;給他這份整合可以減輕不少工作負擔&#xff0c;更快地適應教育的節奏。也可以發給孩子的老師讓他在平時做個班級活動的參考 《老師教學辦工資源包》包括手抄報大全、教學計劃、工作總結、培訓手冊、課程表等教學、辦公常用資…

算法第37天| 完全背包\518. 零錢兌換 II\377. 組合總和 Ⅳ\57. 爬樓梯

完全背包 完全背包和01背包的區別 純完全背包&#xff0c;遍歷背包和物品的順序是可以對調的&#xff0c;只要求得出最大價值&#xff0c;不要求湊成總和的元素的順序&#xff1b; 01背包&#xff0c;遍歷背包和物品的順序是不可以對調的&#xff08;一維不行&#xff0c;二維…

七彩喜智慧康養平臺:重構銀發生活的數字守護網

隨著社會老齡化程度的不斷加深&#xff0c;如何讓老年人安享幸福晚年成為社會關注的焦點。 在這一背景下&#xff0c;七彩喜智慧康養平臺應運而生&#xff0c;以創新的科技手段和貼心的服務理念&#xff0c;為老年人的生活帶來了諸多好處&#xff0c;發揮著重要作用&#xff0…

【設計模式】用觀察者模式對比事件訂閱(相機舉例)

&#x1f4f7; 用觀察者模式對比事件訂閱(相機舉例) 標簽&#xff1a;WPF、C#、Halcon、設計模式、觀察者模式、事件機制 在日常開發中&#xff0c;我們經常使用 事件機制&#xff08;Event&#xff09; 來訂閱圖像采集信號。然而當系統日益復雜&#xff0c;多個模塊同時需要響…

【數據分析九:Association Rule】關聯分析

一、數據挖掘定義 數據挖掘&#xff1a; 從大量的數據中挖掘那些令人感興趣的、有用的、隱含的、先前未知的 和可能有用的 模式或知識 &#xff0c;并據此更好的服務人們的生活。 二、四類任務 數據分析有哪些任務&#xff1f; 今天我們來講述其中的關聯分析 三、關聯分析 典…

AWS Security Hub郵件告警設置

問題 需要給AWS Security Hub設置郵件告警。 前提 已經啟用AWS Security Hub。 AWS SNS 創建一個AWS Security Hub告警主題SecurityHub-Topic&#xff0c;如下圖&#xff1a; 創建完成后&#xff0c;訂閱該主題。 AWS EventBridge 設置規則名SecurityHubFindings-Rules…

(OSGB轉3DTiles強大工具)ModelSer--強大的實景三維數據分布式管理平臺

1. ModelSer 能幫我們做什么 1.1 最快速的 osgb 發布 3dtiles 服務 測試的速度大于 10G/分鐘&#xff0c;且速度基本是線性的&#xff08;100G10分鐘&#xff0c;1T100分鐘&#xff09;。支持城市級傾斜數據半天內完成服務發布&#xff0c;并支持數據的單塊更新。 1.2 支持所見…