Skip to content
ZhiyaoWen999Public

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

贷前风控

本仓库用于模拟贷前(审批前)风控流程:生成模拟数据、定义标签、做 vintage 校验、构建特征、EDA/筛选/分箱、训练 WOE 评分卡。

English TL;DR: Pre-loan risk sandbox in pandas: mock data → label (DPD30@90D) → vintage (PIT & MOB) → label window compare → feature build → EDA/screen/bin → WOE scorecard + plots.

覆盖内容

  • 模拟表:users、applications、bureau、devices、behavior_agg、loans、loan_outcomes、loan_dpd_snapshots。
  • 标签定义:y_dpd30_ever(放款后 90 天内是否出现 DPD30+),并做成熟期过滤。
  • Vintage:90D 点位 cohort 以及 cohort×MOB 的经典 vintage(基于 DPD 快照)。
  • 标签观察窗对比:30/60/90/180 天坏率(按 cohort 与 score decile)。
  • 特征构建:按时间切分 train/valid,生成时间特征并做泄露规避。
  • EDA & 筛选:缺失、PSI、IV/AUC、低方差、偏态、相关性。
  • 分箱与评分卡:WOE 分箱、逐步回归、打分与分位表现。

目录结构

  • data/:模拟数据与输出结果。
  • data/eda/:EDA 汇总与筛选标记。
  • data/binning/:单变量分箱结果。
  • data/scorecard/:WOE、points、打分与分位表。
  • data/figures/:seaborn 图(vintage、观察窗对比)。
  • scripts/:流程脚本。

最小流程(最快跑通)

python scripts/generate_mock_data.py --outdir data
python scripts/build_model_table.py --datadir data --maturity-days 90
python scripts/build_features_90d.py --infile data/model_train_90d.csv --outdir data
python scripts/scorecard_pipeline.py --train data/features_train_90d.csv --valid data/features_valid_90d.csv --outdir data/scorecard --bins 10 --iv-threshold 0.02 --stepwise --p-enter 0.05 --p-remove 0.1

运行批次与 manifest

  • 任意脚本可加 --run-dir auto(或指定目录),输出会写入 data/run_YYYYMMDD_HHMMSS/,并在该目录下生成 manifest.csv 记录产出路径与步骤。
  • 示例(先设批次目录,再跑最小流程并记录产出):
RUN_DIR=data/run_$(date +%Y%m%d_%H%M%S)
python scripts/generate_mock_data.py --run-dir "$RUN_DIR"
python scripts/build_model_table.py --run-dir "$RUN_DIR" --datadir "$RUN_DIR"
python scripts/build_features_90d.py --run-dir "$RUN_DIR" --infile "$RUN_DIR/model_train_90d.csv"
python scripts/scorecard_pipeline.py --run-dir "$RUN_DIR" --train "$RUN_DIR/features_train_90d.csv" --valid "$RUN_DIR/features_valid_90d.csv" --bins 10 --iv-threshold 0.02 --stepwise
python scripts/scorecard_business_view.py --run-dir "$RUN_DIR"

将同一批次的 --run-dir 设为同一目录即可把产出集中放置,manifest.csv 会累计记录输出。

全流程(含校验与图表)

  1. 生成模拟数据
python scripts/generate_mock_data.py --outdir data
  1. 构建带标签的建模表(90D 成熟期)
python scripts/build_model_table.py --datadir data --maturity-days 90
  1. Vintage 校验(90D point-in-time + MOB)
python scripts/vintage_90d.py --infile data/model_train_90d.csv --outdir data
python scripts/vintage_mob.py --snapshots data/loan_dpd_snapshots.csv --applications data/applications.csv --out data/vintage_mob_dpd30.csv
python scripts/plot_vintage_seaborn.py --infile data/vintage_mob_dpd30.csv --outdir data/figures
  1. 标签观察窗对比(30/60/90/180 天)
python scripts/compare_label_windows.py --infile data/loan_outcomes.csv --outdir data
python scripts/plot_label_window_comparison.py --outdir data/figures
  1. 构建特征(时间切分)
python scripts/build_features_90d.py --infile data/model_train_90d.csv --outdir data
  1. EDA、筛选与分箱
python scripts/eda_report.py --train data/features_train_90d.csv --valid data/features_valid_90d.csv --outdir data/eda
python scripts/feature_screening.py --train data/features_train_90d.csv --outdir data/eda
python scripts/binning_univariate.py --train data/features_train_90d.csv --outdir data/binning --bins 10
  1. 评分卡与业务视图
python scripts/scorecard_pipeline.py --train data/features_train_90d.csv --valid data/features_valid_90d.csv --outdir data/scorecard --bins 10 --iv-threshold 0.02 --stepwise --p-enter 0.05 --p-remove 0.1
python scripts/scorecard_business_view.py --out data/scorecard/scorecard_business_view.csv

关键产出

  • data/model_dataset.csv, data/model_train_90d.csv:建模表与成熟期样本。
  • data/vintage_90d_m*.csv, data/vintage_mob_dpd30*.csv:vintage 表。
  • data/label_window_bad_rates_*.csv:观察窗对比表。
  • data/features_train_90d.csv, data/features_valid_90d.csv:特征表。
  • data/scorecard/scorecard_points.csv:评分卡分数与系数。
  • data/scorecard/scorecard_business_view.csv:业务视角的 WOE/分数表。

Key outputs (EN quick ref)

  • Modeling tables: model_dataset.csv, model_train_90d.csv
  • Vintage: vintage_90d_m*.csv, vintage_mob_dpd30*.csv
  • Label windows: label_window_bad_rates_*.csv, plots in data/figures/
  • Features: features_train_90d.csv, features_valid_90d.csv, feature_columns_90d.txt
  • Scorecard: scorecard_points.csv, scorecard_summary.csv, deciles, scorecard_business_view.csv

常用参数(通用)

  • --run-dir: 批次输出目录,auto 时自动创建 data/run_YYYYMMDD_HHMMSS 并写 manifest。
  • --log-level: 日志等级(DEBUG/INFO/…)。
  • --bins, --top-n: 分箱数量与保留前 N 类别(用于 binning/WOE/IV)。
  • --iv-threshold, --auc-threshold, --corr-threshold: 特征筛选阈值。
  • 评分卡:--pdo / --base-score / --base-odds 控制评分刻度,--stepwise/--p-enter/--p-remove 控制逐步回归。

备注

  • 各脚本默认使用 data/ 路径,可用参数覆盖。
  • 需要集中管理产出时,使用 --run-dir,manifest 会写到该目录。
  • 图表使用 seaborn/matplotlib,输出到 data/figures/。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages