Предиктивная аналитика политических кризисов с помощью machine learning (на исторических данных)

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

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

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

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

Черный лебедь из-за угла всегда клюет незаметно
Черный лебедь из-за угла всегда клюет незаметно

Разумеется, существует достаточно много «теорий революции», «теорий кризисов». Однако публичная их часть является скорее конгломератами политических нарративов.

Серьезные работы как правило мало известны   широкой публике, и имена наподобие Джека Голдстоуна или Питера Турчина не несут содержательной информации для читателя в большинстве случаев. Пока, как в ситуации с Нассимом Талебом или тем же Питером Турчиным, они не окажутся в нужное время в нужном месте со сбывшимся предсказанием в нужной аудитории, дав соответствующее интервью.  Что также является скорее вероятностным событием, чем закономерным, детерминированным. Так же, как и на самом деле большинство «успехов» финансистов, политиков или артистов - реализованных «не благодаря, но вопреки». Оценка деятельности, которых искажена благодаря «эффекту выжившего» и другим когнитивным парадоксам мышления – достаточно вспомнить известную шутку про многочисленное племя обезьян за печатными машинками, одна из которых (теоретически) может напечатать «Войну и мир». 

Обезьяна с печатной машинкой
Обезьяна с печатной машинкой

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

Отчасти снять остроту данной проблемы может переход от установления жестких причинно-следственных зависимостей к вероятностным выводам. 85%-вероятность политического кризиса, революции или иной ситуации нестабильности – это такой же повод принять необходимые меры. И даже 50%, 25% вероятностный вывод – не повод расслабляться. Особенно финансистам, рассчитывающим страновые и региональные риски для капитала. Не говоря уже о специалистах сферы политического управления, да и некоторым политикам – тоже, чтобы не оказаться в ситуации «прячущегося в турбине самолета», если что-то пойдет не по сценарию и против воли режиссера.

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

Сама политическая система может быть уподоблена масштабной модели принятия решений, со своими метриками эффективности, результативности, производительности, критериями точности принимаемых решений. И вовсе не означает, что нужны радикальные преобразования для повышения ее эффективности – достаточно провести ту самую «настройку гиперпараметров».

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

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

Источник данных и их предобработка

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

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

Мы будем использовать базу данных  The Cross National Time Series (CNTS), которая  содержит годовые значения около 200 переменных для более чем 200 стран, начиная с 1815 г. за исключением периодов двух мировых войн 1914–1918 и 1939–1945 гг. База структурирована по разделам и включает статистические данные по территории и населению страны, информацию по использованию технологий, экономические и электоральные данные, информацию по внутренним конфликтам, использованию энергии, промышленной статистике, по военным расходам, международной торговле, урбанизации, образованию, занятности, деятельности законодательных органов и т.п. 

Для проверки предположения используем выборку данных с 1991 по 2019 год, поскольку этот период достаточно близкий к нам для понимания, но в то же время еще не наступили события «ревущих двадцатых» XXI века, начавшиеся с пандемии COVID-19 и характеризующиеся существенным уровнем геополитического противостояния, которое предполагает искажение фактов и событий в угоду политических нарративов или наличие «множественной правды» в зависимости от политических пристрастий и интерпретаций.

В исходной базе данных под прогнозируемыми событиями  подразумевается «любое незаконное или насильственное изменение в высшей правительственной элите, любая попытка такого изменения или любое успешное или неудачное вооруженное восстание, целью которого является независимость от центрального правительства (сепаратизм)» (категория - domestic7) То есть объем понятия не совпадает с тем, что мы подразумеваем, когда говорим про слово Революция с большой буквы, будь то Октябрьская революция 1917 года или Французская буржуазная революция. В указанный объем входят так же сепаратистские выступления, в том числе и неудавшиеся. Так же «за кадром» остаётся факт внешней инициации кризисных событий. Модель с учетом действий транснациональных корпораций в «банановых республиках» или мировых гегемонов будет носить более сложный характер.

Всего на данный период времени насчитывается 588 кризисных эпизодов или 10,34% от общего количества наблюдений, сгруппированных по принципу одна страна – один год (5686 наблюдений).

Модель исследования

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

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

И данную задачу мы принципиально будем решать «в лоб» без опоры на какие-либо политические теории и предварительные выводы. Или, если использовать язык науки о данных, мы не будем использовать «предобученные модели».

