维度诅咒:多少维度是太多维度?

数据挖掘 降维
2022-03-08 23:37:24

假设我有一个包含 1000 列和 3M 行的数据集。我知道这肯定会遭受维度诅咒,我需要减少维度的数量。但是我应该在多大程度上减少尺寸?

根据我的理解,随着每个额外的维度,数据不会太稀疏所需的数据点数量呈指数增长。

那么我怎么知道对于不同数量的列,数据点的黄金数量是多少?假设我有能力收集无限量的数据,但每个数据点的相关成本仍然很小,我应该收集多少?

我正在使用这些幻灯片来理解这个概念: http ://www.dataminingbook.info/pmwiki.php/Main/BookPathUploads?action=download&upname=slides-chap6.pdf

3个回答

正如 karthikeyan mg 在他的回答中提到的那样,您可以使用解释的方差分数来了解您可以删除多少列。不幸的是,没有一个神奇的数字可以提前知道。如果您使用 Python 编写代码,您应该阅读 aboutdatascience.com 上的这篇博文

一种选择主成分分析中成分数量的方法

将数据重新调整为 0-1 后,您可以运行此代码片段并为您选择的每个组件编号获取方差损失图。

#Fitting the PCA algorithm with our Data
pca = PCA().fit(data_rescaled)
#Plotting the Cumulative Summation of the Explained Variance
plt.figure()
plt.plot(np.cumsum(pca.explained_variance_ratio_))
plt.xlabel('Number of Components')
plt.ylabel('Variance (%)') #for each component
plt.show()

这是博客文章的结果。如您所见,在 5 个组件之后,方差开始大幅下降。所以,这个号码可能是你可以使用的号码。

在此处输入图像描述

您可以使用来自 Sklearn 的解释方差分数,它给出解释方差与数据维度的分数。在统计学中,解释变异测量数学模型对给定数据集的变异(分散)的比例。模型中的变化越多,越不容易过拟合,反之亦然。

我不知道是否有一种方法可以知道您需要多少数据,如果您不欠拟合,那么通常越多越好。要减少维度,请使用 PCA,这将告诉您随着每个维度的减少而损失的方差量。也许这篇文章很有用:https ://towardsdatascience.com/predicting-the-effect-of-more-training-data-by-using-less-c3dde2f9ae48