Stephanwu's picture
Fix: Restore YAML frontmatter for Gradio SDK configuration
2bd15ff verified
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