5 полезных библиотек на Python для анализа причинно-следственных связей
Сеть причинно-следственных связей – это графическое представление причинно-следственных связей между переменными в системе. Это тип направленного ациклического графа (DAG), который представляет причинную структуру системы. Узлы в сети причинно-следственных связей представляют переменные в системе, а рёбра между узлами представляют причинно-следственные связи между переменными. Направление рёбер указывает направление причинного влияния: если переменная A является причиной переменной B, в сети причинности будет направленное ребро от A к B. Сети причинно-следственных связей используются в различных областях, включая экономику, биологию, нейробиологию и машинное обучение, для представления и анализа сложных систем.
Это открывает множество дискуссий, особенно в области нейровизуализации, где люди заинтересованы в том, чтобы знать, какая активность мозга в определенных областях вызывает активность в другой. Часто в такого рода анализе трудно отделить корреляцию от причинно-следственной связи, поскольку то, что мы называем причинностью, также может быть “временной корреляцией”. Не утверждая, что мы нашли окончательное решение этой сложной проблемы, я перечисляю здесь некоторые относительно новые библиотеки в Python. Первые особенно подходит для неврологии. Другие больше связаны с распространением убеждений и байесовскими сетями.
1. Statsmodels
В нейробиологии в основном использовались 2 модели: причинно-следственная связь Грейнджера и динамическое причинно-следственное моделирование (DCM).
Причинность по Грэнджеру(названная так в честь её изобретателя) основана на идее, что если один временной ряд (называемый “предиктором”) обладает некоторой прогностической способностью для другого временного ряда (называемого “предикатом”), то прошлые значения предиктора должны содержать информацию, которая может помочь спрогнозировать будущие значения предиката. Чтобы проверить наличие причинно-следственной связи по Грейнджеру, исследователи обычно используют статистические методы, такие как регрессионный анализ или векторная авторегрессия (VAR), для оценки силы взаимосвязи между двумя временными рядами. Если обнаруживается, что ряд предикторов значительно улучшает прогноз ряда предикатов, говорят, что он имеет причинно-следственную связь Грейнджера.
Если вас устраивает попарная причинность, даже в больших сетях, есть функция, которая находит коэффициенты регрессора и выполняет F-статистику. Это можно сделать, как в последней строке приведенного ниже кода, где проверяется причинно-следственная связь в соответствии с некоторыми временными задержками. Многомерный анализ немного сложнее, поскольку необходимо вычислить отдельные шаги. В нейровизуализации “realgdp
” и “realcons
” будут представлять собой временные ряды мозговых сигналов в 2 определенных областях мозга.
import statsmodels.api as sm
from statsmodels.tsa.stattools import grangercausalitytests
import numpy as np
data = sm.datasets.macrodata.load_pandas()
data = data.data[["realgdp", "realcons"]].pct_change().dropna()
maxlags = 4
gc_res = grangercausalitytests(data, maxlags)
Напротив, для DCM ситуация на момент написания этой статьи не столь радужна. DCM основан на идее, что функция мозга может быть понята как результат динамических взаимодействий между различными областями мозга и что эти взаимодействия могут быть смоделированы с помощью дифференциальных уравнений. Подгоняя модель DCM к наблюдаемым данным, исследователи могут оценить силу и направление причинно-следственных связей между различными областями мозга и проверить гипотезы о том, как эти связи меняются с течением времени. Излишне говорить, что это сложная модель, построенная с учетом физиологических законов, связанных с гемодинамикой. Это делалось путём расширения набора инструментов Matlab SPM. Мне удалось найти надёжные библиотеки Python. На момент написания этой статьи существуют PyDCM и CDN-FMRT. Обе библиотеки доступны на GitHub, но недостаточно хорошо документированы, не доработаны и не так часто тестируются. Таким образом, у нас все еще есть возможности для улучшения.
Байесовские сети причинно-следственного вывода – это тип сети причинно-следственного вывода, которая использует байесовские методы для представления и анализа взаимосвязей между переменными. Байесовские методы – это набор методов статистического вывода, основанный на байесовской интерпретации вероятности. В байесовской сети причинно-следственного вывода узлы представляют переменные, а рёбра представляют отношения между этими переменными, как в обычной сети причинно-следственного вывода. Однако в байесовской сети причинно-следственных связей вероятности переменных и их взаимосвязей представлены с использованием байесовских распределений вероятностей. Эти распределения вероятностей могут обновляться по мере поступления новых данных, что позволяет сети со временем адаптировать и улучшать свои прогнозы. Байесовские сети причинно-следственного вывода могут использоваться для представления и анализа сложных систем, в которых существует множество взаимозависимых переменных, и могут быть особенно полезны в ситуациях, когда данные ограничены или неопределенны. Эти библиотеки не были введены специально для нейробиологии, но, тем не менее, их можно использовать. Они могли бы быть использованы в контексте неврологии, снова рассматривая одну область мозга как узел.
2. CausalML
Библиотека CausalML разработана Uber и представляет стандартный интерфейс, который позволяет пользователям оценивать Conditional Average Treatment Effect (CATE) или Individual Treatment Effect (ITE) на основе экспериментов или наблюдений.
Изначально, она был разработана для улучшения клиентского опыта и понимания динамики рекламы или других стратегий.
3. DoWhy
DoWhy – это библиотека Python для причинно-следственного вывода, разработанная исследователями Microsoft Research. Она разработана как гибкий и удобный в использовании инструмент для выявления и оценки причинно-следственных связей на основе данных наблюдений и экспериментов. DoWhy предоставляет набор методов для причинно-следственного вывода, включая методы определения причинно-следственной структуры системы, оценки эффекта вмешательств и оценки надёжности причинно-следственных оценок. Библиотека построена поверх популярных научных вычислительных библиотек, таких как NumPy, pandas и scikit-learn, и предназначена для лёгкой интеграции в существующие конвейеры анализа данных.
Причинно-следственный анализ – это процесс выявления причинно-следственных связей между переменными в наборе данных. Это область исследований в статистике и машинном обучении, которая стремится понять, как изменения в одной переменной могут привести к изменениям в другой переменной и как переменные могут влиять друг на друга.
4. GCASTLE
Gcastle – это полный набор инструментов Python для изучения причинно-следственных связей, разработанный компанией Huawei. Он использует основанный на графиках подход для выявления причинно-следственных связей между переменными в наборе данных. Таким образом, Gcasctle оценивает изученный график и обеспечивает лёгкую визуализацию. Он также использует преимущества последних подходов к обучению с подкреплением и оптимизацией графического процессора.
5. CausalPy
CausalPy – это библиотека Python для причинного вывода и обнаружения. Она предназначена для предоставления всеобъемлющего набора инструментов для оценки причинно-следственных связей и выявления причинно-следственных связей в наблюдательных и экспериментальных данных. Библиотека разработана консалтинговой компанией PyMC, и на момент написания этой статьи всё еще находится в стадии бета-тестирования.
CausalPy включает в себя ряд алгоритмов для оценки причинно-следственных эффектов, включая методы, основанные на сопоставлении, взвешивании и регрессии. Она также включает в себя инструменты для выполнения анализа чувствительности и для визуализации и интерпретации результатов причинно-следственного анализа.
Заключение
Трудно предсказать точное будущее причинно-следственных связей в машинном обучении, но вполне вероятно, что это по-прежнему будет важной и растущей областью исследований. С увеличением доступности больших и сложных наборов данных растёт потребность в методах, позволяющих понять лежащие в их основе взаимосвязи и механизмы, управляющие данными. Методы обнаружения причинно-следственных связей потенциально могут сыграть ключевую роль в удовлетворении этой потребности, позволяя исследователям выявлять и понимать причинно-следственные связи между переменными в наборе данных.