tabulate(tabulate area)
1 WOE和IV怎么计算?
2 如何对变量做分箱?
本文介绍woe分箱包-woeBinning,利用该包实现自动分箱和计算变量的IV值。
woeBinning包介绍
woeBinning包使数字变量和因子相对于二元目标变量的分箱过程自动化。 此外,它可视化已实现的分箱解决方案,可以表格化和部署应用到新的数据集。所有函数都可以与单个变量或整个数据框一起使用。
woeBinning函数
woe.binning对数值变量或者因子变量生成一个受监督的细分和粗分类。
woe.tree.binning对数值变量和因子变量生成监督树状分割。
woe.binning.plot对woe.binning或者woe.tree.binning的分箱解决方案进行数据可视化。
woe.binning.table对woe.binning或woe.tree.binning的分箱解决方案的结果进行表格化保存。
woe.binning.deploy将把woe.binning或woe.tree.binning生成并保存的分箱解决方案部署和应用到(新)数据中。
woe和IV计算逻辑
woe 计算IV计算woe-iv计算例子
思考:上述表里面的值是如何计算的?
woeBining包应用举例
# 加载woeBinning包,若是没有安装,请先安装
library(woeBinning)
# 加载dplyr包
library(dplyr)
# 使用包自带的数据集germancredit
data( "germancredit")
# 数据集检视
print(dim(germancredit))
print(head(germancredit))
# 数据集部分变量数据获取
# 定性变量和定量变量
df <- germancredit[, c( 'creditability', 'credit.amount', 'duration.in.month', 'savings.account.and.bonds', 'purpose')]
print(head(df))
# 自动分箱操作
binning <- woe.binning(df, 'creditability', df)
# 自动分箱后结果可视化
woe.binning.plot(binning)
变量集的woe值分布情况可视化
变量集的IV值分布情况可视化
结论:
变量duration.in.month的IV值最高,为0.254
基于iv值应用的经验法则,总结如下:
1) < 0.02 非常弱 不纳入到模型变量候选集
2)[0.02, 0.1) 很弱 针对实际情况决定是否纳入模型变量候选集
3)[0.1, 0.3) 一般 纳入模型变量候选集
4)[0.3, 0.5) 强 纳入模型变量候选集
5)>= 0.5 很强,具有可疑性,要进一步调查
# 分箱解决方案表格化存储
tabulate.binning <- woe.binning.table(binning)
tabulate.binning
# 分箱解决方案部署和应用到新的数据集
df. with.binned.vars.added <- woe.binning.deploy(
df,
binning,
add.woe. or.dum.var = 'woe'
)
View(df. with.binned.vars.added)
woe.df <- df.="" with.binned.vars.added="">% dplyr::select(contains( "woe."))
View(head(woe.df))
完整代码#加载R包
library(woeBinning)
library(dplyr)
#加载数据集
data( "germancredit")
print(dim(germancredit))
print(head(germancredit))
# 部分变量数据获取
# 定性变量和定量变量
df <- germancredit[, c( 'creditability', 'credit.amount', 'duration.in.month',
'savings.account.and.bonds', 'purpose')]
print(head(df))
# 自动分箱操作
binning <- woe.binning(df, 'creditability', df)
# 自动分箱后结果可视化
woe.binning.plot(binning)
tabulate.binning <- woe.binning.table(binning)
View(tabulate.binning)
df. with.binned.vars.added <- woe.binning.deploy(
df,
binning,
add.woe. or.dum.var = 'woe'
)
View(df. with.binned.vars.added)
woe.df <- df.="" with.binned.vars.added="">% dplyr::select(contains( "woe."))
View(head(woe.df))
版权声明:作者保留权利,严禁修改,转载请注明原文链接。
我们努力坚持做原创,聚合和分享优质的省时的数据知识!
数据工作
我们公司大数据风控中心部门诚招:
1 风险分析和建模工程师(信用评分模型,反欺诈模型,额度模型|熟练常用ML算法|熟练使用R或者Python)
2 数据开发工程师(大数据平台开发,数据采集,数据预处理)
3 爬虫工程师(掌握爬虫技术,掌握反爬策略)
4 数据分析或者建模实习生(研究生学历|统计学,数学,计算机专业|熟悉R或者Python|有金融数据项目可以加分)
工作地点:深圳大冲商务中心
薪资待遇:面议
感兴趣者,请加小编微信。
tabulate