Zufällige Matrizen mit Einschränkungen für die Zeilen- und Spaltenlänge


25

Ich muss zufällige, nicht quadratische Matrizen mit Zeilen und C Spalten erzeugen , Elemente, die zufällig mit dem Mittelwert = 0 verteilt sind und so beschränkt sind, dass die Länge (L2-Norm) jeder Zeile 1 und die Länge jeder Spalte beträgtRC1 . Entsprechend ist die Summe der Quadratwerte 1 für jede Zeile undRRC für jede Spalte.RC

Bisher habe ich einen Weg gefunden, dies zu erreichen: einfach die Matrixelemente nach dem Zufallsprinzip zu initialisieren (z. B. aus einer gleichmäßigen, normalen oder Laplace-Verteilung mit einem Mittelwert von Null und einer willkürlichen Varianz) und dann abwechselnd Zeilen und Spalten auf normalisieren 1 , endet mit der Zeilennormalisierung. Dies scheint ziemlich schnell zum gewünschten Ergebnis zu konvergieren (z. B. für R = 40 und C = 80 beträgt die Varianz der Spaltenlänge nach 2 Iterationen in der Regel ~ 0,00001 ), aber ich bin nicht sicher, ob ich mich auf diese schnelle Konvergenzrate in verlassen kann allgemein (für verschiedene Matrixdimensionen und Anfangselementverteilungen).lenGth=1R=40C=80 0,000012

Meine Frage ist: ist es eine Möglichkeit , das gewünschte Ergebnis (zu erreichen , c o l u m n l e n g t h s = rOw lenGths=1 ) direkt ohne Iteration zwischen Zeilen- / Spaltennormalisierung? ZB so etwas wie der Algorithmus zum Normalisieren eines Zufallsvektors (Elemente zufällig initialisieren, Summe der Quadratwerte messen, dann jedes Element mit einem gemeinsamen Skalar skalieren). Wenn nicht, gibt es eine einfache Charakterisierung für die Konvergenzrate (zB num Iterationenbis Fehler<ε) des iterativen Verfahrens oben beschrieben?cOlumn lenGths=RC<ϵ


1
Dies ähnelt dem Sinkhorn-Knopp-Algorithmus, der auch als iterative proportionale Anpassung bezeichnet wird.
Kardinal

6
Außerdem sollten Sie definieren, was Sie mit "zufälligen" Matrizen meinen. Zum Beispiel wird die von Ihnen beschriebene Prozedur (fast zweifellos) keine zufälligen Matrizen gleichmäßig über den gewünschten Raum erzeugen.
Kardinal

1
@ Kardinal Guter Punkt. Beachten Sie jedoch, dass Sie mindestens identische (marginale) Verteilungen für alle Komponenten erzielen können, indem Sie nachträglich mit einem Paar zufälliger Permutationsmatrizen multiplizieren (um sowohl Zeilen als auch Spalten zufällig anzuordnen).
whuber

1
@whuber: Ja, obwohl die gemeinsame Aufteilung noch recht seltsam sein könnte. Mit "Nachmultiplizieren" meine ich, links und rechts nach der Konvergenz zu multiplizieren (anstatt z. B. rechts zu multiplizieren).
Kardinal

9
Eigentlich denke ich, dass Ihr Algorithmus genau der Sinkhorn-Knopp-Algorithmus mit einer sehr geringen Modifikation ist. Sei Ihre ursprüngliche Matrix und sei Y eine Matrix der gleichen Größe, so dass Y i j = X 2 i j ist . Dann ist der Algorithmus äquivalent Anwendung Sinkhorn-Knopp bis Y , wobei im letzten Schritt Sie die gewünschte Form gewinnen , indem man X i j = n g n ( X i j ) XY.Y.ichj=Xichj2Y. . Die Konvergenz von Sinkhorn-Knopp ist nur unter pathologischen Umständen gewährleistet. Das Nachlesen sollte sehr hilfreich sein. X^ichj=sGn(Xichj)Y.ichj
Kardinal

Antworten:


6

Wie @ cardinal in einem Kommentar sagte:

Eigentlich denke ich, dass Ihr Algorithmus genau der Sinkhorn-Knopp-Algorithmus mit einer sehr geringen Modifikation ist. Sei Ihre ursprüngliche Matrix und sei Y eine Matrix der gleichen Größe, so dass Y i j = X 2 i j ist . Dann ist der Algorithmus äquivalent Anwendung Sinkhorn-Knopp bis Y , wobei im letzten Schritt Sie die gewünschte Form gewinnen , indem man X i j = n g n ( X i j ) XY.Y.ichj=Xichj2Y. . Die Konvergenz von Sinkhorn-Knopp ist nur unter pathologischen Umständen gewährleistet. Das Nachlesen sollte sehr hilfreich sein.X^ichj=sGn(Xichj)Y.ichj

... der iterative Algorithmus, den ich in der ursprünglichen Frage vorgeschlagen habe, scheint dem Sinkhorn-Knopp-Algorithmus sehr ähnlich zu sein. Interessanterweise scheint es auch der iterativen proportionalen Anpassung (IPF) sehr ähnlich zu sein , die, wie auf der IPF-Wikipedia-Seite beschrieben, mit Newtons Methode und Erwartungsmaximierung zusammenhängt (alle haben das gleiche Limit).

Diese iterativen Methoden werden häufig auf Probleme angewendet, bei denen keine geschlossene Lösung vorliegt. Daher gehe ich versuchsweise davon aus, dass die Antwort auf die Frage negativ ist: Es gibt keine Möglichkeit, die gewünschte Lösung ohne Zeilen- / Spalteniteration zu erzielen.


(+1) Für Ihr anhaltendes Interesse an dieser Frage und Ihr unabhängiges Follow-up. :-)
Kardinal
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.