Все что у нас есть – это размеченные исторические данные, свидетельствующие о том, что в определённой стране в определенный год событие было (1) или его не было (0).
Сформированный датасет из 5686 записей в 151 клонках-признаках мы трансформируем, уберем пропуски, заполнив их единым значением (9999). Пропуски в данных – это всегда плохо, они снижают итоговую точность, но в данном случаем мы вынуждены с этим смириться – в реальной жизни приходится действовать ситуации с еще большей неопределенностью.  

Далее мы разделим весь набор данных на тренинговый (70% или 3980 записей) и тестовый (30% или 1706 записей). Для выравнивания классов с помощью RandomOverSampler из раздела модуля imblearn.over_sampling мы преобразуем тренинговую выборку для выравнивания баланса классов (тестовую, естественно, мы не трогаем), увеличив ее до 7118.

Фрагмент тренингового датасета после оверсемплинга
Фрагмент тренингового датасета после оверсемплинга

Далее, чтобы сразу получить более значимый результат мы используем ансамблевые модели машинного обучения вместо базовых, таких как например «логистическая регрессия» или машина опорных векторов». Модели будет использоваться в базовой настройке для оценки их исходных метрик и скорости.  В их числе: AdaBoostClassifier, BaggingClassifier, ExtraTreesClassifier, GradientBoostingClassifier, RandomForestClassifier, StackingClassifier, VotingClassifier, HistGradientBoostingClassifier, CatBoostClassifier, lgb.LGBMClassifier, xgb.XGBClassifier.

Метрики оценки моделей - стандартные:

·       Accuracy –  доля правильных предсказаний (истинно положительных и истинно отрицательных) от общего числа предсказаний. 

·       Precision –  доля истинно положительных результатов среди всех предсказанных положительных. Показывает, насколько положительные предсказания верны.

·       Recall –  доля истинно положительных результатов среди всех реальных положительных. Показывает, насколько хорошо модель находит положительные примеры.

·       F1_score – гармоническое среднее Precision и Recall. Используется для балансировки между ними, особенно в случае несбалансированных классов. 

·       ROC_AUC –   (Площадь под ROC-кривой): мера качества модели, показывает, насколько хорошо модель различает положительный и отрицательный классы. AUC (Area Under the Curve) равен 1 для идеальной модели и 0.5 для случайного гадания.

Метрики оценки качества ансамблевых моделей машинного обучения
Метрики оценки качества ансамблевых моделей машинного обучения

Промежуточные итоги

Первый вывод, который мы получили – революции и кризисы предсказывать можно на имеющихся данных. Все модели показали ROC_AUC больше 0.5, что соответственно выше уровня «случайного гадания».  Гипотеза предсказуемости - подиверждена. Точность (accuracy) в 0.92-0.93 была бы достаточна для принятия решений, если бы мы говорили о событиях, происходящих/не происходящих с примерной одинаковой частотой. Но в случае с исходным дисбалансом классов этой метрики будет мало.

Апгрейд и тюнинг модели

Возьмем для дальнейшей работы lgb.LGBMClassifier. Он достаточно быстр для решения задачи, достаточно удобно «тюнингуется» для повышения метрик качества. Хотя, не исключено, что применение других методик может добиться более высоких результатов при правильной настройке. Но для скорости обработки данных мы выбрали один из самых быстрых методов. Для принятие политических решений, отметим, скорость – это очень важный фактор. И иногда можно пожертвовать точностью и другими характеристиками, чтобы получить максимально полезный результат за минимально необходимое время.

Оптимизировать гиперпараметры lgb.LGBMClassifier  мы будем с помощью модуля Optuna сначала в целях повышения общей точности (accuracy) и других метрик.

Тюнинг модели
# Оптимизационная функция для Optuna
def objective(trial):
    # Подбор гиперпараметров
    param = {
        'objective': 'binary',
        'metric': 'binary_logloss',
        'verbosity': -1,
        'boosting_type': trial.suggest_categorical('boosting_type', ['gbdt', 'dart', 'goss']),
        'num_leaves': trial.suggest_int('num_leaves', 20, 150),
        'max_depth': trial.suggest_int('max_depth', -1, 20),
        'learning_rate': trial.suggest_loguniform('learning_rate', 1e-4, 1),
        'n_estimators': trial.suggest_int('n_estimators', 50, 500),
        'subsample': trial.suggest_float('subsample', 0.5, 1.0),
        'colsample_bytree': trial.suggest_float('colsample_bytree', 0.5, 1.0)
    }

    # Создание и обучение модели
    model = lgb.LGBMClassifier(**param)
    model.fit(X_train, y_train)

    # Предсказания и оценка
    y_pred =  model.predict(X_test)
    y_prob =  model.predict_proba(X_test)[:, 1]  # Получаем вероятности для положительного класса

    recall = recall_score(y_test, y_pred)
    precision = precision_score(y_test, y_pred)
    accuracy = accuracy_score(y_test, y_pred)
    roc_auc = roc_auc_score(y_test, y_prob)
    f1 = f1_score(y_test, y_pred)

    return f1

