Digamos que tenemos una distribución de Dirichlet con vector de parámetro dimensional → α = [ α 1 , α 2 , . . . , α K ] . ¿Cómo puedo extraer una muestra (un vector K- dimensional) de esta distribución? Necesito una explicación (posiblemente) simple.
sampling
dirichlet-distribution
usuario1315305
fuente
fuente
Un método simple (aunque no exacto) consiste en utilizar el hecho de que dibujar una distribución de Dirichlet es equivalente al experimento de la urna de Polya. (Dibujando de un conjunto de bolas de colores y cada vez que dibujas una bola, la vuelves a poner en la urna con una segunda bola del mismo color)
Luego :
repetir N veces
final repetir
Si no me equivoco, ese método es asintóticamente exacto. Pero dado que N es finito, NUNCA dibujará algunas distribuciones con probabilidades previas muy pequeñas (mientras que debe dibujarlas con una frecuencia muy pequeña). Supongo que podría ser satisfactorio en la mayoría de los casos con N = K.10.
fuente
np.random.dirichlet
se implementa, porque genera ceros exactos en los vectores de probabilidad muestreados, aunque dichos vectores no pertenecen a ningún soporte de Dirichlet. Esto es lo que me trajo aquí.