Matrici casuali con vincoli sulla lunghezza di riga e colonna


25

Devo generare matrici casuali non quadrate con righe e colonne C , elementi distribuiti casualmente con media = 0 e vincolati in modo tale che la lunghezza (norma L2) di ogni riga sia 1 e la lunghezza di ogni colonna sia RC1 . Equivalentemente, la somma dei valori quadrati è 1 per ogni riga eRRC per ogni colonna.RC

Finora ho trovato un modo per raggiungere questo obiettivo: inizializzare semplicemente gli elementi della matrice in modo casuale (ad es. Da una distribuzione uniforme, normale o laplace con media zero e varianza arbitraria), quindi alternare in modo normale righe e colonne a , che termina con la normalizzazione delle righe. Questo sembra convergere al risultato desiderato abbastanza rapidamente (ad esempio per R = 40 e C = 80 , la varianza della lunghezza della colonna è in genere ~ 0,00001 dopo 2 iterazioni), ma non sono sicuro di poter dipendere da questo rapido tasso di convergenza in generale (per varie dimensioni di matrice e distribuzioni iniziali di elementi).length=1R=40C=80 0.000012

Mia domanda è: esiste un modo per ottenere il risultato desiderato ( , c o l u m n l e n g t h s = row lengths=1 ) direttamente senza iterare tra la normalizzazione di riga / colonna? Ad esempio qualcosa come l'algoritmo per normalizzare un vettore casuale (inizializzare gli elementi in modo casuale, misurare la somma dei valori quadrati, quindi ridimensionare ogni elemento con un comune scalare). In caso contrario, esiste una semplice caratterizzazione del tasso di convergenza (ad es. Num iterazioni fino all'errore<ϵ) del metodo iterativo sopra descritto?column lengths=RC<ϵ


1
Questo è abbastanza simile all'algoritmo Sinkhorn-Knopp, noto anche come adattamento proporzionale iterativo.
cardinale il

6
Inoltre, dovresti definire cosa intendi per matrici "casuali". Ad esempio, la procedura che descrivi (quasi senza dubbio) non produrrà matrici casuali uniformemente nello spazio desiderato.
cardinale il

1
@ cardinale Un buon punto. Ma nota che puoi almeno ottenere distribuzioni identiche (marginali) per tutti i componenti post-moltiplicando per una coppia di matrici di permutazione casuali (per disporre casualmente sia le righe che le colonne).
whuber

1
@whuber: Sì, anche se la distribuzione congiunta potrebbe essere ancora abbastanza strana. Per "post moltiplicazione" presumo che intendi moltiplicare a sinistra e a destra "post-convergenza" (anziché, ad esempio, moltiplicare a destra).
cardinale il

9
In realtà, dopo una piccola riflessione, penso che il tuo algoritmo sia esattamente l'algoritmo di Sinkhorn-Knopp con una modifica molto minore. Lascia che sia la tua matrice originale e che Y sia una matrice della stessa dimensione in modo tale che Y i j = X 2 i j . Quindi, l'algoritmo equivale ad applicare Sinkhorn-Knopp a Y , in cui nella fase finale di recuperare la forma desiderata prendendo X i j = s g n ( X i j ) XYYij=Xij2YX^ij=sgn(Xij)Yij

Risposte:


6

Come ha detto @cardinal in un commento:

In realtà, dopo una piccola riflessione, penso che il tuo algoritmo sia esattamente l'algoritmo di Sinkhorn-Knopp con una modifica molto minore. Lascia che X sia la tua matrice originale e che Y sia una matrice della stessa dimensione in modo tale che Y i j = X 2 i j . Quindi, l'algoritmo equivale ad applicare Sinkhorn-Knopp a Y , in cui nella fase finale di recuperare la forma desiderata prendendo X i j = s g n ( X i j ) XYYij=Xij2YX^ij=sgn(Xij)Yij

... sembra che l'algoritmo iterativo che ho suggerito nella domanda originale sia molto simile all'algoritmo Sinkhorn-Knopp. È interessante notare che sembra anche molto simile al raccordo proporzionale iterativo (IPF), che, come descritto nella pagina di Wikipedia dell'IPF, è correlato al metodo di Newton e alla massimizzazione delle aspettative (tutti hanno lo stesso limite).

Questi metodi iterativi sono spesso applicati a problemi che mancano di una soluzione a forma chiusa, quindi suppongo provvisoriamente che la risposta alla domanda sia negativa: non c'è modo di ottenere la soluzione desiderata senza iterazione di riga / colonna.


(+1) Per il tuo continuo interesse per questa domanda e il tuo follow-up indipendente. :-)
cardinale
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.