我正在尝试在非常稀疏的数据集上应用随机投影方法。我找到了有关Johnson Lindenstrauss方法的论文和教程,但是其中每一个都充满了方程式,这对我没有任何有意义的解释。例如,此文档有关Johnson- Lindenstrauss
不幸的是,从本文档中,我对算法的实现步骤一无所知。这是一个漫长的过程,但是有谁能告诉我该算法的纯英语版本或非常简单的伪代码?或者我可以从哪里开始挖掘这个方程式?有什么建议?
例如,通过阅读有关Johnson- Lindenstrauss的论文,我从算法中了解到的是:
AxB
A
B
100x5000
500
100x500
据我了解:首先,我需要构造一个100x500矩阵,并用+1和随机填充条目-1(概率为50%)。
+1
-1
编辑: 好的,我想我开始明白了。因此,我们有一个矩阵A为mxn。我们希望减少它E是mxk。
mxn
E
mxk
我们需要做的是,建立一个矩阵R具有nxk尺寸,并与填充它0,-1或者+1,对于2/3,1/6和1/6概率。
R
nxk
0
2/3
1/6
构造完这个之后R,我们将简单地进行矩阵乘法AxR以找到我们的简化矩阵E。但是我们不需要进行全矩阵乘法,因为如果元素为Riis 0,我们就不需要进行计算。只需跳过它。但是,如果面对1,我们只添加列,或者如果是-1,则从计算中减去它。因此,我们将简单地使用求和而不是乘法来查找E。这就是使此方法非常快速的原因。
AxR
Ri
1
事实证明,这是一个非常简洁的算法,尽管我觉得太愚蠢而无法理解。
从高维数据A到低维数据E的映射在后一论文的定理1.1中给出- 它只是一个标量乘法,然后是一个矩阵乘法。数据向量是矩阵A和E的行。正如作者在7.1节中指出的那样,您无需使用完整的矩阵乘法算法。