IV值的计算及使用
IV值的计算及使用...
IV值的计算和使用
IV值的全称是information value,中文的就是信息量或信息值,其主要作用就是当我们在用决策树或逻辑回归构建分类模型时对变量进行筛选。IV值就是衡量自变量的预测能力的大小,与其相似的还有信息增益、基尼系数等。假设在一个分类问题中,目标变量的类别有两类:0,1。对于一个待预测的个体A,要判断A属于0还是1,我们是需要一定的信息的,假设这个信息总量是I,而这些所需要的信息,就蕴含在所有的自变量C1,C2,C3,……,Cn中,那么,对于其中的一个变量Ci来说,其蕴含的信息越多,那么它对于判断A属于0还是1的贡献就越大,Ci的信息价值就越大,Ci的IV就越大,它就越应该进入到入模变量列表中。
那么IV的计算公式是什么呢,再上一篇文章中,笔者介绍了WOE,IV就是以WOE为基础进行计算的。
下面通过一个实例计算一下IV值
还是以上篇文章的实例来介绍;
为了方便起见,直接看一下看一下上篇文章的数据集:
接下来计算一下每个类别的IV值
proc sort data=tmp;
by myvar status;
run;
Data Tmp1;
set tmp;
retain C1 C0 C1T 0 C0T 0;
by myvar status;
if first.myvar then do;
C0=freq;
C0T=C0T+C0;
end;
if last.myvar then do;
C1=freq;
C1T=C1T+C1;
end;
if last.myvar then output;
call symput ("C0T", C0T);
call symput ("C1T", C1T);
run;
data IV;
set Tmp1;
GoodDist=C0/&C0T;
BadDist=C1/&C1T;
if(GoodDist>0 and BadDist>0)Then do
WOE =log(BadDist/GoodDist);
IV=(BadDist-GoodDist)*WOE;
end;
else do;
WOE = .;
IV= . ;
end;
keep myvar woe IV;
run;
所得的结果如下:
以上计算出了一个变量中的每个分组的IV值,从面的结果可以看出:
- 对于变量的一个分组,这个分组的响应和未响应的比例与样本整体响应和未响应的比例相差越大即WOE的绝对值越大,IV值越大,否则,IV值越小;
- 极端情况下,当前分组的响应和未响应的比例和样本整体的响应和未响应的比例相等时即WOE=0时,IV值为0;
- IV值的取值范围是[0,+∞),且当前分组中只包含响应客户或者未响应客户时,IV = +∞。
IV = 0.38+1.80+0.27 = 2.45;
WOE = 1.19+|-2.89|+0.90 = 4.98;
至此,有一个疑问,为什么不用WOE去进行变量预测能力的筛选呢?
IV和WOE虽然只差了一个(pyi-pni)这个系数,但乘以这个系数后,体现出了变量当前分组中个体的数量占整体个体数量的比例,对变量预测能力的影响,即乘以了一个加权值。
关注 SAS中文论坛
微信扫一扫关注公众号