monte carlo simulation что это

Моделирование методом Монте-Карло

Что такое моделирование методом Монте-Карло?

Моделирование Монте-Карло, также известное как метод Монте-Карло или многократное имитационное моделирование вероятностей, представляет собой математический метод, с помощью которого можно оценить возможные результаты неопределенного события. Метод Монте-Карло был изобретен Джоном фон Нейманом и Станиславом Уламом во время Второй мировой войны с целью улучшения процесса принятия решений в условиях неопределенности. Название методу дал известный своими казино город Монако, поскольку в основе данного подхода к моделированию лежит принцип генерации случайных чисел, применяемый в рулетке.

Метод моделирования Монте-Карло нашел свое применение в оценке риска для разнообразных практических задач, включая искусственный интеллект, котировки акций, прогнозирование продаж, управление проектами и ценообразование. Кроме того, данный метод обладает рядом преимуществ по сравнению с прогнозными моделями с фиксированными входными значениями, включая возможность проведения анализа чувствительности или расчета корреляции входных значений. Анализ чувствительности позволяет оценить влияние отдельных входных значений на определенный результат, а корреляция — понять взаимосвязи между любыми входными переменными.

Как работает моделирование методом Монте-Карло?

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

Кроме того, высокая точность метода Монте-Карло позволяет применять его для долгосрочного прогнозирования. С увеличением количества входных данных растет и число прогнозов, что позволяет с большей точностью прогнозировать результаты на более отдаленные сроки. Результатом выполнения метода Монте-Карло является диапазон возможных результатов с указанием вероятности каждого события.

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

Как применяется метод Монте-Карло

Независимо от используемого инструмента, метод Монте-Карло состоит из трех основных шагов:

Изменяя базовые параметры моделирования, метод Монте-Карло можно повторять сколько угодно раз. Также для вычисления разброса в выборке можно рассчитать дисперсию и стандартное отклонение, которые традиционно используются для оценки разброса. Дисперсия переменной представляет собой математическое ожидание квадрата разности между переменной и ее ожидаемым значением. Стандартное отклонение вычисляется как квадратный корень дисперсии. Как правило, чем меньше дисперсия, тем лучше.

Более подробная информация о моделировании методом Монте-Карло приведена здесь (внешняя ссылка).

Моделирование методом Монте-Карло и IBM

Для моделирования методом Монте-Карло можно использовать разнообразные инструменты, такие как Microsoft Excel, однако для проведения сложных статистических расчетов рекомендуется выбирать более комплексные программные продукты, например IBM SPSS Statistics, оптимизированные для анализа рисков и имитаций по методу Монте-Карло. IBM SPSS Statistics — высокопроизводительная программная платформа статистического анализа с надежным набором функций, которые помогают организациям извлекать ценную информацию из своих данных.

Возможности SPSS Statistics:

Например, с помощью модуля имитации в SPSS Statistics можно моделировать различные суммы рекламного бюджета и оценивать влияние на общий объем продаж. Результаты моделирования могут служить основой для принятия решений об увеличении расходов на рекламу для достижения целевых показателей объема продаж. Более подробная информация о применении IBM SPSS Statistics для моделирования методом Монте-Карло приведена здесь (внешняя ссылка).

IBM Cloud Functions также предоставляет возможность выполнять моделирование методом Монте-Карло. IBM Cloud Functions — бессерверная платформа «функция как услуга» (FaaS), выполняющая код в ответ на входящие события. Благодаря функциям IBM Cloud весь цикл имитационного моделирования методом Монте-Карло занимает всего 90 секунд с выполнением 1000 параллельных вызовов. Более подробная информация об использовании инструментов IBM для моделирования методом Монте-Карло приведена здесь.

Для получения дополнительной информации о моделировании методом Монте-Карло зарегистрируйте IBMid и создайте учетную запись IBM Cloud.

Источник

Использование метода Монте-Карло для создания портфеля

