Для получения дополнительного примера записных книг см. Здесь!
Принятие решений включает в себя понимание того, как разные переменные влияют друг на друга, и прогнозирование результата, когда некоторые из них изменяются на новые значения. Например, учитывая переменную результата, может быть заинтересован в определении того, как потенциальные действия могут влиять на нее, понимание того, что привело к его текущему значению, или моделировать то, что произойдет, если некоторые переменные будут изменены. Ответ на такие вопросы требует причинно -следственных связей. Dowhy - это библиотека Python, которая проводит вас через различные этапы причинно -следственных связей и предоставляет единый интерфейс для ответа на причинные вопросы.
Dowhy обеспечивает широкий спектр алгоритмов для оценки эффекта, прогнозирования, количественной оценки причинно -следственных связей, диагностики причинно -следственных связей, анализ корновных причин, вмешательства и контрфактуальные. Ключевой особенностью Dowhy является его API опровержения и фальсификации, которая может проверить причинные предположения для любого метода оценки, что делает вывод более надежным и доступным для неэкспертов.
Графические причинные модели и потенциальные результаты: лучшие из обоих миров
Dowhy опирается на две самые мощные рамки для причинно -следственного вывода: графические причинные модели и потенциальные результаты. Для оценки эффекта он использует критерии, основанные на графиках, и Do-Calculus для моделирования допущений и определения непараметрического причинно-следственного эффекта. Для оценки он переключается на методы, основанные в основном на потенциальных результатах.
Для причинно-следственных вопросов, не говорящих о оценке эффекта, он использует силу графических причинно-следственных связей, моделируя процесс генерации данных посредством явных причинно-следственных механизмов в каждом узле, которые, например, открывают возможности для приписывания наблюдаемых эффектов с конкретными переменными или оценки точечных контрфактов.
Для быстрого введения в причинно-следственный вывод, ознакомьтесь с Amit-Sharma/Casal-Inference-Tutorial, мы также дали более комплексное руководство на конференции по обнаружению и добыче данных ACM и добыче данных (KDD 2018): Coussalinerence.gitlab.io/kdd-tutorial. Для введения в четыре этапа причинно -следственного вывода и его последствия для машинного обучения вы можете получить доступ к этому видеоурок с вебинаром Microsoft Research Dowhy и для введения в API графической причинно -следственной связи, см. Презентацию Pycon об анализе основной причины с Dowhy.
Dowhy поддерживает следующие причинно -следственные задачи:
Для получения более подробной информации и того, как использовать эти методы на практике, проверьте документацию по адресу https://py-why.github.io/dowhy
Dowhy поддержка Python 3.8+. Для установки вы можете использовать PIP, поэзию или Conda.
Последний релиз
Установите последний выпуск с помощью PIP.
pip install dowhy
Установите последний выпуск, используя поэзию.
poetry add dowhy
Установите последний релиз с помощью Conda.
conda install -c conda-forge dowhy
Если вы столкнетесь с проблемами «решающей среды» с Conda, попробуйте conda update --all
, а затем установите Dowhy. Если это не работает, то используйте conda config --set channel_priority false
и попробуйте снова установить. Если проблема настойчиво, пожалуйста, добавьте свою проблему здесь.
Версия разработки
Если вы предпочитаете использовать последнюю версию DEV, ваш инструмент управления зависимостями должен будет указывать на наш репозиторий GitHub.
pip install git+https://github.com/py-why/dowhy@main
Требования
Доухи требует нескольких зависимостей. Подробности о конкретных версиях можно найти в pyproject.toml, в разделе Tool.poetry.pectendenties.
Если вы столкнетесь с какими -либо проблемами, попробуйте установить зависимости вручную.
pip install ' <dependency-name>==<version> '
При желании, если вы хотите ввести графики в формате DOT, установите Pydot (или Pygraphviz).
Для лучших графиков вы можете при желании установить Pygraphviz. Чтобы продолжить, сначала установите Graphviz, а затем Pygraphviz (на Ubuntu и Ubuntu WSL).
Примечание
Установка Pygraphviz может вызвать проблемы на некоторых платформах. Один из способов, который работает для большинства распределений Linux, - это сначала установить Graphviz, а затем Pygraphviz, как показано ниже. В противном случае, пожалуйста, проконсультируйтесь с документацией Pygraphviz.
sudo apt install graphviz libgraphviz-dev graphviz-dev pkg-config
pip install --global-option=build_ext
--global-option= " -I/usr/local/include/graphviz/ "
--global-option= " -L/usr/local/lib/graphviz " pygraphviz
Большинство причинных задач в Dowhy требуют только нескольких строк кода для написания. Здесь мы примечательно оцениваем причинно -следственное влияние лечения на переменную результата:
from dowhy import CausalModel
import dowhy . datasets
# Load some sample data
data = dowhy . datasets . linear_dataset (
beta = 10 ,
num_common_causes = 5 ,
num_instruments = 2 ,
num_samples = 10000 ,
treatment_is_binary = True )
Причинный график может быть определен по -разному, но наиболее распространенным способом является через NetworkX. После загрузки в данных мы используем четыре основных операция для оценки эффекта в Dowhy: модели , выявлять , оценить и опровергать :
# I. Create a causal model from the data and given graph.
model = CausalModel (
data = data [ "df" ],
treatment = data [ "treatment_name" ],
outcome = data [ "outcome_name" ],
graph = data [ "gml_graph" ]) # Or alternatively, as nx.DiGraph
# II. Identify causal effect and return target estimands
identified_estimand = model . identify_effect ()
# III. Estimate the target estimand using a statistical method.
estimate = model . estimate_effect ( identified_estimand ,
method_name = "backdoor.propensity_score_matching" )
# IV. Refute the obtained estimate using multiple robustness checks.
refute_results = model . refute_estimate ( identified_estimand , estimate ,
method_name = "random_common_cause" )
Dowhy подчеркивает интерпретируемость своего выхода. В любой точке анализа вы можете осмотреть непроверенные предположения, определили оценки (если таковые имеются) и оценку (если есть). Вот пример вывода оценки линейной регрессии:
Для получения полного примера кода, ознакомьтесь с началом работы с ноутбуком Dowhy.
Вы также можете использовать условные методы оценки среднего эффекта лечения (CATE) из ECONML, как показано в записной книжке с эффектами условного лечения. Вот фрагмент кода.
from sklearn . preprocessing import PolynomialFeatures
from sklearn . linear_model import LassoCV
from sklearn . ensemble import GradientBoostingRegressor
dml_estimate = model . estimate_effect ( identified_estimand , method_name = "backdoor.econml.dml.DML" ,
control_value = 0 ,
treatment_value = 1 ,
target_units = lambda df : df [ "X0" ] > 1 ,
confidence_intervals = False ,
method_params = {
"init_params" :{ 'model_y' : GradientBoostingRegressor (),
'model_t' : GradientBoostingRegressor (),
'model_final' : LassoCV (),
'featurizer' : PolynomialFeatures ( degree = 1 , include_bias = True )},
"fit_params" :{}})
Графическая структура причинно -следственной связи Dowhy предлагает мощные инструменты для решения причинно -следственных связей за пределами оценки эффекта. Он основан на графической структуре причинно -следственной связи Pearl и моделирует процесс создания причинно -следственных данных каждой переменной явно с помощью причинно -следственных механизмов для поддержки широкого диапазона причинно -следственных алгоритмов. Для получения более подробной информации см. Книжные элементы причинно -следственного вывода.
Сложные причинно -следственные связи, такие как приписывание наблюдаемых аномалий узлам в системе, могут быть выполнены лишь несколькими строками кода:
import networkx as nx , numpy as np , pandas as pd
from dowhy import gcm
# Let's generate some "normal" data we assume we're given from our problem domain:
X = np . random . normal ( loc = 0 , scale = 1 , size = 1000 )
Y = 2 * X + np . random . normal ( loc = 0 , scale = 1 , size = 1000 )
Z = 3 * Y + np . random . normal ( loc = 0 , scale = 1 , size = 1000 )
data = pd . DataFrame ( dict ( X = X , Y = Y , Z = Z ))
# 1. Modeling cause-effect relationships as a structural causal model
# (causal graph + functional causal models):
causal_model = gcm . StructuralCausalModel ( nx . DiGraph ([( 'X' , 'Y' ), ( 'Y' , 'Z' )])) # X -> Y -> Z
gcm . auto . assign_causal_mechanisms ( causal_model , data )
# 2. Fitting the SCM to the data:
gcm . fit ( causal_model , data )
# Optional: Evaluate causal model
print ( gcm . evaluate_causal_model ( causal_model , data ))
# Step 3: Perform a causal analysis.
# results = gcm.<causal_query>(causal_model, ...)
# For instance, root cause analysis:
anomalous_sample = pd . DataFrame ( dict ( X = [ 0.1 ], Y = [ 6.2 ], Z = [ 19 ])) # Here, Y is the root cause.
# "Which node is the root cause of the anomaly in Z?":
anomaly_attribution = gcm . attribute_anomalies ( causal_model , "Z" , anomalous_sample )
# Or sampling from an interventional distribution. Here, under the intervention do(Y := 2).
samples = gcm . interventional_samples ( causal_model , interventions = { 'Y' : lambda y : 2 }, num_samples_to_draw = 100 )
Framework GCM предлагает гораздо больше функций за пределами этих примеров. Для получения полного примера кода, ознакомьтесь с примером онлайн -магазина.
Для получения дополнительной функции, примеры приложений Dowhy и подробности о выходах, см. Руководство пользователя или записные записные книжки по проверке Jupyter.
Microsoft Research Blog | Видео учебник для оценки эффекта | Видеоучебное пособие для анализа основной причины | Arxiv Paper | Arxiv Paper (графическая причина модели) | Слайды
Если вы найдете Dowhy полезным для вашей работы, пожалуйста, укажите оба следующих двух ссылок:
Bibtex:
@Article {Dowhy, title = {dowhy: сквозная библиотека для причинного вывода}, Автор = {Шарма, Амит и Кисиман, Эмре}, Journal = {arxiv preprint arxiv: 2011.04216}, Год = {2020} } @Article {JMLR: V25: 22-1258, Автор = {Патрик Б.Л. title = {dowhy-gcm: расширение Dowhy для причинно-следственного вывода в графических причинных моделях}, Journal = {журнал исследований машинного обучения}, Год = {2024}, том = {25}, number = {147}, pages = {1--7}, url = {http://jmlr.org/papers/v25/22-1258.html} }
Если вы столкнетесь с проблемой или у вас есть конкретный запрос на Dowhy, пожалуйста, поднимите проблему.
Этот проект приветствует вклады и предложения. Для получения руководства по внесению вклад и списка всех участников ознакомьтесь с Anforming.md и нашими документами, чтобы получить код. Наш кодекс поведения в автоне доступен здесь.