IV值

评分模型开发主要分为变量处理、模型建立、评分转换、模型评估4个步骤。 
其中在变量处理的时候涉及IV值和WOE值的计算。

基于抽样后得到训练样本集数据,由于变量数量通常较多,不推荐直接采用逐步回归的方法进行筛选。 
由于各个变量的量纲和取值区间存在很大的差别,通常会对变量的取值进行分箱并计算 证据权重 WOE值(weight of evidence) ,从而降低变量属性的个数,并且平滑的变量的变化趋势。

接下来,在此基础上计算 信息价值IV(information value) , 
**一般我们选择 IV值大于0.02的那些变量进入模型。 
如果IV值大于 0.5 ,改变量就是属于过预测变量,通常被选座分群变量,将样本拆分成多个群体,针对不同的群体分别开发评分卡。**

分群的依据通常也会根据业务上的需要进行设定,常见以区域变量作为分群的标准。

证据权重WOE是用来衡量变量某个熟悉的风险的指标,WOE的计算公式: 
这里写图片描述

这里写图片描述

WOE 的值越高,代表着该分组中客户是坏客户的风险越低。

IV值是用来衡量某个变量对好坏客户区分能力的一个指标,IV值公式如下:

这里写图片描述

IV值越大表示好坏客户在该变量上的分布差异就越大,也就是该变量的区分能力就越好。

对于IV值的解释预测力 
这里写图片描述

### Information Value (IV) 的计算方法 Information Value (IV) 是一种用于评估分类变量在预测模型中的区分能力的指标。它广泛应用于信用评分建模和其他分类问题中,帮助识别哪些变量具有较强的预测能力。 #### IV 的定义和公式 IV 通过衡量某个自变量对因变量的影响程度来判断其重要性。具体来说,它是通过对每个类别计算权重并求和得到的结果。以下是具体的计算公式: \[ IV = \sum_{i=1}^{k} \left( \frac{G_i}{G} - \frac{B_i}{B} \right) \cdot \ln{\left(\frac{\frac{G_i}{G}}{\frac{B_i}{B}}\right)} \] 其中: - \( k \): 自变量类别的数量。 - \( G_i \): 良好事件(Good Events)在第 \( i \) 类别中的观测数[^3]。 - \( B_i \): 不良事件(Bad Events)在第 \( i \) 类别中的观测数。 - \( G \): 所有良好事件的总数。 - \( B \): 所有不良事件的总数。 该公式的每一项表示的是某一特定类别下好坏比例之间的差异及其对应的权重。如果某类别的 IV 较高,则说明这一类别对于目标变量的区分度较大。 #### 实现代码示例 下面是一个 Python 中实现 IV 计算的例子: ```python import pandas as pd import numpy as np def calculate_iv(df, feature, target): """ Calculate the Information Value of a categorical variable. :param df: DataFrame containing data :param feature: Categorical feature to evaluate :param target: Target binary variable ('0' or '1') :return: Information Value and WoE table """ grouped = df.groupby(feature)[target].agg(['count', 'mean']) grouped.rename(columns={'count': 'total', 'mean': 'bad_rate'}, inplace=True) total_good = sum(grouped['total'] * (1 - grouped['bad_rate'])) total_bad = sum(grouped['total'] * grouped['bad_rate']) grouped['good'] = grouped['total'] * (1 - grouped['bad_rate']) grouped['bad'] = grouped['total'] * grouped['bad_rate'] grouped['distr_good'] = grouped['good'] / total_good grouped['distr_bad'] = grouped['bad'] / total_bad grouped['woe'] = np.log(grouped['distr_good'] / grouped['distr_bad']) grouped['iv_contribution'] = (grouped['distr_good'] - grouped['distr_bad']) * grouped['woe'] iv_value = grouped['iv_contribution'].sum() return iv_value, grouped[['distr_good', 'distr_bad', 'woe', 'iv_contribution']] ``` 调用上述函数可以轻松获得任意分组特征下的 IV 以及每组的具体贡献情况。 #### 数据清洗的重要性 需要注意,在实际应用过程中,原始数据可能包含缺失或者异常等问题,这些问题会影响最终分析结果的质量。因此,在进行任何复杂的统计运算之前,应先完成必要的 **数据清洗** 工作以提高后续处理的有效性和准确性[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值