【发布时间】:2011-11-20 10:19:59
【问题描述】:
我正在尝试在非常稀疏的数据集上应用随机投影方法。我找到了有关 Johnson Lindenstrauss 方法的论文和教程,但每一篇都充满了方程式,对我来说没有任何意义的解释。比如这个文档在Johnson-Lindenstrauss
不幸的是,从这个文档中,我无法了解算法的实现步骤。这是一个很长的镜头,但有没有人可以告诉我简单的英文版本或算法的非常简单的伪代码?或者我可以从哪里开始挖掘这个方程?有什么建议?
例如,我通过阅读this paper concerning Johnson-Lindenstrauss从算法中了解到的是:
- 假设我们有一个
AxB矩阵,其中A是样本数,B是维度数,例如100x5000。我想将它的维度减少到500,这将产生一个100x500矩阵。
据我了解:首先,我需要构造一个100x500 矩阵并用+1 和-1 随机填充条目(概率为50%)。
编辑:
好吧,我想我开始明白了。所以我们有一个矩阵A,它是mxn。我们想将它减少到E,即mxk。
我们需要做的是,构造一个矩阵R,其维度为nxk,并用0、-1或+1填充,相对于2/3、1/6和1/6 概率。
在构造了这个R 之后,我们将简单地进行矩阵乘法AxR 来找到我们的简化矩阵E。但是我们不需要做全矩阵乘法,因为如果Ri的元素是0,我们就不需要做计算了。简单地跳过它。但是如果我们面对1,我们只需添加列,或者如果它是-1,只需从计算中减去它。所以我们将简单地使用求和而不是乘法来找到E。这就是使这种方法非常快速的原因。
结果是一个非常简洁的算法,虽然我觉得太愚蠢了,无法理解。
【问题讨论】:
-
。 . .呃,不。你提醒了我为什么我没有继续读研究生,为什么数学专业能赚大钱。祝你好运。
-
你用真实数据测试过rp吗?我想保留内积,结果很糟糕......我必须缩放 R 的列还是只用 sqrt(k) 缩放 /?
标签: algorithm machine-learning multidimensional-array