卡方分箱是一种有监督的分箱,也就是向\(y\)进行投诚。 例如,我们要回归\(y = \beta_0 + \beta_1 x + u\), 得知,\(x\)是连续的,但是不单调,因此要虚拟化。 我们都知道等频、等距、低频合并等方法弊端太多,瑕疵再说。 这里主要说卡方分箱。
假设我们的\(y \in \{0,1,2\}\),因此有两种分类,
这里是为了简化,理论上,\(y\)可以多分类。
我们sort下我们的连续变量\(x\)后,
发现,\(y\)变量Species
和\(x\)变量Sepal.Length
的关系如下。
iris1 <-
iris %>%
select(Sepal.Length,Species) %>%
group_by(Sepal.Length,Species) %>%
summarise(n = n()) %>%
spread(Species,n, fill = 0)
## `summarise()` regrouping output by 'Sepal.Length' (override with `.groups` argument)
iris1
## # A tibble: 35 x 4
## # Groups: Sepal.Length [35]
## Sepal.Length setosa versicolor virginica
## <dbl> <dbl> <dbl> <dbl>
## 1 4.3 1 0 0
## 2 4.4 3 0 0
## 3 4.5 1 0 0
## 4 4.6 4 0 0
## 5 4.7 2 0 0
## 6 4.8 5 0 0
## 7 4.9 4 1 1
## 8 5 8 2 0
## 9 5.1 8 1 0
## 10 5.2 3 1 0
## # ... with 25 more rows
iris1 %>%
head(2) %>%
mutate(total = sum(setosa:virginica)) %>%
mutate(Sepal.Length = as.character(Sepal.Length)) %>%
ungroup() %>%
add_row(Sepal.Length = "total_row",
setosa = 4,
versicolor = 0,
virginica = 0,
total = 7)
## # A tibble: 3 x 5
## Sepal.Length setosa versicolor virginica total
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 4.3 1 0 0 1
## 2 4.4 3 0 0 6
## 3 total_row 4 0 0 7
计算4.3
和4.4
这两列放在一起的\(\chi^2\)。
\(\chi^2\)是一种投诚的感觉。
比如,
4.3
的总数是\(1\),
4.3
的总数是\(2\);
setosa
的总数是\(4\),
versicolor
的总数是\(4\),
virginica
的总数是\(4\)。
样本总数是\(7\)。
我们定义在\([1,1]\)的期望值\(E_{1,1} = \frac{1 \times 4}{7} = 4/7\)。
然后真实值\(A_{1,1}=1\)。
我们发现\(E_{i,j}\)是受到total
和total_row
两个决定,这两个是不是描述整体样本的两个指标?
如果我们说\(A_{i,j} \to E_{i,j}\),
那么就说明这个\(A_{i,j}\)follow整个样本,因此不是异常的。
如果全部\(A_{i,j}\)都follow整个样本,因此这就不是异常的样本。
我们定义这样的一个公式,
\(\sum_{i=1}^{total}\sum_{j=1}^{total_-row}\frac{(A_{i,j}-E_{i,j})^2}{E_{i,j}}\)
。
显然这个值越低,说明越follow整个样本,这就不是异常的样本,很老实,因此时一个样本。
4.3
和4.4
,应该合并,否则两个不同。
以上就是卡方检验的思路。
另外 \(\chi^2 = \sum_{i=1}^{total}\sum_{j=1}^{total_-row}\frac{(A_{i,j}-E_{i,j})^2}{E_{i,j}} \sim \bar \chi^{2}\)。 其中\(\bar \chi^{2}\)是一个阈值,越小,说明判断为同一样本的条件越苛刻。 这个受到样本大小(或者说\(n-1\),也就是自由度)和置信度决定。
以下是可以阅读的相关资料。
@article{kerber1992chimerge:,
title={ChiMerge: discretization of numeric attributes},
author={Kerber, Randy},
pages={123--128},
year={1992}}
这是卡方分箱最原始的一篇文献,很短才5页。 Kerber, Randy 这个作者是个独立研究者。
基本思想:对于精确的离散化,相对类频率在一个区间内应当完全一致。因此,如果两个相邻的区间具有非常类似的类分布,则这两个区间可以合并;否则,它们应当保持分开。而低卡方值表明它们具有相似的类分布。 这个讲的很清楚。