Skip to content

Commit

Permalink
Updates ml/clean-feature/bian-liang-fen-xiang-fang-fa/zui-you-qia-fan…
Browse files Browse the repository at this point in the history
…g-fen-xiang-fa.md

Auto commit by GitBook Editor
  • Loading branch information
shunliz committed Oct 23, 2022
1 parent ecbb6e3 commit 7d4eb2e
Show file tree
Hide file tree
Showing 9 changed files with 134 additions and 1 deletion.
9 changes: 8 additions & 1 deletion SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
* [第六课数据清洗和特征选择](ml/clean-feature/cleanup-feature.md)
* [PCA](ml/clean-feature/pca.md)
* [ICA](ml/clean-feature/ica.md)
* [One-hot编码](ml/clean-feature/one-hot.md)
* [scikit-learn PCA](ml/clean-feature/scikit-pca.md)
* [线性判别分析LDA](ml/clean-feature/xian-xing-pan-bie-fen-xi-lda.md)
* [用scikit-learn进行LDA降维](ml/clean-feature/scikit-lda.md)
Expand All @@ -52,6 +51,14 @@
* [数据处理离散型变量编码及效果分析](ml/clean-feature/shu-ju-chu-li-ff1a-li-san-xing-bian-liang-bian-ma-ji-xiao-guo-fen-xi.md)
* [特征筛选](ml/clean-feature/te-zheng-shai-xuan.md)
* [区分度评估指标\(KS\)](ml/clean-feature/qu-fen-du-ping-gu-zhi-680728-ks.md)
* [变量编码方法](ml/clean-feature/bian-liang-bian-ma-fang-fa.md)
* [One-hot编码](ml/clean-feature/one-hot.md)
* [变量分箱方法](ml/clean-feature/bian-liang-fen-xiang-fang-fa.md)
* [最优卡方分箱法](ml/clean-feature/bian-liang-fen-xiang-fang-fa/zui-you-qia-fang-fen-xiang-fa.md)
* [Best-KS分箱方法](ml/clean-feature/bian-liang-fen-xiang-fang-fa/best-ksfen-xiang-fang-fa.md)
* [最优IV分箱方法](ml/clean-feature/bian-liang-fen-xiang-fang-fa/zuiyou-iv-fen-xiang-fang-fa.md)
* [基于树的最优分箱方法](ml/clean-feature/bian-liang-fen-xiang-fang-fa/ji-yu-shu-de-zui-you-fen-xiang-fang-fa.md)
* 变量选择
* [第七课回归](ml/regression/regression.md)
* [1. 线性回归](ml/regression/linear-regression.md)
* [10.最大熵模型](ml/regression/max-entropy.md)
Expand Down
Binary file added assets/WOEformula1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/bianliangfenxiangliuchneg1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions ml/clean-feature/bian-liang-bian-ma-fang-fa.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
## 无监督编码

onehot编码

Dummy编码不推荐

Label编码

## 有监督编码

WOE编码

![](/assets/WOEformula1.png)



36 changes: 36 additions & 0 deletions ml/clean-feature/bian-liang-fen-xiang-fang-fa.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
变量分箱的好处

1. 降低异常值影响增加模型稳定性
2. 缺失值作为特殊变量参与分箱减少缺失值填补的不确定性
3. 增加变量的可解释性
4. 增加变量的非线性
5. 增加模型的预测效果

变量分箱的局限性

1. 同一箱内的样本具有同质性
2. 需要专家经验支持

需要注意

1. 分箱结果不能过多不能过少
2. 分箱后的单调性



变量分箱流程

![](/assets/bianliangfenxiangliuchneg1.png)

1选择优化指标可以选择卡方值KS值IV值等作为优化指标以判断最优切分点同时初始化分箱数nbin=1开始认为只有1箱通过切分的方式得到最优分箱结果

2初始化切分点对于连续变量采用等距离初始化方法并且要满足组间距离不能太小的约束条件对于离散变量可以将变量的取值作为切分点如果变量非常稀疏则可以先用坏样本比率数值化然后按照连续变量分箱操作切分点即为分箱合并的候选集可以初始化100个切分点然后分别计算在切分点处的目标函数值通过切分点分裂的方式从初始化箱数为1逐步达到最优分箱结果。(注意分箱可以消除异常值的影响但是异常值会影响初始化切分点的选择例如初始化分箱数是100采用等距离初始化方法如果存在异常值则会出现切分点的间隔较大数据分布不均即靠近异常值的箱内样本分布较少而在某些箱内样本分布较多的情况因此初始化切分点钱要做异常值处理。)

