Как я могу построить хорошее приближение к неизвестному распределению, когда есть только образцы из него, чтобы извлечь его из факела? - PullRequest
0 голосов
/ 04 июля 2019

Скажем, у меня есть только случайные выборки из Распределения и никаких других данных - например, список номеров - [1,15,30,4,etc.]. Каков наилучший способ оценить распределение, чтобы получить больше образцов из него в pytorch?

В настоящее время я предполагаю, что все сэмплы получены из нормального распределения, и просто использую среднее и стандартное сэмплы для его построения и извлечения из него. Однако эта функция может иметь любое распределение.

samples = torch.Tensor([1,2,3,4,3,2,2,1])
Normal(samples.mean(), samples.std()).sample()

Ответы [ 2 ]

1 голос
/ 04 июля 2019

Если у вас достаточно выборок (и предпочтительно размер выборки выше, чем 1), вы можете смоделировать распределение, используя Variational Autoencoder или Генеративные состязательные сети (хотя я бы придерживался с первым подходом, как это проще).

По сути, после правильной реализации и обучения вы получите детерминированный декодер, способный декодировать скрытый код, который вы передадите (например, вектор размером 10, взятый из нормального распределения) в значение из целевого распределения.

Обратите внимание, что это может быть ненадежно, хотя было бы еще сложнее, если бы ваши образцы были только 1D.

0 голосов
/ 04 июля 2019

лучший способ зависит от того, чего вы хотите достичь.Если вы не знаете базовый дистрибутив, вам нужно сделать предположения о нем, а затем подобрать подходящий (который вы знаете, как сделать выборку) для ваших выборок.Вы можете начать с чего-то простого, такого как смесь гауссианов (несколько нормальных распределений с разными весами).

Другой способ - определить дискретное распределение по имеющимся значениям.Вы дадите каждому значению одинаковую вероятность, скажем, p (x) = 1 / N.Когда вы делаете выборку из него, вы просто рисуете случайное целое число из [0, N), которое указывает на одну из ваших выборок.

...