Commit f0404627 authored by 舒皓月's avatar 舒皓月

重写代码提交 07 26

parent 7b4f202f
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (model_monitor)" project-jdk-type="Python SDK" />
<component name="PyCharmProfessionalAdvertiser">
<option name="shown" value="true" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="jdk" jdkName="Python 3.7 (model_monitor)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="TestRunnerService">
<option name="PROJECT_TEST_RUNNER" value="Unittests" />
</component>
</module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/model_monitor.iml" filepath="$PROJECT_DIR$/.idea/model_monitor.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
This diff is collapsed.
...@@ -3,43 +3,123 @@ ...@@ -3,43 +3,123 @@
# 项目介绍 # 项目介绍
- 本项目主要用于风控模型监控. - 本项目主要用于风控模型监控.
- 运用统计绘图分析, 来检测入模特征, 客群变化, 模型性能. - 运用统计绘图分析, 来检测入模特征, 客群变化, 模型性能.
- 基本流程: - 基本流程:
- 数据库取数 --> 整合/处理数据 --> 绘图 --> 统计
数据库取数 --> 整合/处理数据 --> 绘图
- 主要统计图类别: - 主要统计图类别:
- 单变量分析图 - VLM
- PSI - PSI
- Lift Chart - Lift Chart
# Univariant Chart # 版本信息 - 新代码
- V 0.0.1
基本完成对PSI和Lift Chart关于模型分在MongoDB的重写.
# VLM
- 待重写.
# PSI & Lift Chart
- 因为这两个指标的统计都需要用到模型分, 所以放到一起.
## 代码流程
- 首先对需要计算的模型分, 在指定的统一时间跨度内进行数据抽取(在MySQL和MongoDB中). 包括如下一些主要字段:
- 模型分1, 模型分2, ...
- 订单号, 申请时间, 申请类型, 渠道类型, 逾期天数.
- 根据预定义逾期阈值, 得到是否逾期标签.
- 根据该模型分有记录的第一个月, 计算分箱规则(由模型分等频分箱区间, PSI在申请集上计算, AUC在放款集上计算).
- 分别对全样本, 首申/复申/复贷, 以及各达标客群(客群数量大于预设阈值), 计算每月统计信息:
- PSI:
- 样本量.
- 各分箱样本量
- 各分箱样本量占比
- 以该客群模型分有记录的第一个月为基准的PSI.
- Lift Chart:
- 样本量
- 各分箱样本量
- 各分箱逾期率
- AUC
- 以该客群模型分有记录的第一个月为基准的AUC ratio.
- 统计表格信息, 方便筛选排序查看.
- 包含以下字段:
- 模型分名称.
- a月样本量, b月样本量...
- a月PSI, b月PSI...
- a月AUC, b月AUC...
- NOTE:
- 当某月样本量很小, 或者没有样本时, 标记为NaN. 对应的PSI, AUC也为NaN.
- 当某月样本量比较小, 导致PSI, AUC计算异常(如某些分箱没有样本, 全为非逾期样本), 则标记为-999.
- 基准月的PSI为0.
- 示例:
![PSI](doc/image/C6640ABE-9017-42b5-A92A-2DE5601A15D8.png)
![](doc/image/31EA97A8-19B7-45c6-8302-4148D19BAABA.png)
## 代码使用方法
- 准备一个Excel表格, 其中放置模型分名称, 以及对应的在数据库中的字段名.
- 创建一个模型监控对象(这样你就有对象了).
```python
mm = ModelMonitor(excel_path='./model_score.xlsx', save_path='./image/', last_month=7, num_month=4, min_user_group=200)
```
- excel_path: Excel文件路径.
- save_path: 统计图存放路径.
不用自己再另外手动创建文件夹, 代码会判断文件夹是否存在并创建.
- last_month: 想要统计的最后一个月.
- num_month: 想要统计几个月.
如last_month=7, num_month=3, 表示统计4, 5, 6三个月的信息.
NOTE: AUC的计算逻辑为了保证样本有响应, 在此基础上还要往前推一个月, 会统计4, 5月的信息.
- min_user_group: 最小客群数量.
# PSI 这个参数越大, 颗粒越粗, 最后的统计图(客群数量)会越少.
反之颗粒越小, 最后统计图会越多.
- 执行run函数.
# Lift Chart ```python
mm.run()
```
- 输出
- 图片保存在./image中.
- PSI: ./image/PSI
- Lift Chart: ./image/AUC
- 统计信息.
- PSI统计信息: ./psi_info.csv
- AUC统计信息: ./auc_info.csv
# TODO
- 添加对存在MySQL中模型分计算PSI, AUC的代码.
- 完成对VLM的重写.
# 贡献 # 贡献
- 王家华 (jiahua.wang@quantgroup.cn) - 王家华 (jiahua.wang@quantgroup.cn)
主要作者. 旧代码作者.
- 舒皓月 (haoyue.shu@quantgroup.cn) - 舒皓月 (haoyue.shu@quantgroup.cn)
维护者. 新代码作者.
\ No newline at end of file \ No newline at end of file
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment