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