Скажімо , у нас є розподіл Діріхле з - мірного векторного параметра → & alpha ; = [ & alpha ; 1 , & alpha ; 2 , . . . , α K ] . Як я можу зробити з цього розподілу зразок ( K- розмірний вектор)? Мені потрібно (можливо) просте пояснення.
Скажімо , у нас є розподіл Діріхле з - мірного векторного параметра → & alpha ; = [ & alpha ; 1 , & alpha ; 2 , . . . , α K ] . Як я можу зробити з цього розподілу зразок ( K- розмірний вектор)? Мені потрібно (можливо) просте пояснення.
Відповіді:
Спочатку намалюйте незалежних випадкових зразків y 1 , … , y K з розподілів Gamma, кожен з щільністю
а потім встановити
Тепер, буде слідувати розподілу Діріхле
Сторінка Вікіпедії в дирихлетському дистрибуції розповідає вам, як саме відібрати вибір з дистрихлетського дистрибутива.
Також у R
бібліотеці MCMCpack
є функція вибірки випадкових змінних з розподілу Діріхле.
Простий метод (в той час як не точний) полягає у використанні того факту, що малювання розподілу Діріхле еквівалентно експерименту урни Полі. (Малюючи з набору кольорових кульок і кожного разу, коли ви малюєте кульку, ви кладете її назад в урну з другою кулькою того ж кольору)
Потім :
повторити N разів
кінець повторити
Якщо я не помиляюся, цей метод є асимптотично точним. Але оскільки N є кінцевим, ви НІКОЛИ не будете малювати деякі розподіли з дуже невеликими попередніми ймовірностями (тоді як ви повинні малювати їх з дуже малою частотою). Я думаю, що це може задовольнити в більшості випадків N = K.10.
np.random.dirichlet
реалізований, оскільки він генерує точні нулі у вибіркових векторах ймовірності, хоча такі вектори не належать до жодної підтримки Диріхле. Ось що мене тут привело.