# Создание исследования Optuna
study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=100)

На подобранных гиперпараметрах (boosting_type='goss', colsample_bytree=0.6236844468401513, learning_rate=0.16015584113549294, max_depth=16, n_estimators=433, num_leaves=36, random_state=42,  subsample=0.84971655916001)  модели lgb.LGBMClassifier   мы получили следующие результаты:

Таблица 1. Метрики оценки LGBMClassifier после оптимизации гиперпараметров под accuracy

precision

recall

f1-score

support

0

0.945860

0.980198

0.962723

1515

1

0.779412

0.554974

0.648318

191

accuracy

 

 

 

0.932591

macro_avg

0.862636

0.767586

0.805520

1706

weighted_avg

0.927225

0.932591

0.927523

1706

Для наглядности оценим наши ошибки – см. матрицу ошибок.  Всего у нас было 1706 тестовых случаев (страны за период времени). Мы верно определили, что в 1485 случаев кризиса не будет и только в 30 ошиблись - и здесь и нашему гипотетическому правителю из «банановой республики» все же пришлось познакомиться с «турбиной самолета». Находясь в самолете или нет – тут уже как повезло.

Важен так же тот факт, что мы верно определили кризис в 106 случаев, а в 85 – «дули на воду», кризиса не произошло. Хотя для условного правителя  из банановой республики это не так важно: ради сохранения власти он так и так перестраховывается, и предпринимает необходимые меры.

Важен тот факт, что «тюнингованная модель» принятия решении дала нам прирост метрики ROC_AUC до 0.93. И если исходить из того, что политическая система – это в первую очередь модель принятия решений, то теоретически возможен ее «апгрейд» за счет подбора и настройки ее гиперпараметров. А значит появляется возможность избавиться от большинства внутренних кризисов и успешно противостоять внешним.

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

С учетом дисбаланса классов было бы правильно использовать при настройке гиперпараметров метрику f1 (среднее гармоническое между Precision и Recall). Поэтому при оптимизации модели LGBMClassifier(boosting_type='goss', colsample_bytree=0.6722209119830994,  learning_rate=0.034639181156243586, max_depth=5, n_estimators=287, num_leaves=124, random_state=42, subsample=0.967460261273091) мы получим несколько другие значения.

Таблица 1. Метрики оценки LGBMClassifier после оптимизации гиперпараметров под f1

precision

recall

f1-score

support

0

0.958388

0.957756

0.958072

1515

1

0.666667

0.670157

0.668407

191

accuracy

0.925557

0.925557

0.925557

0.925557

macro avg

0.812528

0.813956

0.813240

1706

weighted avg

0.925728

0.925557

0.925642

1706

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

Еще раз отметим, что наш условный «банановый правитель» как и внешний инвестор, который бы хотел вложиться в выращивание бананов и финансист, который бы инвестировал в государственные облигации банановой республики и покупал акции совместного бананового предприятия должны руководствоваться не только фактами. Из алгоритма так же можно вытащить вероятности не наступления/наступления прогнозируемого события.

левая колонка данных - предсказание 0-события, правая колонка данных  - предсказание 1-события
левая колонка данных - предсказание 0-события, правая колонка данных - предсказание 1-события

Чем ближе показатель в левом столбце к единице – тем больше вероятность, что кризисное событие не произойдет, чем ближе к единице показатель в правом столбце – тем больше вероятность, что негативное событие произойдет.  Хотя и для «бананового диктатора» и внешнего инвестора даже значение в районе 0,5 и немного ниже в правом столбце должны бы стать поводами для беспокойства. 

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

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

В нашем случае дело чуть проще. С помощью feature_importance мы можем получить веса модели и определить, чем она руководствовалась при принятии решения.

Веса модели (основные)

Feature

Importance

%

Расшифровка

52

energy4

353

1.84%

Потребление энергии в килограммах нефтяного эквивалента на душу населения

71

legis07

336

1.75%

Размер законодательного органа/количество мест, крупнейшая партия (Масштаб: 0,01)

18

delta15

330

1.72%

% годового прироста: количество телефонов на душу населения (масштаб: 0,01)

43

economics6

312

