特征选择:相关性
专题介绍:R是一种广泛用于数据分析和统计计算的强大语言,于上世纪90年代开始发展起来。得益于全世界众多 爱好者的无尽努力,大家继而开发出了一种基于R但优于R基本文本编辑器的R Studio(用户的界面体验更好)。也正是由于全世界越来越多的数据科学社区和用户对R包的慷慨贡献,让R语言在全球范围内越来越流行。其中一些R包,例如MASS,SparkR, ggplot2,使数据操作,可视化和计算功能越来越强大。R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。R作为一种统计分析软件,是集统计分析与图形显示于一体的。它可以运行于UNIX、Windows和Macintosh的操作系统上,而且嵌入了一个非常方便实用的帮助系统,相比于其他统计分析软件,R的学术性开发比较早,适合生物学和医学等学术学科的科研人员使用。
我们研究两个连续变量或者特征的相关性,通常使用皮尔逊相关系数(Pearson correlation coefficient)。特征集之间的相关性,可以用来删除冗余的特征;特征集与目标变量集之间的相关性,可以用来删除无关的特征。
皮尔逊相关系数的计算公式:
-
相关系数r接近于1,表明强正相关;
-
相关系数r接近于-1,表明强负相关;
-
相关系数r接近于0,表明没有相关性。
R语言实现相关系数的特征选择,包括两种情况:
一是:特征集之间的相关性分析,以删除冗余特征;
二是:特征集与目标变量的相关性分析,以删除无关特征。
参考代码:
###########################
#特征选择:相关系数
###########################
# 第一种情况:冗余性
# 利用相关性分析特征之间的关系,删除冗余的特征
# R包
library(mlbench)
library(caret)
# 加载数据集
data("PimaIndiansDiabetes")
# 数据集的变量类型探索
sapply(PimaIndiansDiabetes, class)
# 计算连续变量的特征集矩阵的相关系数
cor_matrix <- cor(PimaIndiansDiabetes[,1:8])
print(cor_matrix)
# 基于相关系数做特征选择
# 输出冗余特征集的索引位置
high_cor <- findCorrelation(cor_matrix, cutoff = 0.5)
print(high_cor)
selected_vars <- names(PimaIndiansDiabetes)[-high_cor]
print(selected_vars)
# 第二种情况:无关性
# 利用相关性分析特征与目标变量之间的关系,删除无关的特征
# R包
library(mlbench)
library(FSelector)
# 加载数据集
data(BostonHousing)
# 数据集的变量类型探索
sapply(BostonHousing, class)
# 选择连续变量的特征集
d <- BostonHousing[-4]
weights <- linear.correlation(medv~., d)
print(weights)
# 获取Top3的特征集
subset <- cutoff.k(weights, 3)
print(subset)
文章推荐

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