Начинающие (да и не только) инвесторы часто задаются вопросом о том, как отобрать для себя идеальное соотношение активов входящих в портфель. Часто (или не очень, но знаю про двух точно) у некоторых брокеров эту функцию выполняет торговый робот. Но заложенные в них алгоритмы не раскрываются.

Если сложить долю всех акций, входящих в портфель, то сумма должна стремиться к единице (а лучше быть равна). Дальше как обычно проведем подготовку данных для расчетов:

Теперь можно провести расчет для весов предложенных торговым роботом и узнать доходность данного портфеля за последник три года и стандартное отклонение.

Симуляция Монте-Карло

Первоначально небольшое вступительное слово о том, как используется метод Монте-Карла для оптимизации портфеля

Сначала акциям задаются случайные веса, после чего производится расчет доходности и стандартного отклонения. Полученные значения сохраняются. Следующим шагом случайным образом меняются веса (главное не забывать, что их сумма должна составлять единицу) и все повторяется — расчет и сохранение полученного значения. Количество итераций зависит от времени, мощностей компьютера для расчета и рисков, который готов принять инвестор. В этот раз попробуем провести 10000 расчетов для выявления портфеля с минимальным убытком и максимальным значением коэффициента Шарпа.

Теперь можно рассчитать портфель с максимальным коэффициентом Шарпа или минимальным риска.

Ну а самое важное представление можно получить, когда данные визуализируешь:

Портфель с максимальным коэффициентом Шарпа показан красной звездой, синей — с минимальным стандартным отклонением и зеленой — предложенный роботом. Как видно — портфель, предложенный роботом, не совпадает с этими показателями, но на каком остановиться портфеле — выбор остается за инвестором. А я постараюсь в конце года вернуться к сравнению портфелей. А сейчас все три портфеля находятся в просадке.

Источник

Моделирование методом Монте-Карло имеет множество применений в финансовой практике, связанных с анализом сложных случайных процессов, в том числе в финансовом планировании, стоимостной оценке рисков (VaR), оценке стоимости сложных опционов и других финансовых активов. Рассмотрим концепцию моделирования методом Монте-Карло в рамках изучения количественных методов по программе CFA.

Разобравшись в основах распределений вероятности, мы теперь готовы узнать о компьютерном методе, в котором вероятностные распределения играют важную роль. Этот метод называется моделированием методом Монте-Карло, статистическим моделированием или имитационным моделированием (англ. ‘Monte Carlo simulation’).

Моделирование методом Монте-Карло в области финансов предполагает использование компьютера для имитации функционирования сложной финансовой системы.

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

Исследователь Стэнфордского университета Сэм Сэведж представил следующую довольно точную аналогию роли этого метода:

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

Пенсионные планы с установленными выплатами часто предполагают вложение свободных активов в зависимости от запланированного погашения пенсионных обязательств.

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

Читайте также:  exhaust brake что означает

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

Последствия решений инвестиционной политики пенсионного фонда можно оценить с помощью моделирования на определенный период. Эксперимент можно повторить для другого набора допущений.

В приведенном ниже Примере (11) серия ставок доходности не достаточно велика, чтобы ответить на вопросы аналитиков о временных закономерностях фондового рынка, поэтому исследователи моделируют рыночную доходность, чтобы найти ответы на свои вопросы.

Моделирование методом Монте-Карло также широко используется для получения стоимостной оценки риска VaR. В этом случае мы моделируем показатель прибыли и убытков портфеля в течение определенного промежутка времени.

Повторные испытания в рамках моделирования (каждое испытание означает получение случайных наблюдений из распределения вероятностей) создают частотное распределение для оценки стоимости портфеля. Например, точка, которая определяет порог отсечения, по меньшей мере, 5% благоприятных моделируемых изменений, является 95%-ной оценкой риска VaR.

Чрезвычайно важным применением моделирования методом Монте-Карло является оценка сложных ценных бумаг, в частности, некоторых европейских опционов, для которых не существует аналитической формулы ценообразования.