3初始化切分点后要判断不同切分点间的最小样本数是否小于最小样本数约束如果小于最小样本数则重新进行切分点选择即采用切分点合并的方式将临近的切分点合并以满足最小样本数的约束

4随后在最大分箱数的约束下进行切分点选择如果大于最大分箱数则分箱结束

5如果小于最大分箱数则先计算最优切分点以每个初始化切分点为边界分别计算在此分箱后的优化指标值选择最优的指标值对应的切分点作为最优切分点

6得到最优切分点后要计算增益值判断当前分箱策略下的优化指标是否由于前一次分箱得到的优化指标值如果分箱溢价无法得到更优的指标值或指标值增加的速度明显变缓则分箱结束满足Earlystopping约束条件如果增益明显增加则分箱数增加直到满足最大分箱约束条件后分箱结束

Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
Best-KS分箱方法是一种自顶向下的分箱方法与卡方分箱相比Best-KS分享方法只是目标函数采用了KS统计量其余分箱步骤没有差别这里介绍KS统计量的计算方法与目标变量之间的关系

KS统计量用于评估模型对好坏样本的区分能力K-S曲线的绘制方法做变量排序以变量的某个值为阈值点统计样本中好坏样本占总样本中的好坏样本分别的比例随着变量阈值点的变化这两个比值也随之改变这两个比值之差的最大值就是KS统计量

