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

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

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


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


二、特征选择方法概述



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


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),以揭示变量之间的动态关系。
  • 引入因果关系研究:除了相关性分析,更深入的研究可以包括因果关系的探索,通过实验设计或因果推理方法来确定变量之间的因果关系。
  • 多源数据整合:随着大数据时代的到来,将多个数据源整合起来可以提供更全面和准确的相关性分析结果,例如结合社交媒体数据、经济指标和医疗数据等
目录
打赏
0
0
0
0
15
分享
相关文章
机器学习特征筛选:向后淘汰法原理与Python实现
向后淘汰法(Backward Elimination)是机器学习中一种重要的特征选择技术,通过系统性地移除对模型贡献较小的特征,以提高模型性能和可解释性。该方法从完整特征集出发,逐步剔除不重要的特征,最终保留最具影响力的变量子集。其优势包括提升模型简洁性和性能,减少过拟合,降低计算复杂度。然而,该方法在高维特征空间中计算成本较高,且可能陷入局部最优解。适用于线性回归、逻辑回归等统计学习模型。
106 7
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
本文探讨了数据基础设施设计中常见的一个问题:数据仓库或数据湖仓中的表格缺乏构建高性能机器学习模型所需的历史记录,导致模型性能受限。为解决这一问题,文章介绍了缓慢变化维度(SCD)技术,特别是Type II类型的应用。通过SCD,可以有效追踪维度表的历史变更,确保模型训练数据包含完整的时序信息,从而提升预测准确性。文章还从数据工程师、数据科学家和产品经理的不同视角提供了实施建议,强调历史数据追踪对提升模型性能和业务洞察的重要性,并建议采用渐进式策略逐步引入SCD设计模式。
197 8
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
特征平台PAI-FeatureStore的功能列表
本内容介绍了阿里云PAI FeatureStore的功能与使用方法,涵盖离线和在线特征管理、实时特征视图、行为序列特征视图、FeatureStore SDK的多语言支持(如Go、Java、Python)、特征生产简化方案、FeatureDB存储特性(高性能、低成本、及时性)、训练样本导出以及自动化特征工程(如AutoFE)。同时提供了相关文档链接和技术细节,帮助用户高效构建和管理特征工程。适用于推荐系统、模型训练等场景。
54 2
|
1月前
PAI-Rec推荐平台对于实时特征有三个层次
PAI-Rec推荐平台针对实时特征有三个处理层次:1) 离线模拟反推历史请求时刻的实时特征;2) FeatureStore记录增量更新的实时特征,模型特征导出样本准确性达99%;3) 通过callback回调接口记录请求时刻的特征。各层次确保了实时特征的准确性和时效性。
57 0
机器学习模型中特征贡献度分析:预测贡献与错误贡献
本文将探讨特征重要性与特征有效性之间的关系,并引入两个关键概念:预测贡献度和错误贡献度。
742 3
使用PAI-FeatureStore管理风控应用中的特征
PAI-FeatureStore 是阿里云提供的特征管理平台,适用于风控应用中的离线和实时特征管理。通过MaxCompute定义和设计特征表,利用PAI-FeatureStore SDK进行数据摄取与预处理,并通过定时任务批量计算离线特征,同步至在线存储系统如FeatureDB或Hologres。对于实时特征,借助Flink等流处理引擎即时分析并写入在线存储,确保特征时效性。模型推理方面,支持EasyRec Processor和PAI-EAS推理服务,实现高效且灵活的风险控制特征管理,促进系统迭代优化。
94 6
机器学习与大数据分析的结合:智能决策的新引擎
机器学习与大数据分析的结合:智能决策的新引擎
403 15
机器学习在运维中的实时分析应用:新时代的智能运维
机器学习在运维中的实时分析应用:新时代的智能运维
174 12
【大数据分析&机器学习】分布式机器学习
本文主要介绍分布式机器学习基础知识,并介绍主流的分布式机器学习框架,结合实例介绍一些机器学习算法。
831 5

热门文章

最新文章