【发布时间】:2013-08-14 03:53:30
【问题描述】:
我正在尝试实现Johnson-Lindenstrauss lemma。我在这里搜索了伪代码,但没有找到。
我不知道我是否正确实现了它。我只是希望你们了解引理的人请帮我检查我的代码,并就正确的 matlab 实现向我提供建议。
n = 2;
d = 4;
k = 2;
G = rand(n,d);
epsilon = sqrt(log(n)/k);
% Projection in dim k << d
% Defining P (k x d)
P = randn(k,d);
% Projecting down to k-dim
proj = P.*G;
u = proj(:,1);
v = proj(:,2);
% u = P * G(:,5);
% v = P * G(:,36);
norm(G(:,1)-G(:,2))^2 * k * (1-epsilon);
norm(u - v)^2;
norm(G(:,1)-G(:,2))^2 * k * (1+epsilon);
【问题讨论】:
-
您要编写哪个引理。代码的输入和输出是什么。我检查了你提到的页面,但有很多引理和事实。
-
第一个引理。包含这个的引理: (1-\epsilon)\|uv\|^2\le\|f(u)-f(v)\|^2\le(1+\epsilon)\|uv\|^ 2.
标签: algorithm matlab computation