![](https://pic2.zhimg.com/80/v2-cb8559e7b22ab90a229e2037e33568c9_720w.webp)

如果采用模型预测的概率值排序分别计算在不同概率下好坏样本的累计比所得到的K-S曲线与K-S统计量就可以用来衡量模型的预测效果如果横坐标是变量排序后的变化值纵坐标为不同变量取值下的好坏样本数与总体样本中好坏样本数的比那么此时的K-S曲线与K-S统计量就可以用来评估变量分箱中的最优切分点

K-S统计量的计算过程如下

1将变量进行升序排序确定初始化阈值点候选集离散变量可以直接采用变量的可能取值作为候选集连续变量可以先进行分组如分10组将每组的边界作为阈值点

2分别计算在小于阈值点的样本中好坏样本与总体好坏样本数的比值

3将好坏样本比值的差作为各个切分点的KS统计值

Best-KS分享方法不适用于不可排序的离散变量因为排序没有意义该方法更适合连续变量的分箱过程此外Best-KS方法只能对二分类问题进行分箱操作基于这些局限性在变量处理的时候需要留意

Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
基于树的分箱方法借鉴了决策树在树生产的过程中特征选择最优分裂点的目标函数来完成变量分箱过程可以理解为单变量的决策树模型决策树采用自顶向下的方法进行树的生成每个节点的选择目标是为了分了结果的纯度更高也就是样本的分类效果更好因此不同的损失函数有不同的决策树ID3采用信息增益方法C4.5采用信息增益比CART采用基尼系数Gini指标这里主要介绍采用信息增益作为目标函数进行变量分箱的过程

概率是表示随机变量确定性的度量而信息是随机变量不确定性的度量信息熵是不确定性度量的平均值就是信息平均值定义为

![](https://pic3.zhimg.com/80/v2-0c5f9274675e9c83f2bba2f5268f40aa_720w.webp)

其中k表示类别个数Ck表示在第k个类别的样本数D表示样本总数严格来说这属于经验熵

熵与纯度对应熵越大不确定度越大纯度越低熵越小不确定度越小纯度越高纯度就是类别的多少只有一种类别纯度最高所以在对一直变量进行分箱时如果在某个切分点进行分箱使得变量的信息熵下降则得到最佳分箱切分点衡量信息熵下降的指标就是信息增益定义为

![](https://pic1.zhimg.com/80/v2-404601c6db369451610b48ed46c844e8_720w.webp)

其中H\(D\)表示原始数据集中类别属性的不确定性H\(D\|A\)为条件熵表示变量在某一切分点下分箱后类别属性的不确定性信息增益表示变量在某一切分点下分箱后对得知类别属性的信息不确定性减少的程度也就是类别属性纯度增加的程度在样本给定后原始数据集中类别属性的信息熵H\(D\)就已经确定了分箱调整的是在不同的切分点处得到的条件熵不同将那些条件熵小的切分点作为最优切分点完成分箱条件熵的计算公式如下

![](https://pic3.zhimg.com/80/v2-175e9ee5e9f47d385b4a1330b3986476_720w.webp)

其中n表示变量分箱的个数注意在最优切分点选择时每次切分为2箱此时n=2而经过多次切分后得到多个箱此时要评估当前分箱数下的条件熵则此时n等于到当前时刻的分箱数Di表示第i个划分中样本个数D表示样本总数K表示类别种类本例中为二分类K=2

![](https://pic3.zhimg.com/80/v2-19e150b565653a1d3e68a42cd9706aaa_720w.webp)

表示变量在第i个分类下的信息熵即计算在某个切分点分箱后每个箱内类别属性的信息熵然后再与该箱内样本数与总体样本数的比值相乘后做加权求和其中还Dik表示第i个划分下第K个类别的样本数Di表示第i个划分下的总样本数

信息增益越大表示本次分箱下样本类别属性的不确定性越小纯度越高对好坏样本的分类效果越好如果能通过分箱的方式将好坏样本完美地分开那么这就是最好的分箱结果

可以将公式两边都除以类别的信息熵类似归一化的过程信息增益的公式就变换为如下无量纲的形式

![](https://pic4.zhimg.com/80/v2-a759221731000c981bd17128a03bb6d7_720w.webp)

Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Chi-merge卡方分箱方法是一种自底向上的分箱方法其思想是将原始数据初始化为多个数据区间并对相邻区间的样本进行合并计算合并后的卡方值用卡方值的大小衡量相邻区间中类分布的差异情况如果卡方值较小表面该相邻区间的类分布情况非常相似可以进行区间合并反之卡方值越大则表面该相邻区间的类分布情况不同不能进行区间合并操作卡方值计算公式如下

![](https://pic2.zhimg.com/80/v2-e3cdcdbf02ddfb1922e9d468d7900059_720w.webp)

其中n表示区间数因为是相邻区间进行合并所以n=2m表示类别数如二分类m=2Eij表示第i个区间第j个类别的期望值计算方式是第j个类别在总体样本中的占比乘以第i个区间的全部样本数Binij表示第i个区间第j类样本的个数

假设样本总数为1000坏样本与好样本的样本量分别为300和700计算如图

![](https://pic4.zhimg.com/80/v2-b8966b10fbdea1e15e3e0b5f6ec52f9b_720w.webp)

上述过程就是一个卡方检验的过程因此根据置信度和自由度可以计算出卡方检验的阈值当计算的卡方值小于阈值则认为相邻区间的类分布情况相似可进行合并其中自由度为类别个数减1置信度可以用0.90.95和0.99

另外计算两个卡方值两者相加即为合并后样本的卡方值在卡方分箱合并的使用中每个卡方值都是在检验该区间的类分布情况与总体样本的类分布情况是否相同卡方值只是衡量这种相似程度的一个量化表示而两个区间可以合并的前提就是每个区间的类分布情况都与总体相似合并后的类分布情况也将与总体的样本分布情况相似因此可以合并如果一个区间与总体的类分布情况相似而另一个区间与总体的类分布情况不想死加和后的卡方值将更大就不能将这两个区间进行合并

自底向上的思想是由多至少逐层合并的过程自顶向下是有少至多逐层切分的过程为了统一要将卡方自底向上的思想改为自顶向下的方式实现因此只需要每次切分时令卡方值最大即可后续采用这种方法)。

在实际进行分箱操作时如果采用阈值判断的方式如果不加限制可能导致结果不收敛从而得到的分箱数太多而失去分箱的意义因此实际引用时往往要限制最大分箱数

基于分箱流程卡方分箱方法就是目标函数是卡方值在一定约束条件下的优化问题约束条件可以自由选择不需要全部使用根据卡方值的计算公式可知该方法既可以在二分类问题中也可以用于多分类中进行变量分箱同时对离散变量和连续变量也均适用

Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
最优IV分箱方法也是自顶向下的分箱方式期目标函数为Information Value值IV值的计算是在WOE值的基础上演化而来的

![](https://pic1.zhimg.com/80/v2-5e4c2ff07805edd25195fa92f9a626ec_720w.webp)

其中M为分组的个数本例中为自顶向下的分箱方式采用的二叉树的方式因此M=2Goodi和Badi分别为以不同切分点划分后第i组内好坏样本的个数Goodtotal和Badtotal为总体样本中好坏样本的个数

IV值本质是对陈华的K-L距离即在切分点处分裂得到的两部分数据中选择好坏样本的分布差异最大点作为最优切分点分箱结束后计算每个箱内的IV值加和得到变量的IV值可以用来刻画变量对目标值的预测能力即变量的IV值越大则对目标变量的区分能力越强因此IV只还可以用来做变量选择

0 comments on commit 7d4eb2e

Please sign in to comment.