问题标签 [dimensionality-reduction]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1337 浏览

python - 带有 sklearn 的 PCA。无法用 PCA 计算特征选择

我一直在尝试使用 PCA 进行一些降维。我目前有一个大小为 (100, 100) 的图像,我正在使用 140 个 Gabor 过滤器的过滤器库,其中每个过滤器都会给我一个响应,它又是一个 (100, 100) 的图像。现在,我想做特征选择,我只想选择非冗余特征,我读到 PCA 可能是一个好方法。

所以我开始创建一个有 10000 行和 140 列的数据矩阵。因此,每一行都包含该滤波器组的 Gabor 滤波器的各种响应。现在,据我了解,我可以使用 PCA 对这个矩阵进行分解

但是,现在我很困惑如何从这里确定要保留这 140 个特征向量中的哪一个。我猜它应该给我这 140 个向量中的 3 个(对应于包含有关图像的最多信息的 Gabor 过滤器),但我不知道如何从这里开始。

0 投票
0 回答
65 浏览

image - 使用 Matlab,将一组图像导入数据矩阵以便我可以有效地运行降维算法的最佳方法是什么?

我目前正在使用CIFAR-10 数据集,并且正在尝试在其上运行一些降维算法。这是一堆 32x32 彩色图像,所以我目前正在通过将每个 32x32x3 图像放入一列来导入数据,如下所示:

这给了我一个 3072x(图像数量)的数据矩阵,其中每一列代表一个不同的图像。当我运行诸如 PCA 和 KPCA 之类的降维技术时,我得到了可怕的数据分离。有没有更好的方法来导入对我有帮助的数据?

0 投票
2 回答
9746 浏览

python - LDA 忽略 n_components?

当我尝试使用 Scikit-Learn 的 LDA 时,它一直只给我一个组件,即使我要求更多:

如您所见,它每次只打印一个维度。为什么是这样?它与共线的变量有什么关系吗?

此外,当我使用 Scikit-Learn 的 PCA 执行此操作时,它给了我想要的东西。

0 投票
1 回答
1163 浏览

text - 在自然语言处理 (NLP) 中,如何进行有效的降维?

在 NLP 中,特征的维度总是非常巨大的。例如,对于手头的一个项目,特征的维度几乎是 2 万(p = 20,000),每个特征都是一个 0-1 的整数,以显示论文中是否呈现了特定的单词或二元组(一篇论文是一个数据点 $x \in R^{p}$)。

我知道特征之间的冗余是巨大的,所以降维是必要的。我有三个问题:

1)我有 1 万个数据点(n = 10,000),每个数据点有 10,000 个特征(p = 10,000)。进行降维的有效方法是什么?矩阵 $X \in R^{n \times p}$ 是如此巨大,以至于 PCA(或 SVD,截断 SVD 都可以,但我不认为 SVD 是减少二进制特征维度的好方法)和 Bag单词的数量(或 K-means)很难直接在 $X$ 上进行(当然,它是稀疏的)。我没有服务器,我只是用我的电脑:-(。

2)如何判断两个数据点之间的相似度或距离?我认为欧几里得距离可能不适用于二元特征。L0范数怎么样?你用什么?

3)如果我想使用SVM机器(或其他内核方法)进行分类,我应该使用哪个内核?

非常感谢!

0 投票
1 回答
2255 浏览

som - 使用自组织图进行降维

在过去的几个月里,我一直在研究自组织地图(SOM)。但我在理解降维部分时仍然有些困惑。你能建议任何简单的方法来理解 SOM 在任何现实世界数据集上的实际工作吗(就像来自 UCI 存储库的数据集)。

0 投票
1 回答
2356 浏览

neural-network - Searching a deep autoencoder example for dimensionality reduction

I want to configure a deep autoencoder in order to reduce the dimensionality of my input data as described in this paper. The layer sizes should be 2000-500-250-125-2-125-250-500-2000 and I want to be able to pull out the activation of the layer in the middle (as described in the paper, I want to use the values as coordinates). The input data consists of binary vectors with a length of 2000 each. Now I'm searching for a working example which I can use as a starting point. I already tried DeepLearning4J but wasn't able to build a satisfying autoencoder. I would be thankful for any suggestions.

0 投票
3 回答
1190 浏览

matlab - 通过 PCA 对 2D 图像进行降维

我想减小 2D 图像的尺寸。我有大小的图像补丁,100x50我想减少这些补丁的尺寸。

我是否需要先将补丁(100x50)转换为向量(5000x1),然后应用 PCA 来减少维度,或者我可以直接应用 PCA 来减少补丁上(100x50)的维度并减少维度,比如说2x50

0 投票
0 回答
329 浏览

c++ - 如何使用 SVD 减少矩阵的维数?

-i 尝试在 opencv c++ 中使用 SVD 减少矩阵的维数,这是我的简单源代码示例:

- 但我不知道这是否是减少矩阵维度的真正方法,我需要你的帮助。

0 投票
0 回答
591 浏览

matlab - 在 matlab 中编写(和使用)主成分分析

我(希望)获得一个矩阵,其中包含关于大鼠呼叫(在超声波中)的不同特征的数据。变量包括开始频率、结束频率、持续时间等。观察结果将包括我录音中的所有老鼠叫声。

我想使用 PCA 来分析我的数据,希望将任何对这些调用的结构及其工作方式不重要的主成分去相关,从而使我能够对调用进行分组。

我的问题是,虽然我对 PCA 的工作原理有基本的了解,但我不了解更精细的点,包括如何在 Matlab 中实现这一点。

我知道你应该标准化我的数据。我见过的所有方法都涉及通过减去平均值来调整平均值。然而,其他一些也除以标准偏差或将均值调整数据的转置除以 N-1 的平方根(N 是变量的数量)。

我知道使用标准化数据,您可以找到协方差矩阵,并提取特征值和向量,例如使用 eig(cov(...))。其他一些使用 svd(...) 代替。我仍然不明白这是什么以及为什么它很重要

我知道实现 PCA 有不同的方法,但我不喜欢如何为所有方法获得不同的结果。

甚至还有一个 pca(...) 命令。

在重建数据时,有些人将均值调整数据与主成分数据相乘,其他人也这样做,但使用主成分数据的转置

我只想能够通过绘制主成分图和数据图来分析我的数据(删除了最不重要的主成分)。我想知道这些特征向量的方差以及它们代表数据总方差的程度。我希望能够充分利用 PCA 可以让我脱身的所有信息

谁能帮忙?

==================================================== =======

此代码似乎基于http://people.maths.ox.ac.uk/richardsonm/SignalProcPCA.pdf的 pg 20 工作

但标准偏差在哪里?结果有何不同

如果主成分表示为列,那么我可以通过找到最小的特征值并将其对应的特征向量列设置为零列来删除最不重要的特征向量。

如何通过使用 pca(...) 命令应用上述任何一种方法并获得相同的结果?谁能帮我解释一下(最好向我展示所有这些如何达到相同的结果)?

0 投票
1 回答
393 浏览

matlab - 在 MATLAB、pcacov 或 eigs 中,我应该使用哪一个来使用 PCA 进行降维?

我正在尝试将我的训练集尺寸从 1296*70000 减少到 128*70000。我写了下面的代码:

我得到两个不同的答案!我应该使用“eigs”还是“pcacov”?