Я пытаюсь применить метод Random Projections на очень редком наборе данных. Я нашел статьи и учебные пособия по методу Джонсона Линденштрауса, но каждый из них полон уравнений, которые не дают мне значимых объяснений. Например, этот документ на Johnson-Lindenstrauss
К сожалению, из этого документа я не понимаю понятия о шагах реализации алгоритма. Это длинный выстрел, но есть ли кто-нибудь, кто может рассказать мне простую английскую версию или очень простой псевдокод алгоритма? Или где я могу начать копать эти уравнения? Какие-либо предложения?
Например, то, что я понимаю из алгоритма, прочитав эту статью, касающуюся Johnson-Lindenstrauss, заключается в следующем:
- Предположим, что мы имеем матрицу
AxB
, гдеA
- количество выборок, аB
- количество измерений, например.100x5000
. И я хочу уменьшить его размер до500
, что даст матрицу100x500
.
Насколько я понимаю: во-первых, мне нужно построить матрицу 100x500
и случайным образом заполнить записи с помощью +1
и -1
(с вероятностью 50%).
Edit:
Ладно, я думаю, что начал это делать. Итак, мы имеем матрицу A
, которая равна mxn
. Мы хотим уменьшить его до E
, который равен mxk
.
Нам нужно построить матрицу R
с размером nxk
и заполнить ее 0
, -1
или +1
по отношению к 2/3
, 1/6
и 1/6
.
После построения этого R
мы просто выполним матричное умножение AxR
, чтобы найти нашу приведенную матрицу E
. Но нам не нужно делать полное матричное умножение, потому что если элемент Ri
равен 0
, нам не нужно делать вычисления. Просто пропустите это. Но если мы сталкиваемся с 1
, мы просто добавляем столбец или, если он -1
, просто вычтем его из расчета. Поэтому мы просто будем использовать суммирование, а не умножение, чтобы найти E
. И это делает этот метод очень быстрым.
Получился очень аккуратный алгоритм, хотя я чувствую себя слишком глупо, чтобы понять эту идею.