标签: dimensionality-reduction

如何在高维数据中有效地找到k-最近邻居?

所以我有大约16,000个75维数据点,并且对于每个点我想找到它的k个最近邻居(使用欧氏距离,如果这使得它更容易,则当前k = 2)

我的第一个想法是为此使用kd树,但事实证明,随着维数的增长,它们变得相当低效.在我的示例实现中,它仅比详尽的搜索稍快.

我的下一个想法是使用PCA(主成分分析)来减少维数,但我想知道:是否有一些聪明的算法或数据结构可以在合理的时间内完全解决这个问题?

algorithm nearest-neighbor computational-geometry data-structures dimensionality-reduction

16
推荐指数
1
解决办法
6767
查看次数

注意力对自动编码器有意义吗?

在自动编码器的上下文中,我正在努力解决注意力的概念。我相信我理解注意力在 seq2seq 翻译方面的用法——在训练组合编码器和解码器后,我们可以同时使用编码器和解码器来创建(例如)语言翻译器。因为我们仍在生产中使用解码器,所以我们可以利用注意力机制。

但是,如果自编码器的主要目标主要是生成输入向量的潜在压缩表示呢?我说的是在训练后我们基本上可以处理模型的解码器部分的情况。

例如,如果我在没有注意的情况下使用 LSTM,“经典”方法是使用最后一个隐藏状态作为上下文向量——它应该代表我输入序列的主要特征。如果我要注意使用 LSTM,我的潜在表示必须是每个时间步长的所有隐藏状态。这似乎不符合输入压缩和保留主要功能的概念。维度甚至可能更高。

此外,如果我需要使用所有隐藏状态作为我的潜在表示(就像在注意力情况下一样) - 为什么要使用注意力?我可以使用所有隐藏状态来初始化解码器。

dimensionality-reduction autoencoder lstm recurrent-neural-network attention-model

15
推荐指数
1
解决办法
1792
查看次数

如何比较PCA和NMF的预测能力

我想比较算法的输出与不同的预处理数据:NMF和PCA.为了获得可比较的结果,而不是为每个PCA和NMF选择相同数量的组件,我想选择解释的量,例如95%的保留方差.

我想知道是否有可能确定NMF每个组成部分保留的差异.

例如,使用PCA,这将通过以下方式给出: retainedVariance(i) = eigenvalue(i) / sum(eigenvalue)

有任何想法吗?

pca dimensionality-reduction scikit-learn matrix-factorization nmf

13
推荐指数
1
解决办法
3171
查看次数

scikit-learn中文本数据的监督降维

我正在尝试使用scikit-learn对自然语言数据进行一些机器学习.我已将我的语料库转换为词袋向量(采用稀疏CSR矩阵的形式),我想知道是否在sklearn中有一个监督维数降低算法能够获取高维,监督数据并进行投影它进入一个较低维度的空间,保留了这些类之间的差异.

高级问题描述是我有一个文档集合,每个文档都可以有多个标签,我想根据文档内容预测哪些标签会被打到新文档上.

在它的核心,这是一个受监督的,多标签,多类问题,使用BoW向量的稀疏表示.sklearn中是否存在可以处理这类数据的降维技术?在scikit-learn中使用受监督的BoW数据时,是否还有其他类型的技术?

谢谢!

python machine-learning dimensionality-reduction scikit-learn

12
推荐指数
1
解决办法
3199
查看次数

绘制PCA载荷并在sklearn中的双标图中加载(如R的自动绘图)

我在Rw /中看到了这个教程autoplot.他们绘制了负载和加载标签:

autoplot(prcomp(df), data = iris, colour = 'Species',
         loadings = TRUE, loadings.colour = 'blue',
         loadings.label = TRUE, loadings.label.size = 3)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 https://cran.r-project.org/web/packages/ggfortify/vignettes/plot_pca.html

我更喜欢Python 3w/matplotlib, scikit-learn, and pandas进行数据分析.但是,我不知道如何添加这些?

你怎么能用这些载体绘制matplotlib

我一直在阅读使用sklearn在PCA中恢复explain_variance_ratio_的功能名称,但尚未弄清楚

这是我如何绘制它 Python

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn import decomposition
import seaborn as sns; sns.set_style("whitegrid", {'axes.grid' : False})

%matplotlib inline
np.random.seed(0)

# Iris …
Run Code Online (Sandbox Code Playgroud)

python pca dimensionality-reduction scikit-learn biplot

10
推荐指数
3
解决办法
1万
查看次数

R中的t-SNE预测

目标:我的目标是在R中使用t-SNE(t分布式随机邻域嵌入)来减少我的训练数据的维数(使用N个观测值和K个变量,其中K >> N),并随后旨在得出t-我的测试数据的SNE表示.

示例:假设我的目标是将K变量减少到D = 2维(对于t-SNE ,通常,D = 2D = 3).有两个R包:Rtsne而且tsne,我在这里使用前者.

# load packages
library(Rtsne)