Для других ценных бумаг, таких как ипотечные ценные бумаги со сложными встроенными опционами, моделирование методом Монте-Карло также является важным аналитическим инструментом.

Исследователи используют моделирование методом Монте-Карло, чтобы проверить свои модели и инструменты.

Насколько критично конкретное предположение об эффективности модели?

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

Процесс моделирования методом Монте-Карло.

Чтобы понять технику моделирования методом Монте-Карло, давайте представим процесс в виде серии шагов.

Для того, чтобы проиллюстрировать эти шаги, мы рассмотрим пример использования метода Монте-Карло для оценки азиатского колл-опциона, не имеющего аналитической формулы ценообразования.

Шаг 1. Определите интересующие величины (стоимость опциона, например, или размер активов пенсионного плана) в терминах базовых случайных величин.

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

Укажите первоначальные значения базовых случайных величин.

Для иллюстрации шагов, мы используем оценку азиатского колл-опциона: \( С_ \) представляет стоимость опциона при исполнении в момент времени \(T\). Нижний индекс \(i\) в \( С_ \) указывает, что значение \( С_ \) является результатом \(i-\text<го>\) имитационного испытания (англ. ‘simulation trial’).

Каждое имитационное испытание требует генерации случайной величины (итерация Шага 4).

Шаг 2. Определите временную шкалу. Возьмите календарный временной горизонт и разделить его на несколько подпериодов, общим числом \(K\).

Календарный период разделенный на \(K\) подпериодов, имеет временной инкремент (приращение времени) \(\Delta t\).

Шаг 3. Сделайте предположения о характере распределения для факторов риска, которые влияют на базовые случайные величины.

Например, цена акций является базовой случайной величиной для азиатского колл-опциона, поэтому нам нужна модель движения цен на акции. Допустим, мы выбираем следующую модель движения цен на акции, где \( Z_k \) обозначает стандартную нормальную случайную величину:

\(\Delta t\)(Цена акций) = (\( \mu \times \) Предыдущая цена акций \(\times \Delta t\)) + (\( \sigma \times \) Предыдущая цена акций \(\times Z_k \))

В данном случае, \( Z_k \) является фактором риска при моделировании. Выбирая значение \( \mu\) и \( \sigma\), мы контролируем распределение стоимости акций. Хотя в этом примере используется один фактор риска, данная имитация может иметь несколько факторов риска.

Шаг 4. С помощью компьютерной программы или функции Excel, сгенерируйте \(K\) случайные наблюдения для каждого фактора риска.

Шаг 5. Вычислите базовые случайные величины, используя случайные наблюдения, сгенерированные на Шаге 4.

Результатом описанной выше модели динамики цены акций будет \(K\) наблюдений изменений цены акций. Для преобразования этих изменений в \(K\) цен на акции необходим дополнительный расчет (с использованием первоначальных цен акций, определенных на Шаге 1).

Другой расчет вычисляет среднюю цену акций в течение срока действия опциона (т.е. сумма \(K\) цен на акции делятся на \(K\)).

Шаг 6. Рассчитайте интересующие величины.

В нашем примере, первый расчет определяет стоимость азиатского колл-опциона на момент исполнения, \( С_ \). А второй расчет дисконтирует эту конечную (будущую) стоимость к приведенной (текущей) стоимости, чтобы получить стоимость опциона на текущую дату, \( С_ \).

Мы выполнили одно имитационное испытание (Нижний индекс \(i\) в \( С_ \) означает \(i-\text<ое>\) имитационное испытание).

При моделировании методом Монте-Карло, в табличной форме записываются статистические данные каждого испытания, касающиеся распределения интересующих нас величин, в том числе их средние значения и стандартные отклонения.

Шаг 7. Итеративно возвращайтесь к Шагу 4, пока не выполните все \( I \) испытаний.

