特征选择:卡方检验
专题介绍:R是一种广泛用于数据分析和统计计算的强大语言,于上世纪90年代开始发展起来。得益于全世界众多 爱好者的无尽努力,大家继而开发出了一种基于R但优于R基本文本编辑器的R Studio(用户的界面体验更好)。也正是由于全世界越来越多的数据科学社区和用户对R包的慷慨贡献,让R语言在全球范围内越来越流行。其中一些R包,例如MASS,SparkR, ggplot2,使数据操作,可视化和计算功能越来越强大。R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。R作为一种统计分析软件,是集统计分析与图形显示于一体的。它可以运行于UNIX、Windows和Macintosh的操作系统上,而且嵌入了一个非常方便实用的帮助系统,相比于其他统计分析软件,R的学术性开发比较早,适合生物学和医学等学术学科的科研人员使用。

卡方检验是一种统计量的分布在零假设成立时近似服从卡方分布的假设检验。在没有其他的限定条件或说明下,卡方检验一般指的是皮尔森卡方检验。——《维基百科》
上图表示分别在1、2、3、4、5的自由度下,卡方统计量(X轴)与P值(P-value,Y轴)之间的变化关系。
特征选择是针对所要解决的问题从原始特征集选择到一组最佳的特征子集,具体包括删除无关的,冗余的,含有噪声的特征。
对于分类问题,在Filter方法中一般假设与分类目标独立的特征为无关特征,而卡方检验可以进行独立性检验,所以其适用于特征选择。
K方检验做特征选择属于一种Filter方法,如果检验结果是某个特征与标签独立,则可以删除该特征。

现在利用R语言实现卡方检验的特征选择。
参考代码如下:
##################
#特征选择:K方检验
#################
# R包
library(FSelector)
library(mlbench)
# 导入数据集
data(HouseVotes84)
# 数据集变量类型查看
sapply(HouseVotes84, class)
# 目标变量的分布
table(HouseVotes84$Class)
# 利用K方检验判断特征集与目标变量是否无关
weights <- chi.squared(Class~., HouseVotes84)
print(weights)
# 特征选择的策略
# 1)按着Top-N的方法选择特征集
subset <- cutoff.k(weights, 5)
print(subset)
# 2)按着Top-P(百分比)的方法选择特征集
subset1 <- cutoff.k.percent(weights, 0.2)
print(subset1)
# 利用选择的特征集与目标变量组合成新的拟合关系式子
f1 <- as.simple.formula(subset, 'Class')
print(f1)
f2 <- as.simple.formula(subset1, 'Class')
print(f2)
结果如下:
思考题:
1 卡检验的计算逻辑是什么?
2 卡方检验可以做什么?
文章推荐

请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!