问题标签 [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 回答
1306 浏览

machine-learning - LDA(线性判别分析)的正确实现是什么?

我发现OpenCV中LDA的结果与其他库不同。例如,输入数据是

OpenCV 代码是

matlab 代码是(使用Matlab Toolbox for Dimensionality Reduction

特征值为

那么数据的投影是

即使这些 LDA 具有相同的数据,特征向量和投影也不同。我相信有两种可能。

  1. 其中一个库是错误的。
  2. 我做错了。

谢谢!

0 投票
2 回答
8286 浏览

pca - PCA 用于随机森林之前的降维

我正在研究具有大约 4500 个变量的二元类随机森林。其中许多变量是高度相关的,其中一些只是原始变量的分位数。我不太确定应用 PCA 进行降维是否明智。这会提高模型性能吗?

我希望能够知道哪些变量对我的模型更重要,但如果我使用 PCA,我只能知道哪些 PC 更重要。

提前谢谢了。

0 投票
3 回答
6218 浏览

python - 高维数据的自动编码器

我正在做一个项目,我需要减少我的观察的维度,并且仍然对它们有一个有意义的表示。出于多种原因,强烈建议使用自动编码器,但我不太确定这是最好的方法。

我有 1400 个尺寸约为 60,000 的样本,这太高了,我正试图将它们的维度降低到原始维度的 10%。我正在使用theano 自动编码器[ Link ],似乎成本一直在 30,000 左右(非常高)。我尝试增加 epoch 数或降低学习率,但均未成功。我不是自动编码器方面的专家,所以我不确定如何从这里开始,或者何时停止尝试。

我可以运行其他测试,但在继续之前,我想听听你的意见。

  • 您是否认为数据集太小(我可以再添加 600 个样本,总共约 2000 个)?

  • 你认为使用堆叠的自动编码器会有所帮助吗?

  • 我应该继续调整参数(时期和学习率)吗?

由于数据集是一组图片,我试图可视化来自自动编码器的重建结果,而我得到的只是每个样本的相同输出。这意味着在给定输入的情况下,自动编码器会尝试重建输入,但我得到的是任何输入的相同(几乎完全)图像(看起来像是数据集中所有图像的平均值)。这意味着内部表示不够好,因为自动编码器无法从中重建图像。

数据集: 1400 - 2000 张扫描书籍(包括封面)的图像,每张约 60.000 像素(转换为 60.000 个元素的特征向量)。每个特征向量都在 [0,1] 中进行了归一化,最初的值在 [0,255] 中。

问题:使用自动编码器降低它们的维度(如果可能的话)

如果您需要任何额外的信息,或者如果我错过了一些可能有助于更好地理解问题的内容,请添加评论,我很乐意帮助您帮助我 =)。

注意:我目前正在对整个数据集进行更多时期的测试,我将根据结果更新我的帖子,但这可能需要一段时间。

0 投票
0 回答
56 浏览

dimensionality-reduction - 如何在非线性降维的wiki中实现字母'A'的例子

当我阅读非线性降维的wiki(https://en.wikipedia.org/wiki/Nonlinear_dimensionality_reduction)时,我发现了字母'A'的有趣示例,所以我想使用python来实现它,但是我遇到了一些问题这里。我用来生成数据的代码是:

然后我在 Waffles 包中使用 pca 和流形雕刻来进行降维,但我从 wiki 上的图得到不同的结果。

0 投票
1 回答
129 浏览

matlab - 为什么用子集选择方法在这个数据集中选择的特征太少

我有一个包含 148 个输入特征的分类数据集(其中 20 个是二进制的,其余的在 [0,1] 范围内是连续的)。数据集有 66171 个负例,只有 71 个正例。

数据集(arff文本文件)可以从这个 dropbox 链接下载:https ://dl.dropboxusercontent.com/u/26064635/SDataset.arff 。

在 Weka 套件中,当我使用CfsSubsetEvaland GreedyStepwise(与setSearchBackwards()set to trueand Also false)时,所选功能集仅包含 2 个功能(即79and 140)!不用说,这两个特征的分类性能非常糟糕。

使用ConsistencySubsetEval(在 Weka 中也是如此)导致选择零特征!当使用特征排序方法并选择最好的(例如12个)特征时,可以获得更好的分类性能。

我有两个问题:

首先,导致选择这么几个特征的数据集是什么?是因为正例和反例的数量不平衡吗?

其次,更重要的是,是否有任何其他子集选择方法(在 Matlab 中或其他)我可以尝试并可能导致选择更多特征?

0 投票
0 回答
58 浏览

matlab - 如何在matlab中使用主成分分析(PCA)进行降维

我有 50 个 80*80 维度的数据矩阵。我需要对它们进行分类,但在此之前我必须减少数据的维数。当我在网上搜索时,最好的工具是 PCA。我知道在分类之前我必须将每个矩阵转换为行向量,但我不知道 PCA。我应该将矩阵转换为行向量,然后通过 PCA 减少维数还是不使用每个具有基本形状的矩阵的 PCA?

0 投票
2 回答
115 浏览

machine-learning - 特征哈希/雪崩效应

我一直在阅读一些关于降维的特征散列。我知道使用具有均匀输出分布的哈希函数(输入映射到特定值的机会与范围内的所有其他值相同)以及雪崩/级联效应(一个小输入的变化会产生很大的输出变化)。这些属性将确保要素之间的冲突独立于它们的频率。但是,我仍然不清楚雪崩效应(具体而言)如何影响这一点。谁能解释这里为什么/如何重要?什么构成产出的“大变化”?

参考资料: http: //blog.someben.com/2013/01/hashing-lang/ http://metaoptimize.com/qa/questions/6943/what-is-the-hashing-trick#6945

0 投票
0 回答
83 浏览

machine-learning - 降维算法

我有一个包含近 2000 个输入参数和 4 个输出参数的数据表。我要优化输入参数来定义输出

我不确定输入参数是否线性相关,所以我正在寻找一种非线性降维算法。自组织地图是否是一个很好的选择,可以将 2000 个输入参数减少到几个组件。

我确实尝试过 PCA,但它不是很有帮助。请问有人可以建议我可以尝试的任何标准算法和代码吗?

0 投票
1 回答
637 浏览

matlab - 使用 PCA 投影到 Octave 中的低维空间

我有以下大小为 300 x 2 的矩阵,其中包含最小-最大标准化数据:

preprocess是一个缩放函数:

如何减少(到 1 维)和投影数据,以便我有一个单列向量?

0 投票
1 回答
469 浏览

machine-learning - 使用无监督降维的模糊聚类

无监督的降维算法将矩阵 NxC1 作为输入,其中 N 是输入向量的数量,C1 是每个向量的分量数(向量的维数)。结果,它返回一个新矩阵 NxC2 (C2 < C1),其中每个向量的分量数量较少。

模糊聚类算法将矩阵 N*C1 作为输入,其中 N 是输入向量的数量,C1 是每个向量的分量数。结果,它返回一个新的矩阵 NxC2(C2 通常低于 C1),其中每个向量的每个分量都表示该向量属于相应簇的程度。

我注意到两类算法的输入和输出在结构上是相同的,只是结果的解释发生了变化。此外,scikit-learn 中没有模糊聚类实现,因此有以下问题:

使用降维算法进行模糊聚类有意义吗?例如,将FeatureAgglomerationTruncatedSVD应用于从文本数据中提取的 TF-IDF 向量构建的数据集,并将结果解释为模糊聚类是没有意义的吗?