1.63%

Официальный/основной обменный курс, местная валюта/доллар США (Масштаб: 0,01)

8

delta01

310

1.62%

% годового прироста: население (масштаб: 0,01)

26

delta23

291

1.52%

Ежегодный прирост в %: потребление энергии в килограммах на душу населения (масштаб: 0,01)

90

phone4

283

1.48%

Телефоны, исключая сотовую связь на душу населения (масштаб: 0,00001)

110

pop2

281

1.46%

Плотность населения (Масштаб: 0,1)

33

delta33

276

1.44%

% годового прироста: валовой национальный продукт на душу населения (масштаб: 0,01)

15

delta08

274

1.43%

% годового прироста: экспорт на душу населения (масштаб: 0,01)

109

pop1

272

1.42%

Население (масштаб: 1000)

131

trade2

267

1.39%

Импорт на душу населения (Масштаб: 0,01)

54

indprod2

262

1.37%

Производство электроэнергии (кВтч) на душу населения (масштаб 0,1)

32

delta32

255

1.33%

% годового прироста: валовой внутренний продукт на душу населения (масштаб: 0,01)

14

delta07

252

1.31%

% годового прироста: импорт на душу населения (масштаб: 0,01)

5

computer4

251

1.31%

Число интернет-пользователей на душу населения: (0,000001)

119

school02

250

1.30%

Охват начальным образованием на душу населения (масштаб: 0,0001)

86

military2

250

1.30%

Расходы на национальную оборону на душу населения (масштаб: 0,01)

65

legis01

247

1.29%

Количество мест, крупнейшая партия в законодательном органе

41

economics2

246

1.28%

Валовой внутренний продукт на душу населения (факторная стоимость)

25

delta22

244

1.27%

Ежегодный прирост в %: производство энергии в килограммах на душу населения (масштаб: 0,01)

123

school06

241

1.26%

Охват начальным и средним образованием на душу населения (шкала: 0,0001)

133

trade4

236

1.23%

Экспорт на душу населения (Масштаб: 0,01)

129

school12

234

1.22%

Процент грамотных (масштаб: 0,1)

31

delta31

234

1.22%

% годового прироста: врачей на душу населения (масштаб: 0,01)

Выводы

Результат нашего поверхностного экскурса в предиктивную политическую аналитику:

1.     Мы выяснили, что революции и политические кризисы можно прогнозировать. И качество прогнозов гораздо выше пресловутых "50 на 50". Даже на базовых настройках ml-алгоритмов. На самой простой модели.

2.   Небольшое улучшение по метрикам качества дает настройка прогностической модели (настройка гиперпараметров).

3.     Можно определить также вероятность наступления (и не наступления) искомого события.

4.     Можно определить факторы, влияющие на наступление/не наступление искомого события (интерпретировать модель).

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

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

Файл ноутбука находятся в репозитории, исходные базы данных - в процитированном источнике.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Можно ли на самом деле прогнозировать политические события включая «черных лебедей»?
0% Да, причем довольно точно0
0% Да, но с определенными допущениями и ограничениями0
0% Нет, это абсолютно невозможно. Все слишком случайно и запутанно0
0% Нет, просто нет доступа к таким данным0
Никто еще не голосовал. Воздержался 1 пользователь.
Источник: https://habr.com/ru/articles/852276/


Интересные статьи

Интересные статьи

Коллеги, привет! Меня зовут Хайрбек Ажимов, я занимаюсь автоматизацией HR процессов в ПАО «РусГидро». Сегодня я хотел бы разобрать тему цифрового рубля с моего понимания информационных технологий и фи...
Поднимаем сервис с подпиской на птиц IRL за окном, или о разработке DIY-кормушкиЗадача: Дешево - быстро - просто. Кормушка бункерного типа, чтобы засыпал и на неделю. Простота установки, обслуживания,...
Выгрузка пользователей из 1C ЗУП в Битрикс24 или правдивая история о том как настроить интеграцию 1С-Битрикс24 с ЗУП без 1С-ника.В жизни так бывает, причём бывает чаще чем хотелось бы, хоть в целом и ...
Несмотря на то, что “в коробке” с Битриксом уже идут модули как для SOAP (модуль “Веб сервисы” в редакции “Бизнес” и старше), так и для REST (модуль “Rest API” во всех редакциях, начиная с...
Эта статья посвящена одному из способов сделать в 1с-Битрикс форму в всплывающем окне. Достоинства метода: - можно использовать любые формы 1с-Битрикс, которые выводятся компонентом. Например, добавле...