不相关数据集的特征缩减

数据挖掘 r 特征选择 相关性
2021-10-08 09:56:15

我正在处理具有 100 个特征的训练数据集的分类问题。成对的所有特征都没有明显的相关性。您可以在示例配对图中看到一些特征:

在此处输入图像描述

我正在尝试找到减少功能数量的正确方法。重要特征选择的所有方法都返回不同的特征集。例如:

  • MARS 仅返回五个重要特征,但是,
  • 与阈值 >1% 的相关性选择其中的 20 个。
  • Lasso 选择了近二十个,但选择的特征与特征集不同,由相关方法返回。
  • RandomForest 选择了与以前方法不同的近 25 个特征。
  • 返回的特征集中的特征评级是不同的。
  • PCA 方法不适用,因为没有任何可见的线性相关特征。
  • 等等。

我的观点是不同的工具返回不同的重要特征。一个可以组合/联合它们,一个可以相交它们。一个人可以使用 N 种选择方法,结果,一个人将获得 N 个特征集。

方法:“全部检查”不适用于那里。例如,如果 N 组乘以 M 个预测模型,乘以 3 轮模型调整,则可以计算时间工作量。如果将特征集合并或相交,则需要更多的时间。这将需要永远!应该有一些策略,一个算法用于过滤一个最终的选择。

如果数据集很大、不相关且有噪声,如何选择最佳的特征集?

2个回答

我相信您正在寻找的是最佳子集、前向逐步或套索?

这是 R 实现的最佳子集

如果您的数据集太大,请尝试对数据进行二次抽样,然后多次运行特征选择算法。如果你得到类似的结果,你就去,如果结果不同,那么对它们进行排名并选择最常见的结果。

如果有人知道最佳 subest 算法的 python 实现,请告诉我!

如果维度不是线性相关的,您可以使用自动编码器来执行降维。就像 PCA 可以执行重建,但具有非线性。然后,您可以使用潜在空间进行分类。

Autoencoder 是一种多维自回归模型,中间有一个维度瓶颈。一般来说,它包含 2 个神经网络,一个编码器和一个解码器。编码器将一个数据样本作为输入,并在潜在空间中产生一个输出,其维数小于输入的维数。解码器将编码器的输出作为输入,并尝试生成原始数据样本作为输出。为了训练自动编码器,我们尝试最小化重建误差(输入样本和重建样本之间的差异)。中间的维度瓶颈将迫使自编码器以较少的维度尽可能多地保留原始输入的信息。