简述特征降维的几种方式

分类: 48365平台 时间: 2025-07-01 21:10:36 作者: admin 阅读: 8408
简述特征降维的几种方式

特征降维

1、概述

在训练的过程中,训练集会包含一些不重要的特征,可能导致模型泛化性能差,容易过拟合。而有些特征的取值很接近,其中包含的信息较少;或者两个特征同增同减,相关性高,给模型带来的信息非常重复,这个时候就需要删除一些特征来给特征降维。

一般使用低方差过滤法,PCA(主成分分析)降维法,相关系数(皮尔逊相关系数、斯皮尔曼相关系数)

2、低方差过滤法

(一)、概述

指删除方差低于阈值的一些特征

特征方差小:特征值的波动范围小,包含的信息少,模型很难学习到信息

特征方差大:特征值的波动范围大,包含的信息相对丰富,便于模型进行学习

(二)、相关api

导包:

from sklearn.feature_selection import VarianceThreshold

调用:

VarianceThreshold(threshold=0.1)

threshold:float类型,默认值为0。这个参数是VarianceThreshold进行特征过滤的标准。具体来说,当某个特征的方差小于这个阈值时,该特征就会被过滤掉。因此,threshold的值决定了过滤的严格程度。如果设置为0(默认值),那么所有记录都相同的特征(即方差为0的特征)都会被过滤掉。

3、主成分分析PCA

(一)、概述

对数据维数进行压缩,尽可能降低原数据的维数(复杂度)损失少量信息,在此过程中可能会舍弃原有数据、创造新的变量。

(二)、相关api

导包:

from sklearn.decomposition import PCA

调用:

PCA(n_components=None)

n_components:决定PCA算法应该保留的主成分数量

整数k:表示保留前k个主成分小数(0,1]之间的数:表示保留的主成分的方差百分比,例如0.9表示保留90%的方差如果设置为None(默认值),则保留所有主成分

copy:决定是否在运行PCA算法之前复制输入数据

True(默认值):复制数据,以免修改原始数据False:直接在原始数据上进行计算

random_state:随机数生成器的种子,控制随机性

4、相关系数法

(一)、概述

反映特征列之间(变量之间)密切相关程度的统计指标,常见的两个相关系数:皮尔逊相关系数、斯皮尔曼相关系数。

相关系数的值介于–1与+1之间,即–1 ≤ r ≤ +1。其性质如下:

当 r > 0 时,表示两变量正相关,r < 0 时,两变量为负相关

当 |r| = 1 时,表示两变量为完全相关,当r = 0时,表示两变量间无相关关系

当 0 < |r| < 1时,表示两变量存在一定程度的相关。

且|r|越接近1,两变量间线性关系越密切;|r|越接近于0,表示两变量的线性相关越弱

一般可按三级划分:

|r| <0.4为低度相关;

0.4≤ |r| <0.7为显著性相关;

0.7 ≤ |r| <1为高度线性相关。

(二)、皮尔逊相关系数

(1)、公式

r

=

n

i

=

1

n

x

i

y

i

i

=

1

n

x

i

i

=

1

n

y

i

n

i

=

1

n

x

i

2

(

i

=

1

n

x

i

)

2

n

i

=

1

n

y

i

2

(

i

=

1

n

y

i

)

2

x

i

是特征

x

的第

i

个值

y

i

是特征

y

的第

i

个值

n

是样本数量

r=\frac{n\sum_{i=1}^n x_iy_i-\sum_{i=1}^n x_i\sum_{i=1}^n y_i}{\sqrt{n\sum_{i=1}^n x_i^2-(\sum_{i=1}^n x_i)^2}\sqrt{n\sum_{i=1}^n y_i^2-(\sum_{i=1}^n y_i)^2}}\\ x_i是特征x的第i个值\\ y_i是特征y的第i个值\\ n是样本数量

r=n∑i=1n​xi2​−(∑i=1n​xi​)2

​n∑i=1n​yi2​−(∑i=1n​yi​)2

​n∑i=1n​xi​yi​−∑i=1n​xi​∑i=1n​yi​​xi​是特征x的第i个值yi​是特征y的第i个值n是样本数量

(2)、相关api

导包:

from scipy.stats import pearsonr

调用:

corr = pearsonr(x, y)

print(corr, ‘皮尔逊相关系数:’, corr[0], ‘不相关性概率:’, corr[1])

**x:**第一个变量

**y:**第二个变量,形状与第一个变量相同

(三)、斯皮尔曼相关系数

(1)、公式

R

a

n

k

I

C

=

1

6

d

i

2

n

(

n

2

1

)

n

为等级个数

d

为成对变量的等级差数

RankIC=1-\frac{6\sum d_i^2}{n(n^2-1)}\\ n为等级个数\\ d为成对变量的等级差数

RankIC=1−n(n2−1)6∑di2​​n为等级个数d为成对变量的等级差数

(2)、相关api

导包:

from scipy.stats import spearmanr

调用:

corr = spearmanr(x, y)

print(corr, ‘斯皮尔曼相关系数:’, corr[0], ‘不相关性概率:’, corr[1])

**x:**第一个变量

**y:**第二个变量,形状与第一个变量相同

相关文章

要来了!全球吸金无数的《胜利女神》能否在国内创造奇迹?
艾希皮肤价格概览(2025版:价格与图片一览)
傲雪欺霜