Il est courant d'utiliser des poids dans des applications comme la modélisation de mélanges et de combiner linéairement des fonctions de base. Les poids doivent souvent obéir à 0 et . Je voudrais choisir au hasard un vecteur de poids \ mathbf {w} = (w_1, w_2,…) à partir d'une distribution uniforme de ces vecteurs.w i ≥ ∑ i w i = 1 w = ( w 1 , w 2 , … )
Il peut être tentant d'utiliser où U (0, 1), mais comme indiqué dans les commentaires ci-dessous, la distribution de n'est pas uniforme.
Cependant, étant donné la contrainte , il semble que la dimensionnalité sous-jacente du problème soit , et qu'il devrait être possible de choisir un en choisissant paramètres selon une certaine distribution et ensuite calculer le partir de ces paramètres (car une fois que des poids sont spécifiés, le poids restant est entièrement déterminé).
Le problème semble être similaire au problème de sélection de points de sphère (mais, plutôt que de choisir 3 vecteurs dont la norme est l'unité, je veux choisir -vecteurs dont la norme est l'unité).
Merci!
la source
Réponses:
Choisissez uniformément (au moyen de réels uniformes dans l'intervalle ). Triez les coefficients de sorte que . Ensemblex∈[0,1]n−1 n−1 [0,1] 0≤x1≤⋯≤xn−1
Parce que nous pouvons récupérer le trié au moyen des sommes partielles du , le mappage està 1; en particulier, son image est le simplexe dans . Étant donné que (a) chaque échange dans un tri est une transformation linéaire, (b) la formule précédente est linéaire et (c) les transformations linéaires préservent l'uniformité des distributions, l'uniformité de implique l'uniformité de sur le simplexe . Notons en particulier que les marginaux de ne sont pas nécessairement indépendants.w i x → w ( n - 1 ) ! n - 1 R n x w n - 1 wxi wi x→w (n−1)! n−1 Rn x w n−1 w
Ce tracé de points 3D montre les résultats de 2000 itérations de cet algorithme pour . Les points sont confinés au simplex et sont répartis approximativement uniformément sur celui-ci.n=3
Comme le temps d'exécution de cet algorithme est , il est inefficace pour les grands . Mais cela répond à la question! Une meilleure façon (en général) de générer des valeurs uniformément distribuées sur le simplexe est de tracer réels uniformes sur l'intervalle , calculern n - 1 n ( x 1 , … , x n ) [ 0 , 1 ]O(nlog(n))≫O(n) n n−1 n (x1,…,xn) [0,1]
(ce qui rend chaque positif avec la probabilité , d'où leur somme est presque sûrement non nulle) et fixonsyi 1
Cela fonctionne parce que chaque a une distribution , ce qui implique que a une distribution Dirichlet - et qui est uniforme.yi Γ(1) w (1,1,1)
la source
La première entrée est mise à zéro pour identification; vous verriez cela dans des modèles logistiques multinomiaux. Bien sûr, dans les modèles multinomiaux, vous auriez également des covariables sous les exposants, plutôt que simplement les
zz
s aléatoires . La distribution deszz
s est la distribution des valeurs extrêmes; vous auriez besoin de cela pour vous assurer que les poids résultants sont iid J'ai d'abord misrnorm
als là-bas, mais j'ai ensuite eu l'intuition que cela ne fonctionnera pas.la source
La solution est évidente. Le code MathLab suivant fournit la réponse pour 3 poids.
la source