ノートブックの詳細については、こちらをご覧ください!
意思決定には、異なる変数が互いにどのように影響するかを理解し、それらのいくつかが新しい値に変更されたときに結果を予測することが含まれます。たとえば、結果変数を考えると、潜在的なアクションがどのように影響するかを判断し、現在の値につながったものを理解するか、いくつかの変数が変更された場合に何が起こるかをシミュレートすることに関心があるかもしれません。そのような質問に答えるには、因果的な推論が必要です。 Dowhyは、因果的推論のさまざまなステップを導くPythonライブラリであり、因果的な質問に答えるための統一されたインターフェイスを提供します。
Dowhyは、効果の推定、予測、因果的影響の定量化、因果構造の診断、根本原因分析、介入、および反事実のために、さまざまなアルゴリズムを提供します。 Dowhyの重要な特徴は、あらゆる推定方法の因果的仮定をテストできる反論と偽造APIであり、したがって、非専門家がより堅牢でアクセスしやすくすることです。
グラフィカルな因果モデルと潜在的な結果:両方の世界のベスト
Dowhyは、因果推論のための2つの最も強力なフレームワークに基づいています:グラフィカルな因果モデルと潜在的な結果。効果の推定には、仮定をモデル化し、ノンパラメトリックの因果効果を識別するために、グラフベースの基準とdo-calculusを使用します。推定のために、主に潜在的な結果に基づいた方法に切り替えます。
効果の推定を超えた因果的な質問については、各ノードでの明示的な因果メカニズムを介してデータ生成プロセスをモデル化することにより、グラフィカルな因果モデルの力を使用します。たとえば、観察された効果を特定の変数に起因する機能を解き放ち、またはポイントごとの反事実を推定します。
因果推論の迅速な紹介については、AMIT-SHARMA/因果関係のチュートリアルをご覧ください。ACMナレッジディスカバリーおよびデータマイニング(KDD 2018)会議でより包括的なチュートリアルを提供しました。因果推論の4つのステップと機械学習への影響の紹介については、Microsoft Research Dowhy Webinarからこのビデオチュートリアルにアクセスし、グラフィカル因果モデルAPIの紹介については、Dowhyを使用した根本原因分析に関するPyconプレゼンテーションを参照してください。
Dowhyは次の因果タスクをサポートしています。
詳細と実際にこれらの方法の使用方法については、https://py-why.github.io/dowhyでドキュメントをチェックアウトしてください
DowhyはPython 3.8+をサポートします。インストールするには、PIP、詩、またはコンドマを使用できます。
最新リリース
PIPを使用して最新リリースをインストールします。
pip install dowhy
詩を使用して最新リリースをインストールします。
poetry add dowhy
Condaを使用して最新リリースをインストールします。
conda install -c conda-forge dowhy
Condaで「環境の解決」の問題に直面している場合は、 conda update --all
試してみてください。すべてをインストールしてください。それが機能しない場合は、 conda config --set channel_priority false
を使用して、再度インストールしてみてください。問題が続く場合は、ここに問題を追加してください。
開発バージョン
最新の開発バージョンを使用する場合は、依存関係管理ツールがGitHubリポジトリを指す必要があります。
pip install git+https://github.com/py-why/dowhy@main
要件
Dowhyにはいくつかの依存関係が必要です。特定のバージョンの詳細は、tool.poetry.dependenciesセクションの下のpyproject.tomlにあります。
問題に直面した場合は、依存関係を手動でインストールしてみてください。
pip install ' <dependency-name>==<version> '
オプションで、ドット形式でグラフを入力する場合は、pydot(またはpygraphviz)をインストールします。
見栄えの良いグラフの場合、オプションでpygraphvizをインストールできます。続行するには、最初にgraphviz、次にpygraphviz(ubuntuおよびubuntu wsl)をインストールします。
注記
Pygraphvizをインストールすると、一部のプラットフォームに問題が発生する可能性があります。ほとんどのLinuxディストリビューションで機能する1つの方法は、以下に示すように、最初に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のグラフィカル因果モデルフレームワークは、効果の推定を超えて因果的な問題に対処するための強力なツールを提供します。これは、パールのグラフィカルな因果モデルフレームワークに基づいており、因果メカニズムを介して各変数の因果データ生成プロセスをモデル化して、広範囲の因果アルゴリズムをサポートします。詳細については、因果推論の本要素を参照してください。
観察された異常をシステム内のノードに帰属させるなどの複雑な因果質問は、わずか数行のコードで実行できます。
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のアプリケーションの例、および出力に関する詳細については、ユーザーガイドまたはチェックアウトJupyterノートブックを参照してください。
Microsoft Research Blog |効果の推定のためのビデオチュートリアル|根本原因分析のためのビデオチュートリアル| Arxiv Paper | Arxiv Paper(グラフィカル因果モデル拡張)|スライド
Dowhyが仕事に役立つと思う場合は、次の2つの参照の両方を引用してください。
bibtex:
@article {dowhy、 title = {dowhy:因果推論のためのエンドツーエンドライブラリ}、 著者= {Sharma、Amit and Kiciman、emre}、 journal = {arxiv preprint arxiv:2011.04216}、 年= {2020} } @article {jmlr:v25:22-1258、 著者= {patrick bl {{ "o}} baum and peter g {{" o}} tzとKailash BudhathokiとAtalanti A. MastakouriとDominik Janzing}、 title = {dowhy-gcm:グラフィック因果モデルの因果推論のためのdowhyの拡張}、 Journal = {Journal of Machine Learning Research}、 年= {2024}、 volume = {25}、 番号= {147}、 ページ= {1--7}、 url = {http://jmlr.org/papers/v25/22-1258.html} }
問題が発生したり、Dowhyの特定のリクエストがある場合は、問題を提起してください。
このプロジェクトは、貢献と提案を歓迎します。寄付のガイドとすべての貢献者のリストについては、Contributing.MDと貢献コードのためのドキュメントをチェックしてください。私たちの貢献者行動規範はこちらから入手できます。