机器学习-特征选择:如何使用相关性分析精确选择最佳特征?

简介: 本文致力于利用相关性分析来辅助特征选择过程。相关性分析作为一种用于量化特征之间关系的方法,可以帮助我们理解数据中的潜在模式和相互作用。通过分析特征之间的相关性,我们可以更加准确地选择具有高预测能力和独立性的特征,从而提高特征选择的效果和结果。

相关性分析与最佳特征选择流程# 一、引言「特征选择」在机器学习中发挥着重要的作用,它的目标是从众多可用特征中挑选出最具预测能力的特征子集,以提高模型性能和泛化能力。然而,由于现实中的数据集通常具有大量特征和复杂的相关性,特征选择变得非常具有挑战性。因此,寻找一种精确选择最佳特征的方法成为了研究的关键问题。


为了解决这个问题,本文致力于利用相关性分析来辅助特征选择过程。相关性分析作为一种用于量化特征之间关系的方法,可以帮助我们理解数据中的潜在模式和相互作用。通过分析特征之间的相关性,我们可以更加准确地选择具有高预测能力和独立性的特征,从而提高特征选择的效果和结果。


二、特征选择方法概述



特征选择是机器学习和数据挖掘中的关键步骤,用于从原始特征中选择出最具有代表性和预测能力的子集。在本节中,我们将详细介绍特征选择的三种常见方法:过滤式特征选择、包裹式特征选择和嵌入式特征选择。


2.1 过滤式特征选择


「过滤式特征选择」是一种基于特征本身的统计指标为基准进行特征评估和筛选的方法。它独立于任何特定的机器学习算法,并在特征选择前独立进行。过滤式特征选择的主要步骤包括统计指标计算和阈值设定。


  1. 「统计指标」:是用于衡量特征与目标变量之间相关性的度量。常用的统计指标包括方差、相关系数、卡方检验和互信息等。方差衡量特征的变异性,相关系数衡量特征与目标变量之间的线性关系,卡方检验用于离散特征的相关性检验,互信息用于衡量特征与目标变量之间的信息量。
  2. 「阈值设定」:通过设定阈值,我们可以根据统计指标的大小来筛选特征子集。通常,我们会选择与目标变量相关性高于阈值的特征。阈值的选择可以根据实际问题的需求和数据集的特点进行调整。

2.2 包裹式特征选择


包裹式特征选择是一种以特定机器学习算法的性能指标为基准进行特征评估和选择的方法。它将特征选择视为一个搜索问题,通过评估不同特征子集的性能来确定最佳特征组合。


  1. 「评估指标」:用于衡量特征子集的性能。常用的评估指标包括交叉验证准确率、均方误差、F1分数等,具体选择哪个评估指标取决于问题类型和任务需求。通过在特征子集上训练和评估机器学习模型,我们可以获得评估指标的值。
  2. 「搜索算法」:用于在特征子集空间中寻找最佳的特征组合。常用的搜索算法包括贪婪搜索、遗传算法、回溯算法等。这些算法通过不断地添加或删除特征,或者进行特征子集的组合和交换,来探索特征子集空间并寻找最佳的特征组合。


2.3 嵌入式特征选择


嵌入式特征选择是一种将特征选择与机器学习模型训练过程相结合的方法。它通过在模型训练过程中对特征进行惩罚或评估,实现同时进行特征选择和模型优化的目的。


  1. 「基于惩罚项的方法」: 使用正则化的技术,在目标函数中引入惩罚项来约束特征的系数。常见的基于惩罚项的方法包括L1正则化(Lasso)和L2正则化(Ridge),它们分别通过对特征的系数进行稀疏化和缩减,实现特征选择的效果。
  2. 「模型训练中的特征选择」:在一些机器学模型中,特征选择可以直接嵌入到模型训练的过程中,以在模型训练过程中动态选择和调整特征。


三、相关性分析与特征选择



