Matrices aleatorias con restricciones en la longitud de la fila y la columna

25

Necesito generar matrices aleatorias no cuadradas con filas y columnas , elementos distribuidos aleatoriamente con media = 0, y restringidos de modo que la longitud (norma L2) de cada fila sea y la longitud de cada columna sea . De manera equivalente, la suma de los valores cuadrados es 1 para cada fila y para cada columna.Rdo1RdoRdo

Hasta ahora, he encontrado una manera de lograr esto: simplemente inicialice los elementos de la matriz al azar (por ejemplo, desde una distribución uniforme, normal o laplace con media cero y varianza arbitraria), luego normalice alternativamente filas y columnas a , terminando con la normalización de fila. Esto parece converger al resultado deseado con bastante rapidez (por ejemplo, para y , la varianza de la longitud de la columna es típicamente ~ después de iteraciones), pero no estoy seguro si puedo depender de esta rápida tasa de convergencia en general (para varias dimensiones de matriz y distribuciones de elementos iniciales).lminortesolth=1R=40do=80 0.000012

Mi pregunta es esta: ¿hay alguna manera de lograr el resultado deseado ( , ) directamente sin iterar entre normalización de fila / columna? Por ejemplo, algo así como el algoritmo para normalizar un vector aleatorio (inicializar elementos aleatoriamente, medir la suma de valores cuadrados, luego escalar cada elemento por un escalar común). Si no, ¿hay una caracterización simple para la tasa de convergencia (por ejemplo, iteraciones numéricas hasta el error ) del método iterativo descrito anteriormente?row lminortesolths=1dooltumetronorte lminortesolths=Rdo<ϵ

Tyler Streeter
fuente
1
Esto es bastante similar al algoritmo Sinkhorn-Knopp, también conocido alternativamente como ajuste proporcional iterativo.
cardenal
66
Además, debe definir qué quiere decir con matrices "aleatorias". Por ejemplo, el procedimiento que describa no producirá (casi indudablemente) matrices aleatorias uniformemente sobre el espacio deseado.
cardenal
1
@cardinal Buen punto. Pero tenga en cuenta que al menos puede lograr distribuciones idénticas (marginales) para todos los componentes mediante la multiplicación posterior por un par de matrices de permutación aleatorias (para organizar aleatoriamente tanto filas como columnas).
whuber
1
@whuber: Sí, aunque la distribución conjunta aún podría ser bastante extraña. Por "post multiplicación" supongo que se refiere a multiplicar a la izquierda y a la derecha "post-convergencia" (en lugar de, por ejemplo, multiplicar a la derecha).
cardenal
99
En realidad, después de pensarlo un poco, creo que su algoritmo es exactamente el algoritmo Sinkhorn-Knopp con una modificación muy pequeña. Deje que sea ​​su matriz original y deje que Y sea ​​una matriz del mismo tamaño tal que Y i j = X 2 i j . Luego, su algoritmo es equivalente a aplicar Sinkhorn-Knopp a Y , en donde en el paso final a recuperar su forma deseada mediante la adopción de X i j = s g n ( X i j ) XYYij=Xij2Y . Se garantiza que Sinkhorn-Knopp converja, excepto en circunstancias bastante patológicas. Leerlo debería ser muy útil. X^ij=sgn(Xij)Yij
cardenal

Respuestas:

6

Como @cardinal dijo en un comentario:

En realidad, después de pensarlo un poco, creo que su algoritmo es exactamente el algoritmo Sinkhorn-Knopp con una modificación muy pequeña. Deje que X sea ​​su matriz original y deje que Y sea ​​una matriz del mismo tamaño tal que Y i j = X 2 i j . Luego, su algoritmo es equivalente a aplicar Sinkhorn-Knopp a Y , en donde en el paso final a recuperar su forma deseada mediante la adopción de X i j = s g n ( X i j ) XYYyoj=Xyoj2YX^yoj=ssolnorte(Xyoj)Yyoj

... parece que el algoritmo iterativo que sugerí en la pregunta original es muy similar al algoritmo Sinkhorn-Knopp. Curiosamente, también parece muy similar al ajuste proporcional iterativo (IPF), que, como se describe en la página de Wikipedia de IPF, está relacionado con el método de Newton y la maximización de expectativas (todos tienen el mismo límite).

Estos métodos iterativos a menudo se aplican a problemas que carecen de una solución de forma cerrada, por lo que supongo tentativamente que la respuesta a la pregunta es negativa: no hay forma de lograr la solución deseada sin la iteración de fila / columna.

Tyler Streeter
fuente
(+1) Por su continuo interés en esta pregunta y su seguimiento independiente. :-)
cardenal