더 많은 예제 노트북은 여기를 참조하십시오!
의사 결정에는 다양한 변수가 서로 영향을 미치는 변수를 이해하고 일부 변수가 새로운 값으로 변경 될 때 결과를 예측하는 것이 포함됩니다. 예를 들어, 결과 변수가 주어지면 잠재적 조치가 어떻게 영향을 미칠 수 있는지 결정하거나 현재 값으로 이어진 원인을 이해하거나 일부 변수가 변경되면 발생하는 일을 시뮬레이션하는 데 관심이있을 수 있습니다. 그러한 질문에 대답하려면 인과 관계가 필요합니다. Dowhy는 다양한 인과 적 추론 단계를 안내하는 파이썬 라이브러리이며 인과 관계에 대한 답변을위한 통일 된 인터페이스를 제공합니다.
Dowhy는 효과 추정, 예측, 인과 적 영향의 정량화, 인과 구조 진단, 근본 원인 분석, 중재 및 반 사실을위한 다양한 알고리즘을 제공합니다. Dowhy의 주요 특징은 모든 추정 방법에 대한 인과 적 가정을 테스트 할 수있는 반박 및 위조 API입니다.
그래픽 인과 모델 및 잠재적 결과 : 두 세계의 최고
Dowhy는 인과 관계를위한 가장 강력한 두 가지 프레임 워크, 즉 그래픽 인과 모델 및 잠재적 결과를 기반으로합니다. 효과 추정의 경우, 가정을 모델링하고 비모수 적 인과 효과를 식별하기 위해 그래프 기반 기준 및 Do-Calculus를 사용합니다. 추정을 위해, 그것은 주로 잠재적 결과를 기반으로하는 방법으로 전환됩니다.
효과 추정을 넘어서는 인과 관계의 경우, 각 노드의 명시 적 인과 메커니즘을 통해 데이터 생성 프로세스를 모델링하여 그래픽 인과 모델의 힘을 사용합니다. 예를 들어, 예를 들어, 기능을 특정 변수에 귀속 시키거나 포인트 와이즈의 반대적 인 것으로 추정되는 기능을 잠금 해제합니다.
인과 추론에 대한 빠른 소개를 보려면 Amit-Sharma/CaitaNferal Terence-Tutorial을 확인하십시오. ACM Knowledge Discovery and Data Mining (KDD 2018) 회의에서보다 포괄적 인 자습서를 제공했습니다. 인과 추론의 4 단계와 기계 학습에 미치는 영향에 대한 소개를 보려면 Microsoft Research Dowhy Webinar 의이 비디오 자습서에 액세스 할 수 있으며 그래픽 인과 모델 API에 대한 소개는 Dowhy의 근본 원인 분석에 대한 Pycon 프레젠테이션을 참조하십시오.
Dowhy는 다음과 같은 인과 관계를 뒷받침합니다.
자세한 내용과 이러한 방법을 실제로 사용하는 방법은 https://py-why.github.io/dowhy에서 문서를 확인하십시오.
Dowhy 지원 Python 3.8+. 설치하려면 Pip, Poetry 또는 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
요구 사항
Dowhy에는 몇 가지 종속성이 필요합니다. 특정 버전에 대한 자세한 내용은 pyproject.toml, tool.poetry.dependencies 섹션에서 찾을 수 있습니다.
문제가 발생하면 종속성을 수동으로 설치하십시오.
pip install ' <dependency-name>==<version> '
선택적으로, 도트 형식으로 그래프를 입력하려면 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 : 모델 , 식별 , 추정 및 반박 의 효과 추정을 위해 4 가지 주요 작업을 사용합니다.
# 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 Notebook의 시작을 확인하십시오.
조건부 치료 효과 노트에 표시된 것처럼 EconML의 조건부 평균 치료 효과 (CATE) 추정 방법을 사용할 수도 있습니다. 코드 스 니펫이 있습니다.
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 )
GCM 프레임 워크는이 예제를 넘어서 더 많은 기능을 제공합니다. 전체 코드 예제는 온라인 상점 예제 노트북을 확인하십시오.
더 많은 기능을 보려면 Dowhy의 예제 및 출력에 대한 세부 사항을 보려면 사용자 안내서 또는 Checkout Jupyter Notebook을 참조하십시오.
Microsoft Research Blog | 효과 추정을위한 비디오 자습서 | 근본 원인 분석을위한 비디오 자습서 | Arxiv 종이 | ARXIV 용지 (그래픽 인과 모델 확장) | 슬라이드
작업에 Dowhy가 유용하다고 생각되면 다음 두 가지 참조를 모두 인용하십시오.
Bibtex :
@article {dowhy, title = {dowhy : 인과 추론을위한 엔드 투 엔드 라이브러리}, 저자 = {Sharma, Amit 및 Kiciman, Emre}, 저널 = {arxiv preprint arxiv : 2011.04216}, 연도 = {2020} } @article {jmlr : v25 : 22-1258, 저자 = {Patrick BL {{ "O}} Baum 및 Peter G {{"O}} Tz 및 Kailash Budhathoki 및 Atalanti A. Mastakouri 및 Dominik Janzing}, title = {dowhy-gcm : 그래픽 인과 모델에서 인과 적 추론을위한 Dowhy의 확장}, 저널 = {기계 학습 연구 저널}, 연도 = {2024}, 볼륨 = {25}, 번호 = {147}, 페이지 = {1-7}, url = {http://jmlr.org/papers/v25/22-1258.html} }
문제가 발생하거나 Dowhy에 대한 특정 요청이 있으면 문제를 제기하십시오.
이 프로젝트는 기여와 제안을 환영합니다. 기고에 대한 안내서 및 모든 기고자 목록은 Contration.MD 및 Docs에 기여한 코드를 확인하십시오. 기고자 행동 강령은 여기에서 제공됩니다.