相关性分析是特征选择过程中的重要步骤,用于评估特征与目标变量之间的相关性。通过分析特征与目标变量的相关关系,我们可以确定哪些特征对于预测目标变量是最具有预测能力的,从而帮助我们进行有效的特征选择。


  • 「相关性度量方法」

在进行相关性分析时,常用的相关性度量方法包括相关系数和其他相关性度量方法。

  1. 「相关系数」:是衡量两个变量之间线性相关程度的度量。常见的相关系数包括皮尔逊相关系数和斯皮尔曼相关系数。皮尔逊相关系数用于衡量两个连续变量之间的线性相关性,取值范围为-1到1,其中1表示正相关,-1表示负相关,0表示无相关性。斯皮尔曼相关系数用于衡量两个变量之间的单调相关性,不受线性关系的限制。
  2. 「其他相关性度量方法」:除了相关系数,还有其他一些相关性度量方法可用于分析特征和目标变量之间的相关性。例如,互信息可用于衡量两个变量之间的信息量。卡方检验可用于比较离散型特征与分类目标之间的相关性。这些方法可以根据具体问题的要求和数据的特点进行选择和应用。


  • 「相关性分析和特征选择的结合」
  1. 「过滤式特征选择中」,相关性分析被广泛应用于评估特征与目标变量之间的相关性。通过计算相关系数或其他相关性度量,我们可以筛选出与目标变量相关性较高的特征。设定合适的阈值,我们可以选择保留相关性高于阈值的特征,从而减少特征空间的维度,提高模型的训练效率。
  2. 「在包裹式特征选择中」,相关性分析可以用于评估特征子集的性能。通过计算特征子集与目标变量之间的相关性,我们可以确定特征子集的预测能力。在搜索算法中,通过不断地选择和排除特征,我们可以寻找具有最大相关性和最优性能的特征子集。
  3. 「在嵌入式特征选择中」,相关性分析可以影响模型训练过程中的特征选择。通过引入惩罚项或评估特征的重要性,模型可以倾向于选择与目标变量高度相关的特征。相关性分析可以帮助我们选择具有较高相关性的特征,并在模型训练过程中进行特征选择和模型优化。


四、相关性与特征选择流程



  1. 数据准备与预处理
  2. 相关性分析的实施


  • 收集数据:收集特征和目标变量的数据。
  • 计算相关性:使用合适的相关性度量方法计算特征与目标变量之间的相关性。常见的方法包括皮尔逊相关系数、斯皮尔曼相关系数、互信息、卡方检验等。根据数据的类型和问题的需求选择合适的方法。
  • 可视化分析:使用散点图、热力图、相关性矩阵等可视化工具将相关性结果进行可视化,以更直观地了解特征之间和特征与目标变量之间的相关性。


  1. 特征选择方法的选择与执行

根据问题的特点和数据集的规模,选择合适的特征选择方法进行特征选择。


  • 过滤式特征选择:基于统计指标和阈值设定的方法,选择与目标变量相关性高于一定阈值的特征。
  • 包裹式特征选择:基于评估指标和搜索算法,通过评估特征子集的性能来选择最佳特征子集。
  • 嵌入式特征选择:将特征选择嵌入到模型训练过程中,通过惩罚项或模型训练中的特征评估来选择特征。


  1. 型性能评估与调整

在完成特征选择后,需要使用选定的特征训练模型并评估模型的性能。根据评估结果,可以调整特征选择的方法、参数或模型的超参数,以进一步提高模型的性能。


五、实例演示



5.1 数据集载入


library(survival)
str(gbsg)


结果展示:


