【机器学习】为什么进行特征筛选时前要先用相关性筛一遍再进行降维?

为什么进行特征筛选时前要先用相关性筛一遍再进行降维?

首先,特征筛选时筛掉相关性高的特征是任何建模过程都绕不开的步骤,是基础中的基础。而降维则不是,降维只在某些特定场合用得上,比如每个基因作为一个特征有几万个,或每个像素作为一个特征有成千上万个像素。

所以一个是普遍的做法,一个是不普遍的做法,任何情况下先使用普遍的做法才是正常人的反应。

但这道题真正想问的是:如果不用相关性先筛一遍特征而直接降维,会有什么弊端吗?

结论(以PCA为例):降维的时候,把多个特征融合成一个特征,这其间必然伴随信息的提炼和损失,那么提炼什么?损失什么呢?我们很自然而然地推测:权重高的信息会被留下,权重低的则会被损失。即是说,由于高相关性的特征重复出现,这些特征会被赋予本不属于它的高权重,降低其他特征所蕴含的信息。

举个例子,如果一共有100个(99个 A i A_i Ai和1个B)特征,这99个 A i A_i Ai都高度相关,它们蕴含的信息其实只相当于1个特征蕴含的信息,也就是说这100个特征其实只相当于2个特征A和B,如果让人类来做特征筛选,最后只会剩下1个A和1个B。但是如果让PCA来降维会怎样呢?结果必然是B的信息几乎损失完,只留下A的信息,因为A有99个,B只有1个。


以下是测试:

import numpy as np
import pandas as pd
from sklearn.decomposition import PCA

对照组

# 实例化PCA,n_components=1意思是让它降到1维
pca = PCA(n_components=1)
# 测试用数据,可以看出特征0是个具有单调性的特征,而特征1是个周期特征
test1 = pd.DataFrame([[1,2,3,4,5,6], [1,6,1,6,1,6]]).T
test1
01
011
126
231
346
451
566
# 降维后的结果,看得出来在尽量权衡两个特征,周期波动中也蕴含着绝对值大小的变化
result = pca.fit_transform(test1)
result
array([[ 3.16227766],
       [-1.8973666 ],
       [ 2.52982213],
       [-2.52982213],
       [ 1.8973666 ],
       [-3.16227766]])

实验组

pca = PCA(n_components=1)
# 周期特征增加到99个,其实这个数据集的信息量和上面是一样的,因为2到99号特征完全重复
test2 = test1.copy()
for i in range(2, 100):
    test2[i] = [1,6,1,6,1,6]
test2
0123456789...90919293949596979899
01111111111...1111111111
12666666666...6666666666
23111111111...1111111111
34666666666...6666666666
45111111111...1111111111
56666666666...6666666666

6 rows × 100 columns

# 第一次PCA,降到一维,这个数据里几乎只能看出周期性了
result = pca.fit_transform(test2)
result
array([[ 24.92007774],
       [-24.83934329],
       [ 24.87971052],
       [-24.87971052],
       [ 24.83934329],
       [-24.92007774]])
pca = PCA(n_components=2)
# 第二次PCA,降到二维,看看能不能把原本的单调性抢救回来
result = pca.fit_transform(test2)
result
array([[ 2.49200777e+01, -1.99742969e+00],
       [-2.48393433e+01, -2.00175547e+00],
       [ 2.48797105e+01,  2.16288704e-03],
       [-2.48797105e+01, -2.16288704e-03],
       [ 2.48393433e+01,  2.00175547e+00],
       [-2.49200777e+01,  1.99742969e+00]])

从以上实验不难看出,特征之间的相关性会导致它们蕴含的信息被赋予本不应该有的高权重,从而加大其他特征蕴含的信息的损失。
最后第二组实验降到二维,我觉得这个信息也算抢救回来了许多,但别忘了这是在实验,专门使用了很有特点的数据,我们也知道一共其实就两个特征,所以才能设定降到二维保留最多的信息。而真实情况,数据不仅没有这种强规律,我们也不清楚到底降到几维是最好的,所以PCA降维损失了多少信息我们是无从判别的。也就只有追求“程序正义”,一开始就不要带入相关性强的特征了。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sprite.Nym

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值