Я пытаюсь применить метод 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. И это делает этот метод очень быстрым.
Получился очень аккуратный алгоритм, хотя я чувствую себя слишком глупо, чтобы понять эту идею.