'data.frame':   686 obs. of  10 variables:
 $ age    : int  49 55 56 45 65 48 48 37 67 45 ...
 $ meno   : int  0 1 1 0 1 0 0 0 1 0 ...
 $ size   : int  18 20 40 25 30 52 21 20 20 30 ...
 $ grade  : int  2 3 3 3 2 2 3 2 2 2 ...
 $ nodes  : int  2 16 3 1 5 11 8 9 1 1 ...
 $ pgr    : int  0 0 0 0 0 0 0 0 0 0 ...
 $ er     : int  0 0 0 4 36 0 0 0 0 0 ...
 $ hormon : int  0 0 0 0 1 0 0 1 1 0 ...
 $ rfstime: int  1838 403 1603 177 1855 842 293 42 564 1093 ...
 $ status : Factor w/ 2 levels "0","1": 1 2 1 1 1 2 2 1 2 2 ...
age:患者年龄
meno:更年期状态(0表示未更年期,1表示已更年期)
size:肿瘤大小
grade:肿瘤分级
nodes:受累淋巴结数量
pgr:孕激素受体表达水平
er:雌激素受体表达水平
hormon:激素治疗(0表示否,1表示是)
rfstime:复发或死亡时间(以天为单位)
status:事件状态(0表示被截尾,1表示事件发生)


5.2 相关性分析与特征选择


我们这部分先演示过滤式特征选择,如果想了解其它的两种特征选择方法,关注和联系我,我们一起讨论和学习。在这个数据集,我比较感兴趣的是各个特征与死亡或者复发时间的感兴趣。


  • 计算相关系数R和p值


# 计算皮尔逊相关系数
cor_pearson <- cor.test(gbsg$age, gbsg$rfstime, method = "pearson")
cor_pearson
# 计算Spearman相关系数
cor_spearman <- cor.test(gbsg$age, gbsg$rfstime, method = "spearman")
cor_spearman
# 计算Kendall's tau
cor_kendall <- cor.test(gbsg$age, gbsg$rfstime, method = "kendall")
cor_kendall


结果展示:


# > cor_pearson
        Pearson's product-moment correlation
data:  gbsg$age and gbsg$rfstime
t = 1.4132, df = 684, p-value = 0.158
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.02098285  0.12829501
sample estimates:
       cor 
0.05395755 
# > cor_spearman
        Spearman's rank correlation rho
data:  gbsg$age and gbsg$rfstime
S = 51463976, p-value = 0.2552
alternative hypothesis: true rho is not equal to 0
sample estimates:
     rho 
0.043504 
# > cor_kendall
        Kendall's rank correlation tau
data:  gbsg$age and gbsg$rfstime
z = 1.0904, p-value = 0.2756
alternative hypothesis: true tau is not equal to 0
sample estimates:
       tau 
0.02821487


其中p-value即是P值,然后sample estimates的值就是R。这里介绍一下R和P的关系,以及这些参数怎么理解。


「R绝对值代表相关性,关系如下:」

  • 绝对值小于0.3:可认为两个特征之间的相关性较弱。
  • 绝对值约为0.3-0.5之间:可认为两个特征之间存在中度相关性。
  • 绝对值大于0.5:可认为两个特征之间存在较强的相关性。


「P值的理解:」

  • 小于0.05,可以认为两组特征关系显著
  • 大于0.05,可以认为两组特征关系不显著


「总结:是否相关看P值,相关类型和程度看R」


  • 图形化展示


优美的图形总是比单纯的数字更加形象和显著。让我们开始数据可视化模块吧!


library(ggplot2)
library(ggpubr)
library(ggExtra)
p1=ggplot(gbsg, aes(age,rfstime)) + 
      xlab("age")+ylab("rfstime")+
      geom_point(shape = 21, colour = "#4682B4", fill = "#87CEFA", size = 3, stroke = .5,alpha=0.8)+ geom_smooth(method="lm",formula = y ~ x,linetype=2,color="#6495ED",fill="#D3D3D3") + theme_bw()+
      stat_cor(method = 'spearman', aes(x =age, y =rfstime))
p2=ggMarginal(p1, type = "density", xparams = list(fill = "#FFE4B5"),yparams = list(fill = "#90EE90"))
p2

640.png


R值为0.044,弱相关;p为0.26,大于0.05,可以认为这两个特征之间相关性在统计上不显著。可以排除掉!


