woe分析_WOE和IV

WOE和IV是在评分卡模型开发中的名词

进过分箱操作之后,变量分布在了区间上,所以我们还需要对区间做一个数值编码

这个数值编码就叫做WOE(Weight of Evidence),先来看一下WOE的计算公式

bda151e0d77ea698fbe866931147c691.png

WOE的优缺点:

优点:

1、可以提高模型的性能:根据公式以每一箱中的相对全体的log odds的超出作为编码依据,能够提高模型的预测精度,同时公式也符合LR的思想

2、分层抽样中的WOE不变性:如果建模需要对好坏样本进行分层抽样,则抽样后计算的WOE与没分层计算的WOE是一致的。

3、其次可以统一变量的一个尺度,一般是【-4,4】之间

缺点:

1、根据公式来看可以看出每一个bin中必须包含bad和good样本

2、对多类别标签无效:如果是多分类,分箱后的WOE无法计算

WOE公式解析:

598ba0d8fce45ef74eb411c8e5c9506a.png

这个公式没毛病吧,这一箱的W

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 是一种广泛应用于数据分析和科学计算的编程语言,可以利用它进行计算IV(Information Value)和WOE(Weight of Evidence)。 IV 是一种常用于评估变量的预测能力的指标。它衡量了自变量与因变量之间的相关性,也可以用于特征选择。计算 IV 的一般步骤如下: 1. 对于某个自变量,根据其不同取值将数据集划分成多个子集。 2. 在每个子集中,计算该子集中因变量的事件发生率和非事件发生率。 3. 根据每个子集中的事件发生率和非事件发生率计算每个子集的 IV 值。 4. 将每个子集的 IV 值相加得到最终的 IV 值。 下面是一个计算 IV 值的示例代码: ```python import pandas as pd import numpy as np def calculate_iv(dataset, feature, target): dataset['Event'] = np.where(dataset[target] == 1, 1, 0) dataset['NonEvent'] = np.where(dataset[target] == 0, 1, 0) event_total = dataset['Event'].sum() nonevent_total = dataset['NonEvent'].sum() dataset['EventRate'] = dataset['Event'] / event_total dataset['NonEventRate'] = dataset['NonEvent'] / nonevent_total dataset['WOE'] = np.log(dataset['EventRate'] / dataset['NonEventRate']) dataset['IV'] = (dataset['EventRate'] - dataset['NonEventRate']) * dataset['WOE'] iv = dataset['IV'].sum() return iv # 使用示例 dataset = pd.read_csv('data.csv') iv_value = calculate_iv(dataset, 'feature', 'target') print("IV value:", iv_value) ``` WOE 是一种衡量特征的预测能力的指标,它将每个特征的每个取值映射到一个权重值。计算 WOE 的一般步骤如下: 1. 对于某个自变量,根据其不同取值将数据集划分成多个子集。 2. 在每个子集中,计算该子集中事件发生的概率和非事件发生的概率。 3. 根据每个子集中事件发生的概率和非事件发生的概率计算每个子集的 WOE 值。 4. 将每个子集的 WOE 值相加得到最终的 WOE 值。 下面是一个计算 WOE 值的示例代码: ```python import pandas as pd import numpy as np def calculate_woe(dataset, feature, target): dataset['Event'] = np.where(dataset[target] == 1, 1, 0) dataset['NonEvent'] = np.where(dataset[target] == 0, 1, 0) event_total = dataset['Event'].sum() nonevent_total = dataset['NonEvent'].sum() dataset['EventRate'] = dataset['Event'] / event_total dataset['NonEventRate'] = dataset['NonEvent'] / nonevent_total dataset['WOE'] = np.log(dataset['EventRate'] / dataset['NonEventRate']) return dataset['WOE'] # 使用示例 dataset = pd.read_csv('data.csv') woe_values = calculate_woe(dataset, 'feature', 'target') print("WOE values:", woe_values) ``` 以上就是利用 Python 计算 IVWOE 的简单示例,根据数据的不同特点和需求,可以对代码进行相应的修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值