metadata
sdk: gradio
title: Insurance App Behavior
emoji: 🏥
colorFrom: purple
colorTo: gray
sdk_version: 6.14.0
python_version: '3.13'
app_file: app.py
pinned: false
tags:
- ml-intern
🏥 保险APP 用户行为分析模型训练平台 v3.0
基于最新研究论文构建的工业级保险用户行为分析平台,支持7大功能模块:演示模式、CSV上传、产品推荐、异常检测、模型管理、生存分析、帮助文档。
🔗 在线体验: https://huggingface.co/spaces/Stephanwu/insurance-app-behavior
📋 功能总览
| Tab | 功能 | 模型/方法 | 参考文献 |
|---|---|---|---|
| 🎲 演示 | 合成数据训练 | GBDT + Random Forest | sklearn |
| 📁 CSV上传 | 真实数据训练 | GBDT + RF + 自动特征工程 | sklearn |
| 🎯 产品推荐 | DIN深度学习 | PyTorch + LocalActivationUnit | DIN KDD 2018 |
| 🔍 异常检测 | TabBERT | PyTorch + Transformer + Focal Loss | TabBERT |
| 💾 模型管理 | HF Hub 保存/加载 | joblib + torch.save | HuggingFace Hub |
| ⏱️ 生存分析 | Cox-PH + DeepSurv | lifelines + PyTorch Neural Cox-PH | DeepSurv |
| ❓ 帮助 | 完整文档 | - | - |
🎯 六大核心模型
1. 用户流失预测 (ChurnPrediction)
方法: Gradient Boosting + Random Forest
- 输入: 30+维用户行为统计特征
- 输出: 流失概率
- 评估: AUC-ROC, F1-Score, AP, 5折交叉验证
2. 保险产品推荐 (DIN)
方法: Deep Interest Network (KDD 2018)
- 核心: LocalActivationUnit 注意力机制
- 输入: 用户历史行为序列 + 候选保险产品
- 输出: 购买概率 + 注意力权重可视化
- ** insight**: 用户兴趣表示随候选产品动态变化
3. 异常行为检测 (TabBERT)
方法: TabularBERT + Focal Loss
- 核心: 层次化Transformer + 不平衡数据处理
- 损失: Focal Loss (α=0.25, γ=2.0) — 聚焦难分异常样本
- 输入: 理赔记录多维特征
- 输出: 异常分数 + 最佳阈值推荐
4. 生存分析 (Survival Analysis)
统计方法: lifelines Cox-PH + Kaplan-Meier
- 输入: 用户年龄、性别、收入、保单类型、保额
- 输出: 生存函数 S(t) = P(T > t)
- 可视化: KM曲线、Cox系数、风险分层
深度方法: DeepSurv (Neural Cox-PH)
- 架构: MLP预测log hazard ratio
- 损失: Cox partial likelihood
- 优势: 学习非线性特征交互
- 评估: Concordance Index (C-index)
5. 模型管理 (HF Hub)
保存: 一键上传 sklearn + PyTorch 模型到 Hugging Face Hub 加载: 从 Hub 下载模型, 恢复训练指标和可视化
📊 数据格式
CSV 上传格式
user_id,session_id,timestamp,event_type,page_id,product_id,amount
user_001,sess_001,1704067200000,page_view,home,,
user_001,sess_001,1704067230000,product_view,product,health_basic,
user_001,sess_001,1704067260000,quote_request,quote,health_basic,50000
user_001,sess_001,1704067290000,payment_success,payment,health_basic,50000
必需列: user_id, session_id, timestamp, event_type, page_id
可选列: product_id, amount, label(流失标签)
事件类型 (30种)
| 类别 | 事件 |
|---|---|
| 浏览 | page_view, product_view, premium_calculator, article_read, faq_view, product_compare |
| 交互 | quote_request, form_submit, document_upload, chat_init, call_init, video_consult, quote_result_view |
| 转化 | policy_select, payment_init, payment_success, policy_issued |
| 理赔 | claim_init, claim_doc_upload, claim_review, claim_approved, claim_rejected |
| 续保 | renewal_reminder, renewal_click, renewal_complete, policy_cancel |
| 其他 | login, logout, app_uninstall |
🚀 使用方式
在线使用
直接访问: https://huggingface.co/spaces/Stephanwu/insurance-app-behavior
本地运行
# 克隆仓库
git clone https://huggingface.co/spaces/Stephanwu/insurance-app-behavior
# 安装依赖 (torch 较大, 需几分钟)
pip install -r requirements.txt
# 启动
python app.py
⚠️ 不平衡数据处理
保险场景数据高度不平衡 (流失率 < 5%, 欺诈率 < 1%):
| 技术 | 实现 | 适用场景 |
|---|---|---|
| 类别权重 | class_weight='balanced' |
Random Forest |
| Focal Loss | α=0.25, γ=2.0 |
PyTorch 深度学习 |
| 上采样 | SMOTE / 重采样 | 训练前预处理 |
| 评估指标 | 不用 Accuracy, 用 F1 + PR-AUC | 所有不平衡场景 |
📦 文件结构
Stephanwu/insurance-app-behavior/
├── app.py (86 KB) 主程序 — 7个Tab完整功能
├── models.py (23 KB) 深度学习模型定义 (DIN, TabBERT, Transformer)
├── README.md (7 KB) 完整文档
├── requirements.txt (188 B) 依赖清单
└── .gitattributes (1.5 KB) Git配置
📚 参考文献
| 论文 | 应用 | arXiv | 会议 |
|---|---|---|---|
| Deep Interest Network | 产品推荐 | 1706.06978 | KDD 2018 |
| SDIM | 长期行为建模 | 2205.10249 | SIGIR 2022 |
| FMLP-Rec | 去噪序列推荐 | 2202.13556 | WWW 2022 |
| TabBERT/TabFormer | 表格时序异常检测 | 2011.01843 | - |
| Transformer Churn | 非合约流失预测 | 2309.14390 | - |
| DeepSurv | 生存分析 | 1606.00931 | JAMIA 2018 |
| RNN Survival | 购买时序预测 | 2304.00575 | - |
| Focal Loss | 不平衡分类 | 1708.02002 | ICCV 2017 |
🔧 技术栈
| 组件 | 库 | 版本 |
|---|---|---|
| Web UI | Gradio | ≥4.0.0 |
| 数据处理 | Pandas, NumPy | ≥2.0.0, ≥1.24.0 |
| 机器学习 | scikit-learn | ≥1.3.0 |
| 深度学习 | PyTorch | ≥2.0.0 |
| 可视化 | Matplotlib, Seaborn | ≥3.7.0, ≥0.12.0 |
| 生存分析 | lifelines | ≥0.28.0 |
| 模型持久化 | joblib | ≥1.3.0 |
| 模型托管 | huggingface-hub | ≥0.23.0 |
📄 许可证
MIT License
作者: Stephanwu