Matrices aléatoires avec contraintes sur la longueur des lignes et des colonnes

25

J'ai besoin de générer des matrices non carrées aléatoires avec des lignes et des colonnes , des éléments distribués au hasard avec une moyenne = 0, et contraints de telle sorte que la longueur (norme L2) de chaque ligne soit et que la longueur de chaque colonne soit . De manière équivalente, la somme des valeurs carrées est 1 pour chaque ligne et pour chaque colonne.RC1RCRC

Jusqu'à présent, j'ai trouvé un moyen d'y parvenir: il suffit d'initialiser les éléments de la matrice de manière aléatoire (par exemple à partir d'une distribution uniforme, normale ou laplace avec une moyenne nulle et une variance arbitraire), puis de normaliser alternativement les lignes et les colonnes à , se terminant par la normalisation des lignes. Cela semble converger assez rapidement vers le résultat souhaité (par exemple pour et , la variance de la longueur de colonne est généralement ~ après itérations), mais je ne suis pas sûr de pouvoir compter sur ce taux de convergence rapide en général (pour diverses dimensions de matrice et distributions initiales d'éléments).length=1R=40C=80 0,000012

Ma question est la suivante: existe-t-il un moyen d'obtenir le résultat souhaité ( , ) directement sans itérer entre normalisation de ligne / colonne? Par exemple, quelque chose comme l'algorithme de normalisation d'un vecteur aléatoire (initialiser les éléments au hasard, mesurer la somme des valeurs carrées, puis mettre à l'échelle chaque élément par un scalaire commun). Sinon, existe-t-il une caractérisation simple du taux de convergence (par exemple, nombre d'itérations jusqu'à erreur ) de la méthode itérative décrite ci-dessus?row lengths=1column lengths=RC<ϵ

Tyler Streeter
la source
1
Ceci est assez similaire à l'algorithme Sinkhorn-Knopp, également connu sous le nom d'ajustement proportionnel itératif.
cardinal
6
Vous devez également définir ce que vous entendez par matrices "aléatoires". Par exemple, la procédure que vous décrivez ne produira (presque sans aucun doute) pas uniformément des matrices aléatoires sur l'espace souhaité.
cardinal
1
@cardinal Bon point. Mais notez que vous pouvez au moins obtenir des distributions identiques (marginales) pour tous les composants en post-multipliant par une paire de matrices de permutation aléatoires (pour organiser au hasard les lignes et les colonnes).
whuber
1
@whuber: Oui, bien que la distribution conjointe puisse encore être assez étrange. Par "post multiplication", je suppose que vous entendez multiplier à gauche et à droite "post-convergence" (plutôt que, par exemple, multiplier à droite).
cardinal
9
En fait, après un peu de réflexion, je pense que votre algorithme est exactement l'algorithme Sinkhorn-Knopp avec une modification très mineure. Soit votre matrice d'origine et Soit une matrice de même taille telle que . Ensuite, votre algorithme équivaut à appliquer Sinkhorn-Knopp à , où à la dernière étape vous récupérez votre forme souhaitée en prenant . Sinkhorn-Knopp est garanti de converger sauf dans des circonstances assez pathologiques. La lecture devrait être très utile. Y Y i j = X 2 i j Y X i j = s g n ( X i j ) XOuiOuijej=Xjej2OuiX^jej=sgn(Xjej)Ouijej
cardinal

Réponses:

6

Comme l'a dit @cardinal dans un commentaire:

En fait, après un peu de réflexion, je pense que votre algorithme est exactement l'algorithme Sinkhorn-Knopp avec une modification très mineure. Soit votre matrice d'origine et une matrice de même taille telle que . Ensuite, votre algorithme équivaut à appliquer Sinkhorn-Knopp à , où, à l'étape finale, vous récupérez la forme souhaitée en prenant . Sinkhorn-Knopp est garanti de converger sauf dans des circonstances assez pathologiques. La lecture devrait être très utile.Y Y i j = X 2 i j Y X i j = s g n ( X i j ) XOuiOuijej=Xjej2OuiX^jej=sgn(Xjej)Ouijej

... il semble que l'algorithme itératif que j'ai suggéré dans la question d'origine soit très similaire à l'algorithme Sinkhorn-Knopp. Fait intéressant, il semble également très similaire à l' ajustement proportionnel itératif (IPF), qui, comme décrit sur la page wikipedia IPF, est lié à la méthode de Newton et à la maximisation des attentes (tous ont la même limite).

Ces méthodes itératives sont souvent appliquées à des problèmes qui n'ont pas de solution sous forme fermée, donc je suppose que la réponse à la question est négative: il n'y a aucun moyen d'obtenir la solution souhaitée sans itération de ligne / colonne.

Tyler Streeter
la source
(+1) Pour votre intérêt continu pour cette question et votre suivi indépendant. :-)
Cardinal