eudocódigo de algoritmo de proyección aleatorio
Estoy tratando de aplicar el método de Proyecciones aleatorias en un conjunto de datos muy escaso. Encontré documentos y tutoriales sobre el método Johnson Lindenstrauss, pero cada uno de ellos está lleno de ecuaciones que no me dan ninguna explicación significativa. Por ejemplo, este documento en Johnson-Lindenstrauss
Desafortunadamente, a partir de este documento, no puedo tener idea de los pasos de implementación del algoritmo. Es una posibilidad remota, pero ¿hay alguien que pueda decirme la versión en inglés o el pseudocódigo muy simple del algoritmo? ¿O dónde puedo comenzar a cavar estas ecuaciones? ¿Alguna sugerencia
Por ejemplo, lo que entiendo del algoritmo al leereste artículo sobre Johnson-Lindenstrauss es eso
Supongamos que tenemos unAxB
matriz dondeA
es el número de muestras yB
es el número de dimensiones, p. @100x5000
. Y quiero reducir su dimensión a500
, que producirá una100x500
matriz.egún tengo entendido: primero, necesito construir un100x500
matrix y rellena las entradas al azar con+1
y-1
(con una probabilidad del 50%).
Editar
Está bien, creo que empecé a entenderlo. Entonces tenemos una matrizA
cual esmxn
. Queremos reducirlo aE
cual esmxk
.
o que debemos hacer es construir una matriR
que tienenxk
dimensión, y llénalo con0
, -1
o+1
, con respecto a2/3
, 1/6
y1/6
probabilidad
Después de construir esteR
, simplemente haremos una multiplicación matricialAxR
para encontrar nuestra matriz reducidaE
. Pero no necesitamos hacer una multiplicación de matriz completa, porque si un elemento deRi
es0
, no necesitamos hacer cálculos. Simplemente omítelo. Pero si nos enfrentamos con1
, solo agregamos la columna, o si es-1
, solo resta del cálculo. Así que simplemente usaremos la sumatoria en lugar de la multiplicación para encontrarE
. Y eso es lo que hace que este método sea muy rápido.
esultó ser un algoritmo muy bueno, aunque me siento demasiado estúpido para tener la idea.