pearson特征选择matlab,常用的特征选择方法之 Pearson 相关系数

article/2025/11/5 12:57:23

众所周知,特征选择是机器学习活动至关重要的一步。最理想的情况下,我们把所有影响目标的独立因素给找出来,然后使用合适的量化手段,就能够得到完美描述目标问题的特征列表,用这些特征去建立合适容量的模型,这样的模型能够完美的匹配我们要解决的任务。

但是实际上这种想法太难实现了,我们往往只能从已有的数据出发,通过一些特征变换和组合得到一些原始特征,然后从这些原始特征中选出与目标相关的特征。

随着深度网络的崛起,越来越多的未经复杂变换的原始特征被加入到了深度网络中,大家期待有用的特征能够被自动的抽取和组合出来。但是这并不意味着特征工程就不需要了,推荐系统的大牛 Xavier 在技术博客《Rules of Machine Learning: Best Practices for ML Engineering》中提到很多关于特征工程的建议,非常值得一读,其中包含的思想就是特征是随着系统的优化进程而逐步添加的,并非一蹴而就,要始终保证特征的简单、直观、可复用、可监控和可靠性,这意味着我们需要时常对系统中存量特征做测试和筛选。

特征选择通常有过滤法(Filter)、打包法(Wrap)和嵌入法(Embed),其中,后两者都是与模型相关的,需要具体问题具体对待,而过滤法是指对特征进行预处理,提前过滤掉一些对目标无益(即对模型无益)的特征,它只考虑任务目标,而与模型无关。

我打算把常用的特征选择方法都再回顾一遍,力争把每种方法都讲得通俗易懂。这篇文章先介绍 Pearson 相关系数。

Pearson 相关系数的定义

Pearson 相关系数是用来检测两个连续型变量之间线性相关的程度,取值范围为 $[-1,1]$,正值表示正相关,负值表示负相关,绝对值越大表示线性相关程度越高。在实际做特征工程时候,如果两个变量的相关系数取值为负,可以将特征变量取负号,使之与目标变量正相关,这样来保证所有特征与目标之间都是正相关。

两个变量之间的 Pearson 相关系数定义为两个变量之间的协方差和标准差的商:

上式定义了总体相关系数,常用希腊小写字母 $\rho$ 作为代表符号。估算样本的协方差和标准差,可得到样本 Pearson 相关系数,用英文小写字母 $r$ 表示:

记 $\boldsymbol{x}’=\boldsymbol{x}-\overline{x}$ 和 $\boldsymbol{y}’=\boldsymbol{y}-\overline{y}$ 表示对变量 $\boldsymbol{x}$ 和 $\boldsymbol{y}$ 进行 $0$ 均值化,则实际上 $\boldsymbol{x}$ 和 $\boldsymbol{y}$ 的 Pearson 相关系数就是 $\boldsymbol{x}’$ 和 $\boldsymbol{y}’$ 的 cosine 相似度:$r_{\boldsymbol{x},\boldsymbol{y}}=\cos(\boldsymbol{x}’,\boldsymbol{y}’)=\frac{\boldsymbol{x}’\cdot\boldsymbol{y}’}{|\boldsymbol{x}’|\cdot|\boldsymbol{y}’|}$。

Pearson 相关系数的使用条件

使用 Pearson 相关系数之前需要检查数据是否满足前置条件:

两个变量间有线性关系;

变量是连续变量;

变量均符合正态分布,且二元分布也符合正态分布;

两变量独立;

两变量的方差不为 0;

这些条件在实际中很容易被忽略。

例如,在视频推荐中,我们可以将用户对视频的播放完成度作为目标变量,检测其他连续型特征与它的相关性,或者将这些连续型特征做特定的变换后,检测其与播放完成度的相关性。

但是播放完成度实际上不是正态分布的,如下图所示(实际上大多数日志统计特征,如用户播放视频数、视频播放完成度等,也都不服从正态分布),因此实际上是不能使用 Pearson 相关系数的,这时候可以用 Spearman 或者 Kendall 相关系数来代替。

1d7597eb82dce1443cbcafae5e3e8ec1.png

另外要注意的是,如果两个变量本身就是线性的关系,那么 Pearson 相关系数绝对值越大相关性越强,绝对值越小相关性越弱;但在当两个变量关系未知情况下,Pearson 相关系数的大小就没有什么指导意义了,它的绝对值大小并不能表征变量间的相关性强弱,这个时候最好能够画图出来看看作为辅助判断。我会在下面的例子里再详细的说明这一点。

举例说明

我们举个例子来看如何计算 Pearson 相关系数(这里仅仅演示计算过程,实际上数据的分布也不满足使用 Pearson 相关系数的条件)。

