风控中iv指标计算 python
时间: 2023-08-05 15:02:08 浏览: 70
IV(Information Value)是指标筛选中常用的评价指标,用于衡量自变量对于因变量的影响程度。在风险控制中,IV指标常用于评估某个特征对于坏客户的区分度,以及评估特征对于建立预测模型的贡献度。
IV值的计算公式如下:
$$IV=\sum_{i=1}^{k}(\frac{good\%_i-bad\%_i}{100}\times WOE_i)$$
其中,$k$ 表示特征取值的个数,$good\%_i$ 表示第 $i$ 个取值下好客户的占比,$bad\%_i$ 表示第 $i$ 个取值下坏客户的占比,$WOE_i$ 表示第 $i$ 个取值下的WOE值,可以通过下面的公式计算:
$$WOE_i=ln(\frac{good\%_i}{bad\%_i})$$
在 Python 中可以通过以下代码实现 IV 值的计算:
``` python
def calc_iv(df, feature, target):
lst = []
cols = ['Variable', 'Value', 'All', 'Good', 'Bad']
for i in range(df[feature].nunique()):
val = list(df[feature].unique())[i]
lst.append([feature, val, len(df[df[feature] == val]),
len(df[(df[feature] == val) & (df[target] == 0)]),
len(df[(df[feature] == val) & (df[target] == 1)])])
data = pd.DataFrame(lst, columns=cols)
data = data[data['Bad'] > 0]
data['All_Distr'] = data['All'] / data['All'].sum()
data['Good_Distr'] = data['Good'] / data['Good'].sum()
data['Bad_Distr'] = data['Bad'] / data['Bad'].sum()
data['WoE'] = np.log(data['Good_Distr'] / data['Bad_Distr'])
data['IV'] = (data['Good_Distr'] - data['Bad_Distr']) * data['WoE']
data['Variable'] = feature
return data['IV'].sum()
```
其中,`df` 表示数据集,`feature` 表示特征列名,`target` 表示目标列名。函数返回计算得到的 IV 值。需要注意的是,在计算 IV 值时,需要对特征的取值进行分组,每个组内至少包含一定数量的坏客户,避免计算时分母为零的情况。