pgupta26dec/sentinel-e2e-financial-anamoly-detection

GitHub: pgupta26dec/sentinel-e2e-financial-anamoly-detection

一个基于本地现代数据栈的无监督金融异常检测项目,旨在以低误报率识别欺诈交易。

Stars: 0 | Forks: 0

# 🛡️ 项目哨兵:端到端金融异常检测 **一个使用 DuckDB、dbt、单类 SVM 和 Airflow 3.0 构建的生产级本地欺诈检测流水线。** ## 📌 摘要 在金融服务中,欺诈是“ haystack 中的针”,通常仅占总交易的 0.2% 以下。本项目实现了一个 **无监督异常检测** 框架,通过学习正常交易的“边界”来识别欺诈者。 为了优先考虑迭代速度并消除云计算成本,该项目绕过了传统的云数据仓库(如 Snowflake)。相反,它实现了一个高度优化的 **本地现代数据栈(MDS)** 架构,能够在几秒钟内本地处理超过 284,000 笔交易。 ## 🏗️ 架构与数据流 该流水线是完全自动化并在本地编排的: 1. **数据摄取**:原始交易日志(卡内基大学信用卡数据集)直接查询到本地 **DuckDB** 数据库中。 2. **转换(dbt)**: * `stg_transactions`:数据清洗、模式强制和时间戳标准化。 * `fct_transaction_features`:使用高级 SQL 窗口函数(`LAG`、`ROWS BETWEEN`)来构建行为特征,例如 `seconds_since_last_txn`、`rolling_avg_amount_last_10` 和 `is_volume_spike`。 3. **建模(Python & Scikit-Learn)**: * **算法**:带 RBF 核的单类支持向量机(OC-SVM)。 * **特征**:构建的金融指标与 28 个匿名化 PCA 交互特征(`v1`-`v28`)相结合。 * **调优**:超参数优化(`nu=0.02`,`gamma=0.01`),以平衡严格性与边界形状。 4. **可视化(Streamlit)**:标记的异常被推送到一个实时交互式仪表盘,供欺诈分析师手动审查。 5. **编排(Apache Airflow 3.0)**:整个流程(dbt 模型 ➔ 机器学习推理)通过每日 DAG 自动执行。 ## 🛠️ 技术栈 | 层 | 工具 | | :--- | :--- | | **数据仓库** | DuckDB(嵌入式,本地) | | **转换** | dbt(数据构建工具) | | **语言** | Python 3.9+ | | **机器学习** | Scikit-Learn(单类 SVM、StandardScaler) | | **编排** | Apache Airflow 3.0 | | **可视化** | Streamlit | ## 📊 业务影响与模型性能 无监督模型必须在检测真实欺诈与误报带来的运营成本(客户摩擦)之间取得平衡。 **最终模型结果(在 284,806 笔交易上测试):** * **召回率(捕获率)**:`81.71%`(成功盲检 492 笔真实欺诈中的 402 笔)。 * **全局误报率**:`1.8%`(仅标记了总正常交易量的极小部分)。 * *业务背景*:该模型作为一个高度有效的初级防御层,在需要人工审核或短信验证的交易量不到 2% 的情况下,阻止了超过 80% 的欺诈。 ## 🗂️ 仓库结构 ``` ├── dags/ # Airflow 3.0 orchestration │ └── sentinel_dag.py # DAG linking dbt runs and ML inference ├── dbt/ # dbt models for DuckDB transformations │ ├── models/ │ │ ├── staging/ # Cleaning raw data │ │ └── marts/ # Feature engineering (Window functions) ├── src/ # Python source code │ ├── anomaly_detector.py # Training and inference for the OC-SVM │ └── app.py # Streamlit UI Command Center ├── data/ # Raw CSVs and sentinel.duckdb (git-ignored) ├── project_description.md # Detailed project narrative and case study └── README.md # Project overview ``` ## 🚀 如何在本地运行 1. **激活虚拟环境**: ```bash source venv/bin/activate ``` 2. **启动 Airflow 3.0 流水线(需要 3 个终端)**: ```bash export AIRFLOW_HOME=$(pwd)/airflow_home export AIRFLOW__CORE__AUTH_MANAGER="airflow.providers.fab.auth_manager.fab_auth_manager.FabAuthManager" export AIRFLOW__CORE__DAGS_FOLDER=$(pwd)/dags # 终端 1 airflow api-server -p 8080 # 终端 2 airflow scheduler # 终端 3 airflow dag-processor ``` 访问 `http://localhost:8080` 以触发 `project_sentinel_pipeline`。 3. **启动 Streamlit 仪表盘**: ```bash streamlit run src/app.py ```
标签:Apache Airflow, dbt, DuckDB, gamma=0.01, Kaggle, Kubernetes, MDS, nu=0.02, One-Class SVM, PCA, RBF核, Streamlit, 交易监控, 代码示例, 反欺诈, 异常检测, 成本优化, 数据分析, 数据工程, 数据管道, 无监督学习, 时间序列特征, 本地数据栈, 本地计算, 欺诈检测, 滚动窗口, 特征工程, 秒级处理, 自动化DAG, 访问控制, 超参数调优, 软件工程, 逆向工具, 金融