# Generate Training Data: random standard normal matrix with J=400 variables and N=100 observations
x.train <- matrix(nrom(n=40000, mean=0, sd=1), nrow=100, ncol=400)

# Generate Test Data: random standard normal vector with N=1 observation for J=400 variables
x.test <- rnorm(n=400, mean=0, sd=1)

# perform t-SNE
set.seed(1)
fit.tsne <- Rtsne(X=x.train, …
Run Code Online (Sandbox Code Playgroud)

r machine-learning dimensionality-reduction

10
推荐指数
3
解决办法
1808
查看次数

单词嵌入的维度是什么?

我想理解单词嵌入中"维度"的含义.

当我以NLP任务的矩阵形式嵌入一个单词时,维度扮演什么角色?有没有一个可以帮助我理解这个概念的视觉例子?

nlp terminology dimensionality-reduction word-embedding

10
推荐指数
4
解决办法
6793
查看次数

LDA忽略n_components?

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

>>> from sklearn.lda import LDA
>>> x = np.random.randn(5,5)
>>> y = [True, False, True, False, True]
>>> for i in range(1,6):
...     lda = LDA(n_components=i)
...     model = lda.fit(x,y)
...     model.transform(x)
Run Code Online (Sandbox Code Playgroud)

/Users/orthogonal/virtualenvs/osxml/lib/python2.7/site-packages/sklearn/lda.py:161: UserWarning: Variables are collinear
  warnings.warn("Variables are collinear")
array([[-0.12635305],
       [-1.09293574],
       [ 1.83978459],
       [-0.37521856],
       [-0.24527725]])
array([[-0.12635305],
       [-1.09293574],
       [ 1.83978459],
       [-0.37521856],
       [-0.24527725]])
array([[-0.12635305],
       [-1.09293574],
       [ 1.83978459],
       [-0.37521856],
       [-0.24527725]])
array([[-0.12635305],
       [-1.09293574],
       [ 1.83978459],
       [-0.37521856],
       [-0.24527725]])
array([[-0.12635305],
       [-1.09293574],
       [ 1.83978459],
       [-0.37521856],
       [-0.24527725]])
Run Code Online (Sandbox Code Playgroud)

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

另外,当我使用Scikit-Learn的PCA进行此操作时,它会给我我想要的东西.

>>> from sklearn.decomposition import PCA
>>> …
Run Code Online (Sandbox Code Playgroud)

python dimensionality-reduction scikit-learn

9
推荐指数
1
解决办法
5284
查看次数

scikit KernelPCA不稳定的结果

我正在尝试使用KernelPCA将数据集的维度降低到2D(用于可视化目的和进一步的数据分析).

我尝试使用不同Gamma值的RBF内核计算KernelPCA,但结果不稳定:

阿尼姆

(每帧的Gamma值略有不同,其中Gamma从0到1连续变化)

看起来它不是确定性的.

有没有办法稳定它/使其确定性?

用于生成转换数据的代码:

def pca(X, gamma1):
    kpca = KernelPCA(kernel="rbf", fit_inverse_transform=True, gamma=gamma1)
    X_kpca = kpca.fit_transform(X)
    #X_back = kpca.inverse_transform(X_kpca)
    return X_kpca
Run Code Online (Sandbox Code Playgroud)

python pca dimensionality-reduction scikit-learn

7
推荐指数
1
解决办法
707
查看次数

如何使用减少的数据 - 主成分分析的输出

我发现很难将理论与实施联系起来.我很感激帮助知道我的理解错误.

符号 - 粗体大写的矩阵和粗体字母小写字母的向量

**X** 是一个数据集 <代码>名词</代码> 观察,每个 <代码> d </代码>变量.所以,鉴于这些观察<代码> d </代码>- 维数据向量, <代码>米</代码>- 维主轴是 ****瓦特<子>Ĵ</子>,为 Ĵ{1,...,M} 哪里 <代码>米</代码> 是目标维度.

<代码>米</代码> 观测数据矩阵的主要组成部分是 **Y = XW** 矩阵 ****<sup> nx m </ sup>中的Y**,矩阵 ****<sup> nx d </ sup>中的X**和矩阵 ****<sup> dx m </ sup>中的W**.

****w ^ 形成一个正交的基础 <代码>米</代码> 功能和输出 ****Ÿ<子>名词</子> 是最小化平方重建误差的主成分投影:

Σ<sub> n </ sub> ||**x**<sub> n </ sub>  - **x**<sub> n </ sub> || <sup> 2 </ sup>
和最优重建 **X**<子>名词</子> 是(谁)给的 **x**<sub> n </ sub> =**W*y**<sub> n </ sub>.

数据模型是

X(i,j) = A(i,:)*S(:,j) + noise
Run Code Online (Sandbox Code Playgroud)

其中PCA应在X上完成以获得输出S. S必须等于Y.

问题1:减少的数据Y不等于模型中使用的S. 我的理解在哪里错了? …

matlab image-processing pca dimensionality-reduction

7
推荐指数
1
解决办法
729
查看次数