И, наконец, рассчитайте итоговые статистические данные для всех имитаций. Ключевым значением в нашем примере является среднее значение \( С_ \) для общего количества имитационных испытаний, \( I \). Это среднее значение и будет оценкой стоимости азиатского колл-опциона методом Монте-Карло.

Сколько имитационных испытаний необходимо выполнить?

Как правило, нам нужно увеличить количество испытаний на коэффициент 100, чтобы увеличить точность испытания на 1 знак.

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

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

Генераторы случайных чисел и процедура генерации случайных наблюдений.

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

Термин «генератор случайных чисел» (англ. ‘random number generator’) относится к алгоритму, который возвращает равномерно распределенные случайные числа между 0 и 1.

В контексте компьютерного моделирования, термин «случайное число» (англ. ‘random number’) относится к наблюдению из равномерного распределения.

Для других распределений в данном контексте используется термин «случайное наблюдение» (англ. ‘random observation’).

Числа, возвращаемые генераторами случайных чисел, зависят от «зерна» или начального значения (от англ. ‘seed’). Если то же самое зерно передается в качестве параметра в тот же генератор, он будет возвращать ту же самую последовательность случайных чисел.

Замечательным фактом является то, что случайные наблюдения из любого распределения можно получить с использованием равномерной случайной величины в диапазоне от 0 до 1.

Для того, чтобы лучше понять это, рассмотрим метод обратной трансформации случайных наблюдений (англ. ‘inverse transformation method’).

Предположим, что мы заинтересованы в получении случайных наблюдений для случайной величины \(X \), с кумулятивной функцией распределения \( F(x) \). Напомним, что \( F(x) \), рассчитанная в точке \(x\), представляет собой число между 0 и 1.

Предположим, что случайный исход этой случайной величины равен 3.21 и что \(F(3.21) = 0.25\) или 25%.

Определим обратную функцию \(F\) и назовем ее \( F^ <-1>\). Она может сделать следующее: подставим вероятность 0.25 в функцию \( F^ <-1>\), и она вернет случайный результат 3.21. Другими словами, \( F^<-1>(0.25)=3.21 \).

Для генерации случайных наблюдений величины \( X \), выполняются следующие шаги:

Генерация случайного наблюдения сама по себе является областью отдельного изучения, и здесь мы лишь кратко обсудили метод обратной трансформации.

Далее, в Примерах 11 и 12, мы проиллюстрируем, как моделирование методом Монте-Карло позволяет определить потенциальную выгоду от выбора момента сделки (рыночного тайминга).

Пример (11) определения потенциальной прибыли от рыночного тайминга: метод Монте-Карло (1).

Насколько точно инвестор должен прогнозировать бычий рынок (англ. ‘bull market’) и медвежий рынок (англ. ‘bear market’), чтобы получать прибыль?

Какой размер прибыли по сравнению со стратегией «покупать и держать» можно получить при заданной точности прогнозирования рынка?

Из-за большой изменчивости доходности активов, необходим огромный объем данных о доходности, чтобы получить статистически достоверные ответы на эти вопросы.

Поэтому исследователи Chua, Woodward и To (1987) выбрали метод Монте-Карло для определения потенциальной прибыли от рыночного тайминга. Их интересовали перспективы канадских инвесторов.

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

Инвестиционные результаты тех, кто использует рыночный тайминг можно сравнить с результатами тех, кто придерживается долгосрочной стратегии buy-and-hold. Долгосрочный инвестор получает рыночный доход ежегодно.

Для Chua и др. одним из интересующих показателей был выигрыш от рыночного тайминга. Они определили эту величину как среднюю доходность маркет-таймера за вычетом средней доходности долгосрочного инвестора.

С учетом этих параметров, моделируемая рыночная доходность будет:

\( R_ = 0.1830 Z_t + 0.1295, \ t = 1, \ 2, \ \ldots, \ 10,000. \)

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

