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.
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).
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?
la source
Réponses:
Comme l'a dit @cardinal dans un commentaire:
... 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.
la source