paras-the-coder/FraudGuard-Ai

GitHub: paras-the-coder/FraudGuard-Ai

FraudGuard AI 是一个结合机器学习与业务规则的汽车保险理赔欺诈检测系统,通过风险评分和可解释性分析帮助调查人员高效识别可疑理赔。

Stars: 1 | Forks: 0

# FraudGuard AI — 保险理赔欺诈检测系统 [![Python](https://img.shields.io/badge/Python-3.11-blue?style=flat-square&logo=python)](https://python.org) [![Streamlit](https://img.shields.io/badge/Streamlit-1.57-FF4B4B?style=flat-square&logo=streamlit)](https://streamlit.io) [![scikit-learn](https://img.shields.io/badge/scikit--learn-1.6-F7931E?style=flat-square&logo=scikit-learn)](https://scikit-learn.org) [![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE) 🔗 **[在线演示 → fraudguard-ai.streamlit.app](https://fraudguard-ai-ljpybjziicpkymlpuzbsus.streamlit.app/)** FraudGuard AI 是一个由 Machine Learning 驱动的保险理赔欺诈检测系统,旨在识别可疑的汽车保险理赔并支持欺诈调查工作流。 该项目结合了: * Machine Learning * 业务规则智能 * 交互式分析仪表板 * 风险评分和报告 # 应用预览 image # 问题描述 每年,保险欺诈都会给保险公司造成巨大的经济损失。欺诈性理赔可能包括: * 虚假事故 * 夸大的伤害索赔 * 虚高的维修费用 * 人为策划的碰撞 * 虚假的盗窃报告 手动审查每一项理赔既昂贵又耗时。 FraudGuard AI 有助于尽早识别高风险理赔,确定调查优先级,并提高欺诈筛查效率。 # 保险领域 本项目重点关注: ``` Automobile Insurance Claim Fraud Detection ``` 数据集包含汽车事故和保险理赔记录,其中包括: * 客户信息 * 保单详情 * 事故详情 * 理赔财务信息 * 车辆信息 * 欺诈标签 目标变量: ``` Fraudulent Claim vs Legitimate Claim ``` # 使用的特征 ### 理赔财务特征 * total_claim_amount * injury_claim * vehicle_claim * property_claim * policy_annual_premium * policy_deductable ### 事故特征 * incident_type * collision_type * incident_severity * incident_hour_of_the_day * number_of_vehicles_involved * bodily_injuries * witnesses * police_report_available * property_damage ### 客户与保单特征 * age * months_as_customer * insured_occupation * insured_education_level * insured_relationship * policy_state ### 车辆与位置特征 * auto_make * auto_model * auto_year * incident_state * incident_city # 特征工程 为了提高欺诈检测性能,创建了额外的工程特征: * claim_ratio * incident_year * vehicle_age * days_between_policy_incident * csl_per_person * csl_per_accident 这些工程特征有助于捕捉可疑的理赔行为和与欺诈相关的模式。 # 模型性能 本项目最终选择的模型是 **Logistic Regression**。 尽管测试了多种模型,包括 **Random Forest** 和 **XGBoost**,但 Logistic Regression 被选为最佳的生产就绪模型,因为它在欺诈检测方面实现了最佳的平衡,尤其是在 **recall** 上。 | 模型 | Accuracy | Recall | F1 Score | F2 Score | ROC-AUC | | --- | --- | --- | --- | --- | --- | | **Logistic Regression** ✓ | 0.845 | **0.857** | **0.730** | **0.802** | 0.849 | | Random Forest | 0.830 | 0.755 | 0.685 | 0.726 | 0.833 | | XGBoost (SMOTE, tuned) | 0.855 | 0.776 | 0.724 | 0.754 | 0.860 | | XGBoost (scale_pos_weight, tuned) | 0.845 | **0.857** | **0.730** | **0.802** | 0.841 | ## 为什么选择 Logistic Regression 在保险欺诈检测中,**漏掉欺诈性理赔比将合法理赔送去审查的成本更高**。正因为如此,选择模型主要基于 **Recall** 和 **F2 Score**,而不仅仅是 accuracy。 虽然最初不平衡的 XGBoost 漏掉了更多的欺诈案例,但通过类别权重平衡(`scale_pos_weight`)和超参数调优重新训练 XGBoost 后,它能够匹配 Logistic Regression 最高的 recall(86%)和 F2 score(0.802)。 然而,**Logistic Regression 仍然被选为最终的生产模型**,因为它在与调优后的 XGBoost 提供相同的 recall 和 F2 score 的同时,还具有以下优势: - **高度可解释:** 更容易向理赔理算员、调查人员和监管机构解释预测逻辑和特征贡献。 - **更简单、更快速:** 与复杂的树集成相比,在生产环境中的训练、运行和维护速度更快,且零部署开销。 最终模型并非旨在自动拒绝理赔。相反,它作为一个**欺诈风险筛查工具**,帮助确定手动或 SIU 审查的理赔优先级。 ### 模型性能可视化 image ## 可解释性与风险解读 FraudGuard AI 通过 `shap.LinearExplainer` 使用 **SHAP (SHapley Additive exPlanations)** 来生成每次预测的实例级解释。 每项预测都会显示对于该特定理赔,哪些特征推高或降低了欺诈概率 —— 这不是全局的模型权重,而是针对特定理赔的推理过程。 SHAP 分析表明,`incident_severity_major_damage` 是最强的 全局欺诈信号。出现在 SHAP top values 中的某些被保险人爱好等特征,已被确认可能是 由于小数据集(约 1000 行)导致的伪相关, 而不是真正的因果欺诈指标。 这些解释支持欺诈风险解读工作流,但不应将其视为 欺诈的法律或因果证明。 # 混合欺诈检测逻辑 FraudGuard AI 结合了: 1. Machine Learning 概率评分 2. 额外的业务规则欺诈分析(模型后业务规则调整) 业务规则信号示例: * 异常高的伤害索赔 * 缺失的警方报告 * 不一致的理赔明细 * 可疑的时间模式 * 虚高的理赔与保费比率 这提高了欺诈筛查的真实性和操作可解释性。 # 应用功能 * 多页 Streamlit 仪表板 * 欺诈概率评分 * 风险分类 * 可解释 AI 输出 * 可视化风险驱动因素 * 可下载的 HTML 调查报告 ### 预测演示 Screenshot 2026-05-17 132935 # 技术栈 - **编程与数据处理**: Python,Pandas,NumPy - **机器学习**: Scikit-learn, Imbalanced-learn / SMOTE, Logistic Regression, Random Forest, XGBoost, 用于模型序列化的 Joblib - **数据可视化**: Plotly, Matplotlib, Seaborn - **Web 应用程序**: Streamlit, 自定义 CSS - **模型可解释性与报告**: SHAP (LinearExplainer), 单次预测的 waterfall 贡献图, 业务规则欺诈信号, HTML 和 PDF 调查报告生成 ### 部署 * Streamlit Community Cloud # 📁 项目结构 ``` FraudGuard-AI/ │ ├── app.py ├── app_pages/ ├── src/ ├── models/ ├── data/ ├── assets/ ├── notebooks/ ├── tests/ (pytest suite for data pipeline and model validation) ├── requirements.txt └── README.md ``` # 系统流程 ``` Raw Insurance Claim │ ▼ Feature Engineering (claim_ratio, vehicle_age, days_between_policy_incident, csl splits) │ ▼ Logistic Regression Pipeline (StandardScaler + OneHotEncoder + SMOTE + LR) │ ▼ Base Fraud Probability Score │ ▼ Business Rule Adjustment (injury-to-damage ratio, missing police report, short tenure, claim dominance) │ ▼ Final Risk Score + Signals │ ├── Low (<35%) → Auto-approve ├── Medium (35–65%) → Manual review └── High (>65%) → Escalate to SIU ``` # 局限性 FraudGuard AI 是一款欺诈筛查支持工具,而不是最终的欺诈决策系统。 - 预测是基于概率的,因此模型有时可能会错误地预测欺诈或漏掉一些欺诈案例。 - 数据集的大小和范围有限。现实世界中的保险欺诈系统需要更大、更多样化的数据集。 - 仍需人工调查以做出最终的欺诈决定。 - 部署的模型优先考虑可解释性和 recall,而不是最大化的预测性能。 - 应用程序中添加的某些业务规则检查是手动设计的,可能无法完全代表真实的保险公司工作流。 - 模型性能基于历史标记数据,在应对全新的或不断演变的欺诈模式时可能表现不佳。 - 某些输入字段为了演示目的进行了简化或内部生成。 - 模型可能会产生假阳性和假阴性。 - 特征贡献解释仅显示哪些因素影响了预测。它们不应被视为欺诈的法律证明。 - 该应用程序不包括生产监控、漂移检测或与实时理赔系统的集成。 应将 FraudGuard AI 视为欺诈风险评估和调查支持工具,而不是全自动的欺诈检测系统。 # 未来改进 - 用于实时理赔评分 API 的 FastAPI 后端 - 集成学习模型(堆叠 LR + XGBoost) - 与理赔管理系统的实时 API 集成 - 用户身份验证和基于角色的访问控制 * 理赔历史追踪和趋势分析 - 生产级监控和模型漂移检测 - 更大、更多样化的训练数据集,以减少伪相关 # 我学到了什么 * 构建了一个端到端的 ML pipeline,在 imbalanced-learn `Pipeline` 中使用 SMOTE,以防止在交叉验证期间发生数据泄漏 * 使用 `make_scorer(fbeta_score, beta=2)` 作为 `RandomizedSearchCV` 的评分函数,以便超参数搜索直接针对欺诈 recall 进行优化,而不是 accuracy * 在模型概率评分的基础上设计了业务规则后处理,以捕捉仅靠统计特征无法表达的欺诈信号 * 实现了基于系数的 Logistic Regression 特征贡献解释,作为 SHAP 的轻量级、兼容生产的替代方案 * 理解了在像保险欺诈这样不平衡且高成本的分类问题中,为什么 precision-recall 权衡比 accuracy 更重要 # 总结 FraudGuard AI 展示了 Machine Learning 和业务规则智能如何协同工作以支持保险欺诈调查工作流。 该项目不仅关注预测 accuracy,还关注: * 可解释性 * 欺诈推理 * 业务价值 * 调查支持 这使其更接近于真实的欺诈分析应用程序,而不仅仅是一个简单的 ML notebook 项目。
标签:Apex, Kubernetes, Python, 保险业务, 分类算法, 安全规则引擎, 无后门, 机器学习, 欺诈检测, 逆向工具