考虑视频推荐场景下,假设我们的目标 (之一) 是最大化视频的播放完成度 $y$,播放完成度的取值范围是 $[0,1]$,我们需要分析哪些因素跟 $y$ 相关,例如有一维特征是表示用户对视频的偏好度,记为 $x$,它的取值范围也是 $[0,1]$,我们把几条样本中 $x$ 和 $y$ 的取值计算出来,并画成散点图,如下所示:

ee5abae215d49cf3997c32b06d323d7d.png

我们可以按照公式 (2) 来计算 $x$ 与 $y$ 的 Pearson 相关系数:

计算变量平均值:$\overline{x} = 0.5,\ \overline{y}=0.55$;

计算平移后的变量:$\boldsymbol{x}=[-0.4,-0.3,-0.2,-0.1,0.1,0.2,0.3,0.4]$,$\boldsymbol{y}=[-0.45,-0.45,-0.35,0.05,0.15,0.25,0.35,0.45]$;

计算公式 (2) 的结果:$r=\frac{0.73}{\sqrt{0.6}\cdot\sqrt{ 0.94}}=0.972$;

通过计算,我们发现,这个特征与目标变量之间的线性相关性非常高,这与我们看图得到的认知是一致的。因此我们可以把这一维特征作为有效特征加入。

但是,如果我们对这个例子稍加修改,将最后一个数据点 $(0.9,1.0)$ 改为 $(0.9,-1.0)$,如图 3 所示:

6fd6c5921ad6bed8e14e7bd6d2401ed6.png

从我们的观察来看,最后一个数据点可能是噪声或者异常值,对我们判断两个变量的线性相关性应该不造成影响,但是实际上,我们再次计算一下这两个变量的 Pearson 相关系数,此时的值仅仅只有 $-0.0556$,可以说是几乎不线性相关了,这说明 Pearson 相关系数小并不代表线性相关性一定弱。在这种情况下,我们应该在数据清洗阶段把特征的异常值过滤或者平滑掉以后,再计算它与目标的相关系数。

反过来,Pearson 相关系数大也并不代表线性相关性一定强。图 4 列举了几个 Pearson 相关系数均为 $0.816$ 的变量数据,其中有些变量间并非明显的线性相关,或者是明显的二次相关,只是 Pearson 相关系数恰好较大而已。

9aa3bfe6a159613fbac56af062a10568.png

附示例的 python 代码:

1

2

3

4

5

6

7

8>>>from scipy.stats import pearsonr

>>>x = [0.1, 0.2, 0.3, 0.4, 0.6, 0.7, 0.8, 0.9]

>>>y = [0.1, 0.1, 0.2, 0.6, 0.7, 0.8, 0.9, 1.0]

>>>pearsonr(x, y)

(0.97203814535663591, 5.3516208203873684e-05)

>>>z = [0.1, 0.1, 0.2, 0.6, 0.7, 0.8, 0.9, -1.0]

>>>pearsonr(x, z)

(-0.055618651039326214, 0.89592989552025337)

这里,pearsonr 返回的第二个结果是 p-value,其具体含义可参考官方文档。

Take-aways

本文简单的介绍了基于 Pearson 相关系数的特征选择方法,主要注意点总结如下:

Pearson 相关系数是用来检测两个连续型变量之间线性相关的程度,并且要求这两个变量分别分布服从正态分布;

Pearson 相关系数仅能度量变量间的线性相关性,如果变量间相关性未知,则 Pearson 相关系数的大小没有指导意义,此时需要借助可视化手段辅助判断;

两变量的 Pearson 相关系数实际上是这两个变量 $0$ 均值化后的 cosine 相似度;

如果两个变量是非线性相关,为了使用线性模型,可以先将特征变量进行非线性变换,使之与目标线性相关;

Pearson 相关系数对异常值比较敏感,在数据清洗阶段需要将异常值过滤或者平滑处理。


http://chatgpt.dhexx.cn/article/Kn5R6JQD.shtml

相关文章

机器学习特征选择方法

文章目录 前言特征选择过滤法Pearson系数卡方检验互信息和最大信息系数距离相关系数方差选择法 包装法嵌入法 总结 前言 最近在看吴恩达的深度学习机器学习课程。地址:deeplearningai。课程在机器学习特征工程的课程中提到特征选择。在机器学习项目生命周期里&…

特征选择-单变量特征选择

1.SelectKBest可以依据相关性对特征进行选择,保留k个评分最高的特征。 ①方差分析 分类问题使用f_classif,回归问题使用f_regression。 f_classif:分类任务 跟目标的分类,将样本划分成n个子集,S1,S2,..,Sn&#xf…

特征选择的几种方法

目录 1、 过滤法(Filter) 1.1 方差选择法 1.2 相关系数法 1.3 卡方检验 1.4 互信息法 1.5 relief算法 2、包裹法(Wrapper) 2.1 递归特征消除法 2.2 特征干扰法 3、嵌入法(Embedded) 3.1 基于惩罚…

特征选择-嵌入式选择

