amphibian-dev / toad

ESC Team's credit scorecard tools.
https://toad.readthedocs.io
MIT License
488 stars 175 forks source link

请教几个关于quality的问题 #100

Open nllatt opened 2 years ago

nllatt commented 2 years ago

作者您好,想请教一下三个问题:

1. quality函数是否支持传入method参数呢?

我使用下面两行代码得到了完全一致的结果 nowoe_ret = toad.quality(df_ftr, target, indicators=['iv'], method='dt') nowoe_ret2 = toad.quality(df_ftr, target, indicators=['iv'], method='quantile')

2. 使用quality函数的IV计算逻辑是否和使用combiner+woetransform分箱后的计算IV逻辑是否一致呢?

我在使用下面两段代码分别计算iv,得到的结果相差非常多,并且使用code1计算的结果会倾向于将类别数很多的特征计算出非常高的IV值,但是code2不会。不知道是什么原因导致的这种现象呢? code1: nowoe_ret = toad.quality(df_ftr, target, indicators=['iv'], method='dt') code2: combiner.fit(cat_train,df_train[target],method='dt') train_bin = combiner.transform(cat_train,labels=True) t = toad.transform.WOETransformer() train_cate_woe = t.fit_transform(train_bin,df_train[target],exclude=[target]) frame, iv_drop, iv_list = toad.selection.drop_iv(train_cate_woe, target = target, threshold = 0.01, return_drop = True, return_iv = True) iv_df = iv_list.reset_index()

3. 对于未进行分箱处理的numerical变量,selection默认使用什么分箱来计算IV值呢?

使用的toad版本:0.0.64

Secbone commented 2 years ago

@nllatt toad.quality 计算IV等需要分箱的指标时,只会对 数值类型 的变量进行分箱,如果原始变量不是数值类型,则按照类别型变量直接进行计算,而通常类别较多时,IV会越高这是符合逻辑的。我想这应该可以帮你理解1、2问题的现象。 对于 selection 中的 数值变量,默认会使用 dt 进行 10 组的分箱

zhanxiongjun commented 1 week ago

@nllatt toad.quality 计算IV等需要分箱的指标时,只会对 数值类型 的变量进行分箱,如果原始变量不是数值类型,则按照类别型变量直接进行计算,而通常类别较多时,IV会越高这是符合逻辑的。我想这应该可以帮你理解1、2问题的现象。 对于 selection 中的 数值变量,默认会使用 dt 进行 10 组的分箱

在使用dt进行10分箱后,计算出来的分段iv,加起来会比通过quality计算出来的值更小一些,想问一下quality计算出来的iv的策略是啥