Почему случайные числа в чистой выборке Байеса - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь обернуться вокруг выборки в Байесовских сетях (пока простая неоптимизированная предварительная выборка).Из того, что я понимаю, идея состоит в том, чтобы произвести ограниченное количество образцов и посмотреть, как они распространяются по сети.Я не понимаю, почему генератор случайных чисел необходим для этого процесса.

Предположим, у вас есть узел случайной величины с условным распределением вероятности (CPD) следующим образом:

| Color | P(Color) |
|------------------|
| Red   | 0.1      |
| Green | 0.2      |
| Blue  | 0.7      |

ТогдаВведение, которое я мог найти, говорит, что для каждого образца, который вы хотите взять, вы должны вызвать функцию random () , дающую, например, что-то в [0.0, 1.0) , и затем проверить, в который подинтервал Красный: [0,0, 0,1) , Зеленый: [0,1, 0,3) или Синий: [0,3, 1,0) падает.

Мой вопрос: зачем вообще вызывать генератор случайных чисел?В конце концов, у вас есть ваши вероятности прямо перед вами.Если вы решите заранее, что вы хотите создать количество n семплов, не могли бы вы просто иметь 0.1 * n семплов Red, 0.2 * n сэмплов зеленого цвета, а 0,7 * n сэмплов голубого цвета?Для дочернего узла с его CPD вы могли бы затем разделить все красные, зеленые и синие выборки в соответствии с их соответствующими условными вероятностями, снова без использования генератора случайных чисел.

Это все равно будет приблизительное значение, поскольку вы все еще не рассуждаете о полном совместном распределении вероятностей.И в пределе это все равно должно приближаться к корректным условным вероятностям для n -> бесконечность , не так ли?

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Ниже приводятся комментарии Эрнана К. Васкеса, взятые из обмена в контексте его первого ответа.В рамках этого обмена его комментарии ответили на мой исходный вопрос, поэтому я решил опубликовать их в качестве ответа здесь.

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

Другими словами, у вас могут быть головы или хвосты с 0,5 каждый.Если я хочу взять 2 сэмпла (n = 2), и я использую 0.5 * n, тогда у меня есть то, что каждый раз, когда он выходит головой или хвостом, происходит обратное, P (head | tail) = 1 и наоборот.И это не репрезентативная выборка, так как P (head | tail) = 0,5.Вы меняете правила игры.

0 голосов
/ 29 мая 2018

Вы правы, вам не нужна случайная выборка для этого.В общем случае, если график не очень большой, вы можете рассчитать точный правильный ответ (например, путем исключения переменной).Однако на практике вероятностные модели часто довольно сложны.Алгоритмы типа исключения переменных могут быть слишком медленными для них.Методы выборки - это способ аппроксимации алгоритмов, которые выдают ответы путем многократного генерирования случайных чисел.Учтите, что у вас может быть много узлов и ребер, и вам необходимо вычислить вероятность для них, например, чтобы ответить, P (Цвет = синий, NodeB = значение1, ... и т. Д.).Это решение может быть вычислением экспоненциального времени (в зависимости от размера сети).

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

...