嵌入式特征选择是将特征选择过程与学习器训练过程融为一体,两者在同一个优化过程中完成,即在学习器训练过程中自动地进行了特征选择。 基于惩罚项的特征选择法 给定数据集 D { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x n , y n ) }…

特征选择案例

特征降维(P443) 特征降低维度分两种方法:特征选择和特征抽取。 特征选择:选择全部特征的一个子集作为特征向量。 特征抽取:通过已有特征的组合建立一个新的特征子集。 主成分分析方法(PCA)就…

机器学习-特征选择

特征选择 1、简述特征选择的目的。 减轻维数灾难问题:特征个数越多,模型也会越复杂,其泛化能力会下降。 降低学习任务的难度: 特征个数越多,分析特征、训练模型所需的时间就越长。 特征选择能够明显的改善学习器的精…

lasso特征选择python_特征选择怎么做?这篇文章告诉你

原标题:特征选择怎么做?这篇文章告诉你 照片由 Clem Onojeghuo 发布在 Unsplash 上面 作者 | Pier Paolo Ippolito 翻译 | Skura 编辑 | 唐里 原文标题:Feature Selection Techniques 原文链接:https://towardsdatascience.com/feature-selection-techniques-1bfab5fe0784 …

python方差特征选择_特征选择-Filter过滤法(方差)

3.1 Filter过滤法 过滤方法通常用作预处理步骤,特征选择完全独立于任何机器学习算法。它是根据各种统计检验中的分数以及相关 性的各项指标来选择特征。 3.1.1 方差过滤 3.1.1.1 VarianceThreshold 这是通过特征本身的方差来筛选特征的类。比如一个特征本身的方差很小,就表示…

特征选择与特征提取

目录 一、 特征选择1、特征2、特征选择3、扩展——特征选择算法(有兴趣和精力可了解)拓展--完全搜索:拓展--启发式搜索:拓展--随机搜索:拓展--遗传算法: 二、 特征提取三、特征提取主要方法——PCA(主成分分析)1、PCA算法是如何实现的?PCA--零均值化(中心…

特征选择简述

目录 一、 特征选择的意义 二、特征选择的方法 1. 排序方法(Ranking methods) 2. 过滤方法(Filter approaches) 3.包装器方法(wrapper methods) 4.混合方法(Hybrid methods) …

特征提取与特征选择

特征抽取和特征选择是DimensionalityReduction(降维)的两种方法,针对于the curse of dimensionality(维度灾难),都可以达到降维的目的。但是这两个有所不同。 特征提取(Feature Extraction):Cre…

特征选择方法总结

问题 在数据处理中经常会遇到特征太多造成的计算负担和一些其他的影响,如过拟合等,不但使得预测结果不准确,还消耗计算时间。所以特征选择就显得非常重要了。 特征选择:从给定的特征集合中选取出相关特征子集的过程成为“特征选择…

利用sklearn进行特征选择

3种特征选择 Filter 过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。 (先对数据集进行特征选择,然后再训练学习器) Wrapper 包装法,根据目标函数&…

如何进行特征选择

如何进行特征选择 原文地址: http://blog.csdn.net/u010670689/article/details/73196546 特征选择对于数据科学家、机器学习从业者来说非常重要。好的特征选择能够提升模型的性能,更能帮助我们理解数据的特点、底层结构,这对进一步改善模型、…

光谱特征选择

光谱特征选择(谱特征选择) 简介算法框架算法推导总结 Spectral feature selection可翻译为谱特征选择,之前的特征提取学习中陷入了光谱特征选择翻译的误区。 参考论文为"Spectral feature selection for supervised and unsupervised le…

模型特征选择

RF、GBDT、XGboost都可以做特征选择,属于特征选择中的嵌入式方法。比如在sklearn中,可以用属性feature_importances_去查看特征的重要度, 比如: from sklearn import ensemble#grd ensemble.GradientBoostingClassifier(n_estimators30)grd …

sklearn 数据处理与特征工程

1、数据处理的流程 2 数据预处理 Preprocessing & Impute 2.1 数据无量纲化 在机器学习算法实践中,我们往往有着将不同规格的数据转换到同一规格,或不同分布的数据转换到某个特定分布的需求,这种需求统称为将数据“无量纲化”。譬如梯度…

特征选择

一、特征选择基本问题 我们将属性称为“特征”(feature),对当前学习任务有用的属性称为“相关特征”(relevant feature)、没什么用的属性称为“无关特征”(irrelevant feature)。 从给定的特征集…

特征选择(筛选特征)

根据特征选择的形式可以将特征选择方法分为3种: Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。Wrapper:包装法,根据目标函数(通常…

机器学习 基础理论 学习笔记 (8)特征选择(feature selection)(一)

0.说明 本文也许比较乱,请看目录再食用。 后续会 出文 机器学习 基础理论 学习笔记 (8)特征选择(feature selection)(二) 将 分类问题 和 回归问题 分开总结。 以及或将出文 机器学习 基础理…