БСД, или как легко объяснить финансистам их же задачи в терминах машинного обучения

Kate

Administrator
Команда форума
Мне давно нравятся Байесовские сети доверия (БСД) своей наглядностью, что для учебного процесса, согласитесь, очень важно. Как-то в интернете, довольно неожиданно, наткнулся на очень удачную визуализацию простых финансовых задач, выполненную с использованием БСД. Мелькнула мысль – вот это, пожалуй, можно будет объяснить не только нашим финансистам, но и филологам-психологам вкупе с врачами!

А началась эта история года три назад, когда руководство ВУЗа поставило нас, преподавателей перед выбором: либо мы по команде «Все вдруг!» вступаем в цифровую экономику, либо, пожав друг другу руки, тихо расходимся, кто куда сумеет. Причина – демографическая яма, экономический кризис, успехи конкурентов и т. д.

Ну, что ж, как говорится, цифровая так цифровая! Тем из нас, у кого за плечами помимо финансового было еще и хорошее инженерное образование, всё это не показалось катастрофой, т.к. давно разжевано в учебниках и монографиях по машинному обучению, искусственному интеллекту, экспертным системам. Однако проблема усугублялась тем, что закон не препятствует поступлению филологов, психологов, врачей и еще кого хотите в финансовую магистратуру. В результате в учебной группе частенько оказывается филологов-психологов половина, а то и более. И вот тут, если вы не способны такой аудитории, что называется «между делом», быстро «дочитать» теорию вероятностей хотя бы до теоремы Байеса, то дальше – полный стоп, и никакой цифровизации.

После той находки в интернете какое-то время я целенаправленно перебирал готовые программные продукты, и, в конце концов, остановился на «Нетике» (Netica). Да, есть Hugin, есть MSBN, и еще с десяток им подобных, но, как всегда: один – дорогой, другой – сложный, третий – и то и другое, и т. д. А вот Netica – бесплатная (до 15 узлов переменных), простая, интуитивно понятная, студенты осваивают ее за одно занятие, и – вперёд! Строить свою собственную, пусть простую, даже примитивную, но работающую «с пинка» экспертную систему, которая «жужжит и щелкает» у вас прямо на занятии.

Но показать – лучше, чем рассказать, поэтому далее показываю, что из этого получилось.

Например, строим модель анализа решений инвестора об исполнении европейского опциона колл на акции. Такая БСД может быть для начала совсем небольшой – хватит и двух узлов (см. рис. 1). В нашей узлы будут такими:

  • узел Рrice (или Р) описывает случайную переменную текущей цены акции;
  • узел Decision (или D) отображает варианты решения об исполнении опциона.
Узел Р является родительским, поэтому таблицу безусловных вероятностей (ТБВ) его состояния заполняем исходя из того, что инвестору, как лицу, принимающему решения (ЛПР), известно состояние рынка, и он, основываясь на собственном опыте, с вероятностью 60% ожидает, что цена Р акции будет расти и к дате истечения опциона превысит цену его исполнения Х. Он также считает, что вероятность точного совпадения цен Р и Х очень низка (10%), поэтому оставшиеся 30% составляют вероятность того, что цена Р акции окажется ниже цены исполнения опциона Х.

ТБВ для узла Р
ТБВ для узла Р
Рис. 1. Граф (а) и диаграммы вероятностей (б)
Рис. 1. Граф (а) и диаграммы вероятностей (б)
Таблицу условных вероятностей (ТУВ) для узла D начнем заполнять исходя из того, что исполнение опциона выгодно инвестору только в том случае, если цена Р акции превысит цену исполнения опциона Х. Однако не будем забывать о том, что если это превышение будет незначительным, то оно не покроет премию, которую инвестор уже уплатил продавцу опциона. Таким образом, уверенность в исполнении опциона может в этом случае быть равна не 100%, а, допустим, 80% (1-я строка ТУВ).

ТУВ для узла D
ТУВ для узла D
Если P < X (2-я строка ТУВ), то исполнение невыгодно всегда, поэтому отказу от исполнения присваиваем 100% вероятность. Если Р точно равно Х (3-я строка ТУВ), то инвестору практически безразлично – исполнять, или не исполнять опцион, поскольку и то и другое дает одинаковый экономический результат. В терминах вероятности такое состояние обычно записывают как 50/50.

После заполнения всех таблиц вероятностей в программе Netica инициализируем построенную БСД, и сразу получаем на стержневой диаграмме нижнего узла распределение полных вероятностей в исходном состоянии модели (рис. 1б). При подстановке значений вероятностей из ТБВ и ТУВ для проверки машины действительно получаем:

D yes = 0,8 · 0,6 + 0 · 0,3 + 0,5 · 0,1 = 0,53;

D no = 0,2 · 0,6 + 1 · 0,3 + 0,5 · 0,1 = 0,47.

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

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

На рис.2а в качестве примера прямого вывода показан клик на стержне случайного события P > X. После этого в узле вариантов решений значения полных вероятностей изменились, и соответствуют 80% вероятности исполнения нашего опциона. На рис. 2б показан один из обратных выводов, который показывает, что если опцион исполняется, то значит, с вероятностью 90,6% (но не 100%) цена акции превысила цену исполнения, но при этом всё же остается 9,43% вероятности того, что цена акции будет равна цене исполнения. Самый интересный вывод следует из рис. 2в. Он говорит о том, что отказ от исполнения опциона в построенной модели может произойти с вероятностью 63,8%, при этом отказ вероятен на 25,5% даже если цена акции превысит цену исполнения, и на 10,6% при равенстве цен!

Остается проверить машину – используя те же табличные данные, найдем вручную апостериорные вероятности состояния цены акции при условии, что опцион был исполнен (Рис. 2б). Для этого придется вспомнить формулу теоремы Байеса в ее первозданном виде, и подставить в неё всё, что у нас есть:

P(P_{m}|D_{yes})=\frac{P(D_{yes}|P_{m})\times P(P_{m})}{P(D_{yes})}
P(P_{m}|D_{yes})=\frac{0,6\times0,8}{0,6\times0,8+0\times0,3+0,5\times0,1}=0,9057
P(P_{l}|D_{yes})=0
P(P_{e}|D_{yes})=0,0943

Как видим, результаты наших расчетов (с учетом округлений) полностью соответствуют результатам, полученным машиной.

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

Модель слишком простая? – сейчас же дополните её новыми узлами (переменными). Мало два? – сделайте 22, и. т. д.

Источник статьи: https://habr.com/ru/post/563638/
 
Сверху