Инвесторы могут обладать различными навыками и опытом прогнозировании бычьих и медвежьих рынков. Chua и др. охарактеризовали маркет-таймеров по точности прогнозирования бычьих рынков и точности прогнозирования медвежьих рынков.

Например, точность прогнозирования бычьего рынка в 50% означает, что, если маркет-таймер прогнозирует бычий рынок на следующий год, он оказывается прав только в половине случаев, что указывает на отсутствие навыка.

Мы можем смоделировать, насколько инвестор будет точен.

После генерации первого наблюдения для \( R_ — R_\), мы знаем, соответствует ли это наблюдение бычьему или медвежьему рынку.

Если наблюдение соответствует бычьему рынку, то 0.60 (точность прогноза на бычьем рынке) сравнивается со случайным числом (от 0 до 1).

Если случайное число оказывается меньше, чем 0.60, что происходит с вероятностью 60%, то предполагается, что маркет-таймер правильно предсказал бычий рынок и его доходность для этого первого наблюдения является рыночной ставкой доходности.

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

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

В любом случае, доходность инвестора сравнивается с рыночной доходностью, чтобы зафиксировать его выигрыш (разницу) по сравнению с долгосрочной стратегией buy-and-hold.

Описанный выше процесс является одним имитационным испытанием (итерацией).

Сымитированной средней доходностью, заработанной маркет-таймером, будет средняя заработанная доходность по итогу всех испытаний в моделировании.

Для того, чтобы лучше понять этот процесс, рассмотрим гипотетическое моделирование методом Монте-Карло с четырьмя испытаниями для маркет-таймера 60-80 таймера (напомним, что это означает 60% точность в прогнозировании бычьих рынков и 80% точность в прогнозировании медвежьих рынков).

В Таблице 8 приведены данные для моделирования.

Давайте взглянем на испытания 1 и 2.

В испытании 1, первое сгенерированное случайное число приводит к рыночной доходности 0.121. Поскольку рыночная доходность 0.121, превысила безрисковую доходность по векселю 0.050, мы имеем дело с бычьим рынком.

Затем мы генерируем случайное число 0.531, которое мы потом сравниваем с точностью маркет-таймера для бычьего рынка, 0.60. Поскольку 0.531 меньше, чем 0.60, то предполагается, что маркет-таймер правильно спрогнозировал бычий рынок и, соответственно, вложился в акции. Таким образом, в этом испытании маркет-таймер получает рыночную доходность 0.121.

В испытании 2 мы наблюдаем еще один бычий рынок, и, поскольку случайное число 0.725 больше, чем 0.60, то предполагается, что маркет-таймер сделал ошибку и предсказал медвежий рынок. Таким образом, таймер заработал безрисковую доходность 0.081, а не более высокую рыночную доходность.

Таблица 8. Гипотетическое моделирование для маркет-таймера 60-80.

Генерация случайных наблюдений для рыночной доходности \( R_\)

Бычий или медвежий рынок?

Предска-
зание маркет-таймера правильно?

Зарабо-
танная доходность маркет-таймера

Источник

Интуитивное использование методов Монте-Карло с цепями Маркова.

Легко ли это? Я попробовал.

Алексей Кузьмин, директор разработки и работы с данными ДомКлик, преподаватель факультета « Аналитика и Data Science » в Нетологии, перевёл статью Rahul Agarwal о том, как работают методы Монте-Карло с цепями Маркова для решения проблем с большим пространством состояний.

Каждый, кто связан с Data Science, хоть раз слышал о методах Монте-Карло с цепями Маркова (MCMC). Иногда тема затрагивается во время изучения байесовской статистики, иногда — при работе с такими инструментами, как Prophet.

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

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

Итак, начнём. MCMC состоит из двух терминов: Монте-Карло и Марковские цепи. Поговорим о каждом из них.

Монте-Карло

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

Это всё, что вам нужно знать о методах Монте-Карло. Да, это просто несложная техника моделирования с причудливым названием.