六、总结



相关性分析具有一定的局限性,如下:


  • 异常值的影响:相关性分析对异常值敏感,如果数据中存在异常值,可能会对相关性结果产生不良影响。
  • 非线性关系:皮尔逊相关系数假设变量之间存在线性关系,对于非线性关系,相关性分析可能会得出错误的结论。
  • 罪魁祸首谬误:相关性只能显示两个变量之间存在关系,不能确定其中任何一个变量是导致另一个变量发生变化的原因,即不能推断因果关系。
  • 样本大小:相关性的可靠性和显著性检验通常受到样本大小的影响。较小的样本容量可能导致不准确或不具有代表性的相关性结果。


改进方式,如下:


  • 多元回归分析:相比于简单的相关性分析,多元回归分析可以考虑多个变量之间的相互影响,从而更准确地解释变量之间的关系。
  • 非参数方法:针对非线性关系,可以采用非参数方法,如局部加权回归(LOESS)或核密度估计等,以获得更准确的相关性结果。
  • 考虑时间序列:对于时间相关的数据,可以使用时间序列分析方法,如自相关函数(ACF)和偏自相关函数(PACF),以揭示变量之间的动态关系。
  • 引入因果关系研究:除了相关性分析,更深入的研究可以包括因果关系的探索,通过实验设计或因果推理方法来确定变量之间的因果关系。
  • 多源数据整合:随着大数据时代的到来,将多个数据源整合起来可以提供更全面和准确的相关性分析结果,例如结合社交媒体数据、经济指标和医疗数据等
目录
相关文章
|
1天前
|
机器学习/深度学习 API Python
机器学习特征降维
这篇内容概述了特征降维在机器学习中的重要性,包括三个主要方法:低方差过滤法、PCA(主成分分析)和相关系数法。低方差过滤法通过删除方差低于阈值的特征来减少无关信息;PCA通过正交变换降低数据的维数,保留大部分信息;相关系数法(如皮尔逊和斯皮尔曼相关系数)用于评估特征间的相关性,去除高度相关的特征以简化模型。这些技术有助于提高模型效率和泛化能力。
|
3天前
|
机器学习/深度学习 计算机视觉
【机器学习】YOLOv10与YOLOv8分析
【机器学习】YOLOv10与YOLOv8分析
17 6
|
3天前
|
机器学习/深度学习 存储 自然语言处理
【机器学习】LoRA:大语言模型中低秩自适应分析
【机器学习】LoRA:大语言模型中低秩自适应分析
23 5
|
3天前
|
机器学习/深度学习 数据采集 算法
基于机器学习的糖尿病风险预警分析系统是一个非常有用的应用
基于机器学习的糖尿病风险预警分析系统是一个非常有用的应用
12 1
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】在电子商务(淘*拼*京*—>抖)的应用分析
【机器学习】在电子商务(淘*拼*京*—>抖)的应用分析
13 1
|
3天前
|
机器学习/深度学习 计算机视觉
【机器学习】LoFTR:革命性图像特征批评技术等领跑者
【机器学习】LoFTR:革命性图像特征批评技术等领跑者
7 1
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】贝叶斯算法在机器学习中的应用与实例分析
【机器学习】贝叶斯算法在机器学习中的应用与实例分析
11 1
|
5天前
|
机器学习/深度学习 算法 Python
机器学习算法的比较与选择是在实际应用中非常重要的一步,不同的算法适用于不同的问题和数据特征。
机器学习算法的比较与选择是在实际应用中非常重要的一步,不同的算法适用于不同的问题和数据特征。
|
5天前
|
机器学习/深度学习 数据采集 监控
基于机器学习的糖尿病风险预警分析系统
基于机器学习的糖尿病风险预警分析系统
17 1
|
12天前
|
机器学习/深度学习 人工智能 分布式计算
人工智能平台PAI产品使用合集之如何使用separator进行多值特征的分割
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。

热门文章

最新文章