Псевдокод алгоритма случайной проекции

Я пытаюсь применить метод случайных проекций к очень разреженному набору данных. Я нашел статьи и руководства по методу Джонсона Линденштрауса, но каждая из них полна уравнений, которые не дают мне значимого объяснения. Например, этот документ на Johnson-Lindenstrauss

К сожалению, из этого документа я не могу получить представление об этапах реализации алгоритма. Это долгий путь, но есть ли кто-нибудь, кто может сказать мне простую английскую версию или очень простой псевдокод алгоритма? Или с чего начать копать эти уравнения? Какие-либо предложения?

Например, что я понял из алгоритма, читая эту статью, касающуюся Джонсона-Линденштрауса , так это:

  1. Предположим, у нас есть матрица AxB , где A - количество образцов, а B - количество измерений, например 100 x 5000 . И я хочу уменьшить его размер до 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 . И это то, что делает этот метод очень быстрым.

Получился очень изящный алгоритм, хотя я чувствую себя слишком глупо, чтобы понять эту идею.

12
задан Schorsch 23 July 2013 в 18:33
поделиться