Марковские цепи

Поскольку термин MCMC состоит из двух частей, нужно ещё понять, что такое цепи Маркова. Но прежде, чем перейти к Марковским цепям, немного поговорим о Марковских свойствах.

Предположим, есть система из M-возможных состояний и вы переходите из одного состояния в другое. Пусть пока вас ничего не сбивает с толку. Конкретный пример подобной системы — погода, которая меняется от жаркой к холодной и умеренной. Другой пример — фондовый рынок, который прыгает от «медвежьего» к «бычьему» и состоянию стагнации.

Марковское свойство говорит о том, что для данного процесса, который находится в состоянии Xn в конкретный момент времени, вероятность Xn + 1= k (где k — любое из M-состояний, в которое процесс может перейти) зависит только от того, каково это состояние в данный момент. А не о том, как оно достигло нынешнего состояния.

Говоря математическим языком, можем записать это в виде следующей формулы:

Для наглядности: вы не заботитесь о последовательности состояний, которые рынок принимал, чтобы стать «бычьим». Вероятность того, что следующее состояние будет «медвежьим», определяется только тем фактом, что рынок в настоящее время находится в «бычьем» состоянии. Это также имеет смысл на практике.

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

Что такое стационарное распределение

Я попытаюсь объяснить стационарное распределение, рассчитав его для приведённого ниже примера. Предположим, у вас есть Марковский процесс для фондового рынка, как показано ниже.

У вас есть матрица переходных вероятностей, которая определяет вероятность перехода из состояния Xi в Xj.

В приведённой матрице переходных вероятностей Q вероятность того, что следующим состоянием будет «бык», учитывая текущее состояние «бык» = 0,9; вероятность того, что следующее состояние будет «медвежьим», если текущее состояние «бык» = 0,075. И так далее.

Что ж, давайте начнём с какого-то определённого состояния. Наше состояние будет задаваться вектором [бык, медведь, стагнация]. Если мы начнём с «медвежьего» состояния, вектор будет таким: [0,1,0]. Мы можем вычислить распределение вероятности для следующего состояния, умножив вектор текущего состояния на матрицу переходных вероятностей.

Заметьте, что вероятности дают в сумме 1.

Следующее распределение состояний можно найти по формуле:

И так далее. В конце концов, вы достигнете стационарного состояния, в котором состояние стабилизируется:

Вы можете получить стационарное распределение при помощи следующего кода:

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

Теперь мы можем ответить на вопрос, почему же стационарное распределение так важно.

Стационарное распределение важно, потому что с его помощью можно определять вероятность системы быть в определенном состоянии в случайное время.

Для нашего примера можно сказать, что в 62,5% случаев рынок будет в «бычьем» состоянии, 31,25% — в «медвежьем» и 6,25% — в стагнации.

Интуитивно вы можете рассматривать это как случайное блуждание по цепи.

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

Именно таким образом на заре интернета Google решил проблему поиска. Проблема заключалась в сортировке страниц, в зависимости от их важности. В Google решили задачу, используя алгоритм Pagerank. В алгоритме Google Pagerank следует рассматривать состояние как страницу, а вероятность страницы в стационарном распределении — как ее относительную значимость.

Теперь перейдём непосредственно к рассмотрению методов MCMC.

Что такое методы Монте-Карло с цепями Маркова (MCMC)

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

MCMC даёт возможность выбрать из любого распределения вероятностей. Это особенно важно, когда нужно сделать выборку из апостериорного распределения.

Например, нужно сделать сэмпл из апостериорного распределения. Но легко ли вычислить апостериорную компоненту вместе с нормирующей постоянной (evidence)? В большинстве случаев можно найти их в виде произведения правдоподобия и априорной вероятности. Но рассчитать нормирующую постоянную (p (D)) не получится. Почему? Разберёмся подробнее.

Предположим, H принимает только 3 значения:

p(D) = p(H=H1).p(D|H=H1) + p(H=H2).p(D|H=H2) + p(H=H3).p(D|H=H3)

В таком случае p(D) подсчитать легко. А что, если значение H непрерывно? Получилось бы ли рассчитать это так же легко, особенно если H принимала бесконечные значения? Для этого пришлось бы решить сложный интеграл.

Мы хотим сделать случайный отбор из апостериорного распределения, но также хотим считать p(D) константой.

Методы Монте-Карло с цепями Маркова — это класс алгоритмов для выборки из распределения вероятностей, основанный на построении цепи Маркова, которая в качестве стационарного распределения имеет желаемый вид. Состояние цепи после ряда шагов затем используется в качестве выборки из желаемого распределения. Качество выборки улучшается с увеличением количества шагов.

Разберёмся на примере. Допустим, нужна выборка из бета-распределения. Его плотность:

где C — нормирующая постоянная. На самом деле это некоторая функция от α и β, но я хочу показать, что для выборки из бета-распределения она не нужна, поэтому мы примем ее за константу.

Задача с бета-распределением действительно сложная, если не сказать практически неразрешимая.

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

Методы MCMC облегчают жизнь, предоставляя алгоритмы, которые могли бы создать цепь Маркова, которая в качестве стационарного распределения имеет бета-распределение, учитывая, что мы можем выбирать из равномерного распределения (что относительно просто).

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

Один из таких MCMC-алгоритмов — алгоритм Метрополиса-Гастингса.

Алгоритм Метрополиса-Гастингса

Интуиция:

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

Так, например, мы хотели бы провести вдвое больше времени на вершине холма высотой 100 метров, чем на соседнем 50-метровом холме. Хорошо, что мы можем сделать это, даже если не знаем абсолютных высот точек на поверхности: все, что нужно знать, это относительные высоты. Например, если вершина холма A в два раза выше вершины холма B, то мы бы хотели провести в A вдвое больше времени, чем на B.

Существуют более сложные схемы предложения новых мест и правил их принятия, но основная идея заключается в следующем:

Цель MCMC — выборка из некоторого распределения вероятностей без необходимости знать его точную высоту в любой точке (не нужно знать C).

Если процесс «блуждания» настроен правильно, вы можете убедиться, что эта пропорциональность (между проведенным временем и высотой распределения) достигнута.

Алгоритм:

Теперь давайте определим и опишем поставленную задачу более формально. Пусть s = (s1, s2,…, sM) — желаемое стационарное распределение. Мы хотим создать цепь Маркова с таким стационарным распределением. Начнем с произвольной цепи Маркова с M-состояниями с матрицей перехода P, так, что pij представляет вероятность перехода из состояния i в j.

Интуитивно мы знаем, как бродить по цепи Маркова, но цепь Маркова не имеет требуемого стационарного распределения. Эта цепь имеет некоторое стационарное распределение (которое нам не нужно). Наша цель — изменить способ, которым мы блуждаем по цепи Маркова, чтобы цепь имела желаемое стационарное распределение.

После большого количества испытаний эта цепь будет сходиться и иметь стационарное распределение s. Затем мы можем использовать состояния цепи как выборку из любого распределения.

Проделывая это для выборки бета-распределения, единственный раз, когда приходится использовать плотность вероятности, — это поиск вероятности принятия решения. Для этого делим sj на si (то есть нормирующая постоянная C сокращается).

Выборка из бета-распределения

Теперь перейдём к проблеме выборки из бета-распределения.

Бета-распределение — непрерывное распределение на [0,1] и может иметь бесконечные значения на [0,1]. Предположим, что произвольная цепь Маркова P с бесконечными состояниями на [0,1] имеет переходную матрицу P такую, что pij = pji = все элементы в матрице.

Нам не нужна Матрица P, как мы увидим позже, но я хочу, чтобы описание проблемы было максимально приближено к алгоритму, который мы предложили.

Источник

Сказочный портал