简述特征降维的几种方式

特征降维

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=ni=1nxi2(i=1nxi)2 ni=1nyi2(i=1nyi)2 ni=1nxiyii=1nxii=1nyixi是特征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=1n(n21)6di2n为等级个数d为成对变量的等级差数

(2)、相关api

导包:

from scipy.stats import spearmanr

调用:

corr = spearmanr(x, y)

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

**x:**第一个变量

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值