信用风险模型工具包
Project description
riskmodels - 风险模型工具库
riskmodels意在提供风险模型开发中常用的函数和算法,目前主要覆盖了以下几类功能:
- 数据探索
- 变量分箱
- 逻辑回归建模
- 评分卡转换
- 模型评估
以下对主要功能进行说明,详细说明请参见代码文档。
数据探索
样本分布: riskmodels.utils.sample_stats
该函数作用是统计样本中的总样本数、好坏样本数及坏率,一般会结合 groupby 使用。如下例:
# 按照申请月份进行样本统计
df.groupby('apply_month').apply(sample_stats, target='y')
# 按照不同信贷产品进行样本统计
df.groupby('product_id').apply(sample_stats, target='y')
变量探索: riskmodels.detector.detect
注:该函数源自
toad
该函数用于变量分布。对于数值型变量,统计其空值率、最大值、最小值、平均值、方差等统计量;对于类别型变量,统计器出现频次最高的类别。
变量分箱: riskmodels.scorecard模块
本模块基于 scorecardpy 项目进行重构,主要目的是提供分箱方法的可扩展性。
原项目的分箱步骤为:特殊值处理 → 细分箱:等距分箱 → 粗分箱:ChiMerge/树方法,本次重构进行了如下优化:
- 细分箱增加等频分箱,由于信贷场景的数据偏度极大,等距分箱可能在数据集中部分丢失细节,等频分箱更为合适
- 粗分箱中的树方法,增加了对单调性约束的支持(通过
ensure_monotonic=True打开,默认为False)
woebin函数
def woebin(dt,
y,
x=None,
var_skip=None,
breaks_list=None,
special_values=None,
positive="bad|1",
no_cores=None,
methods=None,
ignore_const_cols=True,
ignore_datetime_cols=True,
check_cate_num=True,
replace_blank=True,
**kwargs): ...
该函数与sc.woebin函数接口基本类似,主要变更如下:
- methods: 默认为
['quantile', 'tree'], 即采用等频分箱→树分箱的分箱方式;该参数默认可支持的分箱方法包括hist: 等距分箱,注册类riskmodels.scorecard.HistogramInitBinquantile: 等频分箱,注册类riskmodels.scorecard.QuantileInitBintree: 树分箱,注册类riskmodels.scorecard.TreeOptimBinchi2/chimerge: ChiMerge分箱,注册类riskmodels.scorecard.ChiMergeOptimBin使用该参数有以下注意事项:- 首个分箱方法必须为(无监督)细分箱方法,此处可选为
hist和quantile两类; - 细分箱方法不可位于其他分箱方法之后,如
['quantile', 'tree'],此时等频分箱方法不生效; - 可以只包含细分箱,如
['quantile']或['hist'],此时为纯无监督分箱; - 列表长度可以大于2,例如:
['quantile', 'tree', 'chi2],即在树分箱的基础上,再用ChiMerge方法对无显著差异的相邻分箱进行合并。
**kwargs: 该参数为各个分箱方法所需要的参数,具体可见分箱方法类的文档,下列最常见参数。- 等距分箱和等频分箱
- initial_bins: 细分箱的数量,默认20
- 树分箱和ChiMerge分箱
- bin_num_limit: 最终分箱的最大数量(不含特殊值),默认5
- count_distr_limit: 分箱样本占总样本的最小比例,默认0.05
- stop_limit: 分箱停止条件,树分箱为IV值相对增量,ChiMerge为独立性检验P值,默认0.05
- ensure_monotonic(仅树分箱支持): 是否保证单调性(不含特殊值),默认
False
- 等距分箱和等频分箱
分箱方法的扩展
(略)
woebin_ply函数
def woebin_ply(dt, bins, no_cores=None, replace_blank=False, value='woe'):
...
该函数与sc.woebin_ply函数接口基本类似,增加如下参数:
- value: 可选项为
['woe', 'index', 'bin'],默认为 'woe'- value='woe'时,将原始值替换为woe值,返回的字段名为
变量名_woe,与sc.woebin_ply一致; - value='index'时,将原始值替换为变量分箱结果数据框中的index,返回的字段名为
变量名_index; - value='bin' 时,返回结果为分箱区间 [a,b) 【数值型变量】或 a%,%b 【类别型变量】,返回的字段名为
变量名_bin。
- value='woe'时,将原始值替换为woe值,返回的字段名为
woebin_psi函数
def woebin_psi(df_base, df_cmp, bins):
...
该函数为新增函数,用于计算变量PSI值,详细使用方式见函数文档。
其他函数
其他常用函数列举如下:
- sc_bins_to_df: 整合
woebin返回值,生成woe表和iv表 - woebin_breaks: 根据
woebin返回值保存切分点和特殊值点 - woebin_plot: 根据
woebin返回值生成bivar图像
逻辑回归建模
评分卡转换
make_scorecard函数
def make_scorecard(sc_bins, coef, *, base_points=600, base_odds=50, pdo=20):
...
该函数用于生成评分卡,其中coef为各个入模变量的系数字典: {变量名_woe: 系数}
模型评估
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file syriskmodels-0.2.6.tar.gz.
File metadata
- Download URL: syriskmodels-0.2.6.tar.gz
- Upload date:
- Size: 37.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8be056e0fcf89f38ce1bd2971e1a2118ac9eb0615d67edeef33788429dda0997
|
|
| MD5 |
4dd924c1f20ccd127dfbdf0464012ad0
|
|
| BLAKE2b-256 |
6bc8bd4eb4afb90ba3bb9d7959abfa749cd81bb1541411a6e6cab986434f11e5
|
File details
Details for the file syriskmodels-0.2.6-py3-none-any.whl.
File metadata
- Download URL: syriskmodels-0.2.6-py3-none-any.whl
- Upload date:
- Size: 37.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
808c4c735343d7896d978fd6903de3e075d4384c601b92615dbb2d6c14b58a56
|
|
| MD5 |
dac8dc2ab9044e48b2ccf1cd5e308837
|
|
| BLAKE2b-256 |
2376495142a855581b7e0587f9a3cc68afe1d24c42a06a5f67f3c874b211630d
|