Stephanwu's picture
Fix: Restore YAML frontmatter for Gradio SDK configuration
2bd15ff verified
---
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](https://arxiv.org/abs/1706.06978) |
| 🔍 异常检测 | TabBERT | PyTorch + Transformer + Focal Loss | [TabBERT](https://arxiv.org/abs/2011.01843) |
| 💾 模型管理 | HF Hub 保存/加载 | joblib + torch.save | HuggingFace Hub |
| ⏱️ 生存分析 | Cox-PH + DeepSurv | lifelines + PyTorch Neural Cox-PH | [DeepSurv](https://arxiv.org/abs/1606.00931) |
| ❓ 帮助 | 完整文档 | - | - |
---
## 🎯 六大核心模型
### 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 上传格式
```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
### 本地运行
```bash
# 克隆仓库
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](https://arxiv.org/abs/1706.06978) | KDD 2018 |
| SDIM | 长期行为建模 | [2205.10249](https://arxiv.org/abs/2205.10249) | SIGIR 2022 |
| FMLP-Rec | 去噪序列推荐 | [2202.13556](https://arxiv.org/abs/2202.13556) | WWW 2022 |
| TabBERT/TabFormer | 表格时序异常检测 | [2011.01843](https://arxiv.org/abs/2011.01843) | - |
| Transformer Churn | 非合约流失预测 | [2309.14390](https://arxiv.org/abs/2309.14390) | - |
| DeepSurv | 生存分析 | [1606.00931](https://arxiv.org/abs/1606.00931) | JAMIA 2018 |
| RNN Survival | 购买时序预测 | [2304.00575](https://arxiv.org/abs/2304.00575) | - |
| Focal Loss | 不平衡分类 | [1708.02002](https://arxiv.org/abs/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](https://huggingface.co/Stephanwu)