卡方检验筛选特征
利用 χ 2 \chi^2 χ2筛选特征时,我们计算每个特征和类标之间的 χ 2 \chi^2 χ2统计量,最后选择 χ 2 \chi^2 χ2分数最高的k个特征。
χ 2 \chi^2 χ2检验
χ 2 \chi^2 χ2独立性检验用于检验两个类别型变量之间是否存在显著的关联关系。
特征x | 正类 | 负类 | 总计 |
---|---|---|---|
x = 1 x=1 x=1 | A A A | B B B | A + B = M A+B=M A+B=M |
x = 0 x=0 x=0 | C C C | D D D | C + D = N − M C+D=N-M C+D=N−M |
总计 | A + C = P A+C=P A+C=P | B + D = N − P B+D=N-P B+D=N−P | N N N |
令 A , B , C , D A,B,C,D A,B,C,D表示观测到的数量, E A , E B , E C , E D E_A,E_B,E_C,E_D EA,EB,EC,ED分别表示期望值。
基于原假设,即变量之间相互独立,那么
x
=
1
x=1
x=1出现在正类中的概率应该等于
x
=
1
x=1
x=1出现在所有样本中的概率,因此我们有
E
A
A
+
C
=
A
+
B
N
⟹
E
A
=
A
+
B
N
(
A
+
C
)
\frac{E_A}{A+C}=\frac{A+B}{N}\Longrightarrow E_A=\frac{A+B}{N}(A+C)
A+CEA=NA+B⟹EA=NA+B(A+C)
同理可求出
E
A
,
E
B
,
E
C
,
E
D
E_A,E_B,E_C,E_D
EA,EB,EC,ED。
χ 2 \chi^2 χ2统计量的计算公式为:
χ 2 = 1 d ∑ k = 1 K ( O k − E k ) 2 E k = ( A − E A ) 2 E A + ( B − E B ) 2 E B + ( C − E C ) 2 E C + ( D − E D ) 2 E D \chi^2 =\frac{1}{d} \sum_{k=1}^{K}\frac{(O_k-E_k)^2}{E_k}\\ =\frac{(A-E_A)^2}{E_A}+\frac{(B-E_B)^2}{E_B}+\frac{(C-E_C)^2}{E_C}+\frac{(D-E_D)^2}{E_D} χ2=d1k=1∑KEk(Ok−Ek)2=EA(A−EA)2+EB(B−EB)2+EC(C−EC)2+ED(D−ED)2
其中 d = ( r o w s − 1 ) ( c o l s − 1 ) = ( 2 − 1 ) ( 2 − 1 ) = 1 d=(rows-1)(cols-1)=(2-1)(2-1)=1 d=(rows−1)(cols−1)=(2−1)(2−1)=1为自由度。
如果我们拒绝原假设 ( p < = t h r e s h o l d ) (p <= threshold) (p<=threshold),则特征 x x x在我们模型中是一个重要的变量。
注意使用 χ 2 \chi^2 χ2检验的前提:
- 类别型变量
- 频率至少为5
- 变量独立抽样
Python 中利用 χ 2 \chi^2 χ2检验筛选特征
# Load libraries
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
#Load Data
# Load iris data
iris = load_iris()
# Create features and target
X = iris.data
y = iris.target
# Convert to categorical data by converting data to integers
X = X.astype(int)
#Compare Chi-Squared Statistics
# Select two features with highest chi-squared statistics
chi2_selector = SelectKBest(chi2, k=2)
X_kbest = chi2_selector.fit_transform(X, y)
# Show results
print('Original number of features:', X.shape[1])
print('Reduced number of features:', X_kbest.shape[1])
t检验和卡方检验
简单介绍T检验和卡方检验
T检验
卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,卡方值越大,越不符合;卡方值越小,偏差越小,越趋于符合,若两个值完全相等时,卡方值就为0,表明理论值完全符合。
适用条件:卡方检验适用于分类变量,主要涉及到的是二分类变量的理论值和实际值的检测。
T检验(T Test)是最常见的一种假设检验类型,主要验证总体均值间是否存在显著性差异。T检验属于参数假设检验,所以它适用的范围是数值型的数据,在网站分析中可以是访问数、独立访客数、停留时间等,电子商务的订单数、销售额等。T检验还需要符合一个条件——总体符合正态分布。
参考文献
Chi Square Feature Selection in Python
Chi Square test for feature selection