Главная arrow книги arrow Копия Глава 14. Вероятностные рассуждения arrow Методы непосредственной выборки
Методы непосредственной выборки

Примитивной операцией в любом алгоритме выборки является формирование выборок из известного распределения вероятностей. Например, подлинная монета может рассматриваться как случайная переменная Coin со значениями <heads, tails> и априорным распределением Р (Coin) =<0 . 5, 0 . 5>. Операция получения выборки из этого распределения полностью аналогична подбрасыванию монеты: с вероятностью 0,5 эта операция будет возвращать значение heads (орел) и с такой же вероятностью — значение tails (решка). Если имеется источник случайных чисел в диапазоне [0,1], сформировать любые распределения по одной переменной совсем несложно.

В процессе случайного формирования выборки простейшего типа для байесовских сетей, рассматриваемом в этом разделе, вырабатываются события, не имеющие связанных с ними свидетельств, которые могут быть зарегистрированы в сети. Идея этого метода состоит в том, что выборка должна формироваться последовательно по каждой переменной, в топологическом порядке. Распределение вероятностей, из которого берется выборка значения, обусловливается значениями, уже присвоенными родительским переменным этой переменной. Соответствующий алгоритм приведен в листинге 14.3. Проиллюстрируем его работу на примере сети, приведенной на рис. 14.9, я, предполагая, что имеет место упорядочение [Cloudy, Sprinkler, Rain, WetGrass], как описано ниже.

Листинг 14.3. Алгоритм формирования выборки, который вырабатывает события на основании байесовской сети

function Prior-Sample(bn) returns событие, выработанное путем применения операции формирования выборки к априорному распределению, заданному в виде сети bn inputs: bn, байесовская сеть, задающая совместное распределение P(Xi,...,Xn)

х <— событие с п элементами for i = 1 to n do

Xi <— случайная выборка из Р (Xi|parents (Xi) ) return x

1.    Выборка из распределения Р (Cloudy) =<0 . 5 , 0 . 5>; предположим, что она возвращает true.

2.    Выборка из распределения Я [Sprinkler] Cloudy=true) =<0 .1, 0 . 9>; предположим, что она возвращает false.

3.    Выборка из распределения P(Rain | Cloudy=true) =<0 . 8, 0 . 2>; предположим, что она возвращает true.

4. Выборка из распределения Ρ(WetGrass|Sprinkler=false,Rain=true) =<0 . 9, 0 . 1>; предположим, что она возвращает true.