因果深層学習 meta-Learner, TARNet, CFRNet, DragonNet

2026/3/21

 因果推論において、処置の個別の効果を把握するのに、ITE(Indivisual Treatment Effect)あるいは、CATE(Conditional Average Treatment Effect)を計算します。伝統的な機械学習の方法を使って因果の効果を計算する場合は、対象となるデータに適合する機械学習モデル、たとえば、ツリーをもとにした方法やニューラルネットワークを使います。本稿ではNeyman-RubinのPOフレームワークを使って、バイナリの処置効果の推定のために、meta-learne ...

ReadMore

MMT信仰が招く"アリとキリギリス"の結末

2026/3/9

「潜在成長率に合わせて通貨を発行し、増えた分が政府支出となる」これは、MMTと日本でリフレ派と呼ばれる人々の主張を端的に示したものです。  MMTの理論的な背景は、貨幣を国家の創造物と捉えるくらいで、その他は主流派の経済学と大差ありません。彼らは”政府債務の拡大が自国通貨建てであるかぎり、信用リスクや通貨の信任の問題は発生せず”、”財政赤字を全く気にする必要はない”と主張します。 政府支出の制限 ー アリとキリギリス  MMTは単一の理論ではなく、貨幣に関するいくつかの考え方の集まったものです。日本で話題 ...

ReadMore

外為市場介入クレプトピア3:公金の行方

2026/2/18

 現在も日本の担当者がドル円為替レートの推移に関して介入を示唆する発言をすることがあります。  もし、実際には2026年1月23日に外国為替市場へ単独介入が実施されていた場合、どういうことが起きているかを明らかにしておきます。  what if ~ のCounterfactual推論と捉えてください。 外国為替市場ドル売り介入  外国為替市場への介入については、実際の処理はよく知られていません。図1を例に、どのように処理されているか見ていきましょう。 図1 ドル売り介入の場合  外国為替市場介入は、以下の ...

ReadMore

外為市場介入クレプトピア2:繁栄への月並みの経路

2026/2/5

1月23日のドル円為替市場  かつてある公的機関から事実とは異なる内容が、連日発表されていました。現在から、80年以上前のことです。  現在、2026年1月30日の発表によると、先月2025年12月29日から2026年1月28日までの外為市場介入はなかったことになっています。  1月23日の日銀総裁会見後のドル円為替レートの推移には、大きな建て玉の裁定取引の履歴が記録されています。ドル売りの投入資金は反対売買で全額決済されています。  数日前、1月20日に米国で長期金利が上昇しています。まとまった量の米国 ...

ReadMore

外為市場介入クレプトピア:美しい国、日本

2026/1/26

 クレプトピアは クレプトクラシー(Kleptocracy)とユートピア(Utopia)を組み合わせた造語です。Kleptocracyは権力者が国の富を奪うことを指します。  1月23日、日銀総裁の会見後に、ドル円レートが2円程シフトしていました。金融関係者の間でレートチェックがあったと噂になっていたようです。  夕方、公金を流用した資本による企業の社員が陽気に騒いでいたので、おそらく外国為替市場で通貨当局によるドル売り介入が実施されたのでしょう。  通貨当局の新しい担当者が、外為市場を経由して、また私的 ...

ReadMore

書評:BLACK WAVE

2026/1/10

Black Wave - Saudi Arabia , Iran And The Rivalry That Unravelled the Middle East Kim Ghattas BLACK WAVE - Saudi Arabia, Iran And The Rivalry That Unravelled The Middle East  2020年の出版物ですが、未読であり、価格がリーズナブルだったので購入しました。  サウジアラビアとイランのライバル関係を軸にイラン革命以後の中東の国際関係のパズ ...

ReadMore

do-Calculus: ベイジアン・ネットワークによるシナリオ分析

2026/1/25

 do-Calculusの概念を解説します。do-演算子(do-operator)と条件確率式で定義してあり、PearlのDAGを元にした因果推論の中心的な概念です。d-Calculusの三つのルールはd-separatorという概念を適用することで、ある確率分布が別の確率分布と等しいことを示すものです。直感的に把握するのは難しい概念であるかもしれません。DAGをイメージして把握した方が良いでしょう。  DAGで示した確率空間でノードの数が少なくなれば、同時確率分布、条件確率分布において計算が簡素化できま ...

ReadMore

企業が不祥事を招くコンテクストとは 書評:The Dark Pattern

2025/9/28

The Dark Pattern: The Hidden Dynamics of Corporate Scandals Palazzo Ph.D, Guido; Hoffrage Ph.D, Ulrich The Dark Pattern: The Hidden Dynamics of Corporate Scandals.  本書は良い人が悪事を働くことについて記されています。ある環境の下では、彼らは嘘をつき、詐欺に関与します。彼らの振る舞いを理解するために、著者らは彼らの性格の欠点に焦点を当てるだけで ...

ReadMore

投資ポートフォリオのストレス・テストーpgmpyベイジアン・ネットワークによるリスク評価

2025/8/6

地政学的リスク 原油価格とインフレーション  天然資源、特に原油価格を主要因に置いたインフレーションとポートフォリオを構成する各資産のストレス・テストのシナリオの一例を図示しています。ストレス・テストとして該当シナリオ1によるポートフォリオの損益を推定します。 図1 原油価格と地政学的リスクのシナリオ  中東の紛争による地政学的リスクの上昇、原油価格の変動は、必ずしも資産価格の下落に繋がりません。これは、資産価格に影響するまでに複数の経路があることが影響しています。  リスク・シナリオをDAG(Direc ...

ReadMore

書評:Autocracy,Inc.

2025/6/16

Autocracy,Inc. The Dictators Who Want to Run the World. Anne Applebaum Autocracy,Inc. The Dictators Who Want to Run the World.  Autocracy,Inc.とは著者の造語です。本書のテーマをわかりやすく表現しています。  Incは通常、Incorporated として会社組織の法人名に使います。xxx Inc.と略し会社名の終わりにつけます。統合した独裁国家、あるいは一体化した専 ...

ReadMore

システム リスクモデル

YLearnによる因果推論(1) 概要とセットアップ

 因果推論はAIシステムが、イベント間の真の因果関係をよりよく理解する助けになります。中国製のLLMが最近、話題(注1)になっていたので、データサイエンス分野で中国の因果推論に関する取り組みとツールについて評価します。

 因果推論や因果探索のツールとして、Huaweiが提供しているgCastleと、因果探索・因果推論ツール、ylearnを使います。gCastleはPyTorchで実装された因果探索パッケージです。因果関係に関連した代表的なアルゴリズムが実装されて、検証ツールが提供されています。HuaweiのgCastleのは、次回に解説し、本稿では、ylearnについて評価します。

YLearnの特徴

 ylearn1は、因果探索・因果推論のAPIをまとめたパッケージです。因果推論のパイプラインという概念を用いて、因果探索から因果関係のモデル化、因果推論、評価までを一貫して行えるAPIを提供しています。

  • Counterfactual推論のためのAPI
  • DAGの把握
  • DML(Double/Debiased Machine Learning)2を含む推論ツール
  • Policy Interpreter - 最適化のためのソリューション
  • CATE(Conditional ATE)を計算するのにDML(Double Machine Learning)を使います。推論アルゴリズムには、他に一般化ランダムフォレスト、決定木、深層ニューラルネットワークなどが利用できます。

 因果探索によってSCM(構造因果モデル),DAG(有向非周期グラフ)の構造から因果関係を把握し、DAGをモデルに因果推論を進め、機械学習でパラメータを推定し、モデルの評価を実施します。

 探索→モデル→推定→ポリシーのパイプラインを構成するAPI Whyを提供します。

 推論パイプラインのコンポーネントは以下に示します。

YLearnの推論パイプライン

  • 探索:観測データから因果関係を探索します。
  • モデル:CausalGraphの様式で因果関係を説明し、他の関連操作をCausalModelで識別します。
  • 推定:様々な技術で因果を推定します。DMLを含みます。
  • ポリシー:最適なポリシーを選択します。
  • インタープリター:因果の影響とポリシーを説明します。

図1 YLearnの因果推論パイプライン

 パイプラインはトレーニングデータから始めます。因果探索を使って、データから因果の構造を明らかにします。

  1. CausalGraph DAGのネットワーク構造を保持します。
  2. CausalGraphはCausalModelに送られ、因果の影響は識別され、統計的な推定に送られます。
  3. 因果の影響と他の変数の間のモデルの関係をトレーニングデータで訓練します。(トレーニングデータの中の因果の影響)
  4. 因果の影響を予測するために、訓練済みの推定モデルを使います。推定した因果の影響を変換します。

  1. CausalGraph
xx = {'X':['W'], 'W':[], 'Y':['W']}
cg = CausalGraph(causation=xx)

cgは因果関係をコード化します。

2. 因果の識別

 P(Y| do(X=x)) 
 => identify method
 cm = CausalModel(causal_graph=g)
 cm.identify(treatment={'x'}, outcome={'Y'}, identify_method=('backdoor','simple'))

3. 因果の影響の推定

 機械学習と因果推論の交わりに焦点を当てており、機械学習モデル、共通のアプローチに従います。つまり以下のリストに示す形式です。

 与えられたデータセットに、任意の推定モデルを適用します。

  1. Pandasデータフレームにtreatment, outcome.adjustment,covariateのデータセットの様式をセットする
  2. fit()メソッドを使ってモデルを学習する。
  3. estimate()メソッドでテストデータの因果の影響を推定する。

 APIはwhyで提供されます。

from ylearn import why

 why はylearnの全てのAPIの関数をカプセル化しています。以下、使用例です。

from sklearn.datasets import fetch_california_housing
from ylearn import Why
housing = fetch_california_housing(as_frame=True)
data = housing.frame
outcome = housing.target_names[0]
data[outcome] = housing.target

why = Why()
why.fit(data, outcome, treatment=['AveBedrms', 'AveRooms'])

print(why.causal_effect())
               mean       min        max       std
AveBedrms -0.006393 -1.264421  11.482253  0.132226
AveRooms  -0.068143 -1.728602   0.748265  0.054556

 本APIはCounterfactual推論のためのAPIも提供しています。

 APIで提供されるwhatif()はcounterfactual 推論を実行するソリューションを提供します。

概要

 コンセプトや仕様は良くできています。ツールとして更新されておらず、AppleSilicon Mac用に、多くの推論メソッドがコンパイルされていません。ARMでなくx86用のオブジェクトがosxのパッケージに含まれています。そのため、モデルのクラスに含まれる推定メソッドや描画が機能しません。

 Why APIの一部を使ってcounterfactual推論はできますが、現行バージョンでは、Double MLなどが動作しないため、ツールの重要なコンセプトである推論のパイプラインは機能しません。

 LinuxやWindowsバージョンで機能の動作は未確認です。他のバージョンでは全機能が使用することができるかもしれません。ylearnのosx版がARMを対象としたバージョンに更新されるかどうかは不明です。

 Apple Silicon Macに対応したDAGの描画や因果探索ツール、pcalg, igraph, Doubel ML等、他のツール、メタパッケージが提供されているので、Apple Siliconユーザーは他の選択肢があります。

 こちらで動作確認したインストールパッケージのセットアップと動作環境を以下にまとめておきます。

YLearnのセットアップ( Apple Silicon Mac)

 インストールにはいくつかの手続きが必要です。

 pipやconda を使って通常の手続きでインストールするとエラーが発生します。そのため、ここでは以下の手順でローカルファイルからcondaを使ってインストールします。

1. YLearnインストール

パッケージをローカルフォルダにダウンロードし、ローカルフォルダからインストールします。

2. 動作環境の構築

 最新のバージョンでは、実行時にエラーが発生します。numpyやnetworkxのバージョンを落とす必要があります。そのため、最新の(base)環境とは別にpython3.11の仮想環境を作り、その上で旧バージョンのnumpyとnetworkxをインストールします。

YLearnインストール

【1.】パッケージのダウンロード

anaconda.orgのサイトで、ylearnを検索します。

https://anaconda.org

パッケージが表示されたら、該当ライブラリを選択します。

図2 anaconda.orgサイトの検索結果

 以下の画面が表示されます。

図3 YLearnパッケージ

 ここで、4つ並んでいるConda, Files Labels, Badgesのタブメニューのボタンの中で、Filesボタンを選択します。

 ファイルのリストが表示されます。

図4 Ylearn パッケージファイル

 該当するホストのファイルを選択します。Mac用はosxなので以下の名称にファイルを選択します。

osx-64/ylearn-0.2.0-py311h349b758_0.conda

 ファイル名をクリックすると、ブラウザがダウンロードを許可するか聞いてくるので、許可するを選択して下さい。

 ダウンロードが開始されます。

 ダウンロードしたファイルは、.condaという拡張子のファイルで圧縮してあります。これには、インストールに必要な全てのファイルが含まれています。

【2. 】インストール

ダウンロードしたファイルを(base)環境のpkgsディレクトリに移動します。

anacondaでpython環境を構築した場合、/opt/anaconda3/の下か、ユーザが指定したディレクトリの配下にbase環境が設定されています。

ダウンロードしたファイルからpkgsディレクトリの下にダウンロードしたファイルを移動して下さい。

mv /Users/xxx/Downloads/ylearn-0.2.0-py311h349b758_0.conda /opt/anaconda3/pkgs/.

condaを使ってインストールします。

conda install /opt/anaconda3/pkgs/ylearn-0.2.0-py311h349b758_0.conda

 ファイルが以下のディレクトリに展開されます。

/opt/anaconda3/pkgs/ylearn-0.2.0-py311h349b758_0/lib/python3.11/site-packages

 ライブラリが以下のパスにインストールされます。

/opt/anaconda3/lib/python3.11/site-packages

 pythonがインポートして、ソースコードが参照するのは、このディレクトリ内に展開されているylearnディレクトリの下にあるファイルです。

 (base)環境から使えるようにするには、ここにパスを通す必要がありますが、ここではパスの設定を行いません。yleanがnumpyやnetworkxの旧バージョンの仕様のAPIやデータ型を使っているため、ylearn用に仮想環境を構築します。

仮想環境の構築

 パッケージマネージャcondaの機能を使って、python 3.11の環境を作ります。以下のコマンドを実行します。

【python3.11環境の作成と起動】

conda create -n python311 python=3.11
conda activate python311

 作った環境をactivateするとプロンプトが(base)から(python311)に切り替わります。

(python311) xxxxMacBook-Air:site$

仮想環境を解除する場合は、以下のコマンドを使用します。

conda deactivate

これで元の(base)環境に戻ります。

(base) xxxxMacBook-Air:site$

【Jupyter Notebook用にipykernelカーネルのインストール】

 python3.11の仮想環境を起動して、その環境にjupyter用のカーネルをインストールします。Jupyter Notebookの新規ファイルメニューから(python311)のカーネルが選択できるようになります。

pip install ipykernel
(python311) HostnameMacBook-Air:site-packages username$ pip install ipykernel
Collecting ipykernel
  Downloading ipykernel-6.29.5-py3-none-any.whl.metadata (6.3 kB)
Collecting appnope (from ipykernel)
  Downloading appnope-0.1.4-py2.py3-none-any.whl.m ......
......

【仮想環境のカーネルをjupyterに追加】

python -m ipykernel install --user --name=python311

 仮想環境がjupyterに追加されているか確認。

jupyter kernelspec list

 これによりjupyter notebookのメニューからpythonの仮想環境を実行環境として選択できるようになります。

 下の図5は、jupyter notebookの実行環境を選択するポップアップメニューです。jupyter notebookの右上にあるpython311表示されている部分をマウスでクリックしたときに表示されます。

図5 jupyter notebook 実行環境選択メニュー

【ylearnディレクトリのパス】

python311環境ができたので、この環境でylearnが使えるように、作成した仮想環境の下にインストールしたylearnのディレクトリをコピーします。

pythonが実行時に参照しているパスを確認します。コマンドプロンプトからpythonを起動します。

(python311)$python

以下のスクリプトを実行します。

import sys
print(sys.path)
>>> import sys
>>> print(sys.path)
['', '/opt/anaconda3/envs/python311/lib/python311.zip', '/opt/anaconda3/envs/python311/lib/python3.11', '/opt/anaconda3/envs/python311/lib/python3.11/lib-dynload', '/opt/anaconda3/envs/python311/lib/python3.11/site-packages']
>>> 

実行時に参照するパスが表示されます。ylearnを動かすには、ここにylearnのパスを追加するか、ylearnのディレクトリを参照先に移動します。

(base)環境でylearnを動かすことはないので、python3.11/site-packages/の下に移動させます。以下のコマンドでは、ディレクトリをsite-packagesの下にコピーしています。

作成した仮想環境の下に、ylearnライブラリ(二つのディレクトylearn、およびylearn-0.2.0.dist-info)をコピーします。

cd /opt/anaconda3/envs/python311/lib/python3.11/site-packages
cp -R /opt/anaconda3/lib/python3.11/site-packages/ylearn .
cp -R /opt/anaconda3/lib/python3.11/site-packages/ylearn-0.2.0.dist-info  .

【networkxとnumpyのインストール】

ylearnが内部で使用しているライブラリをインストールします。networkxとnumpyは旧バージョンを指定してインストールする必要があります。以下のバージョンを指定します。

  • networkx バージョン2.5
  • numpy バージョン 1.23.5
conda install -c conda-forge networkx==2.5
conda install -c conda-forge numpy==1.23.5

【その他の必要なライブラリのインストール】

その他、ylearnの動作に必要なライブラリをインストールします。condaを使ってインストールして下さい。

  • matplotlib
  • igraph
  • pandas
  • scikit-learn
  • scipy
  • pydot
  • tqdm
conda install -c conda-forge scikit-learn
conda install -c conda-forge scipy
conda install -c conda-forge matplotlib
conda install -c conda-forge igraph
conda install -c conda-forge pandas
conda install -c conda-forge pydot
conda install -c conda-forge tqdm

python3.11でYLearnを実行する環境が整いました。

次に、Ylearnを用いて分析したケーススタディを見ていきます。

参考

参考資料

  1. J. Pearl. Causality: models, reasoing, and inference.
  2. M. Funk, et al. Doubly Robust Estimation of Causal Effects.
  3. V. Chernozhukov, et al. Double Machine Learning for Treatment and Causal Parameters. 
  4. V. Chernozhukov, et al. Double/debiased machine learning for treatment and structural parameters.
  5.  W. Newey and J. Powell. Instrumental Variable Estimation of Nonparametric Models.

注1

 たまたま、中国製のAIアシスタントDeepSeekのリリースが、某企業の株価急落と重なったために、多くの市場関係者や、アナリストらが二つのイベントを結びつけて解説していましたが、関連性はありません。大規模言語モデル(LLM)はアテンション・モデルによるトランスフォーマ・アーキテクチャを基にしており、革新的なアーキテクチャが新規に登場したのでも、該当企業の株主がAIアシスタントのリリースを理由に売却したのでもありません。生成AIが計算リソースを消費するのは変わりません。

 中国のWebサイトのコンテンツの数は、日本や米国のWebサイトのコンテンツ数と比較して、その人口の割に大きな差があります。その理由やGoogleの検索とBaiduの検索の大きな相違点がわかっていれば、二つのイベントを結びつけることはないでしょう。新型コロナが流行していた時も、以前存在していたコンテンツが次々に消えていく現象がありました。

 LLMのAIアシスタントに関しては、思想的に隔たりのあるAIモデルが世に出ることはあります。西洋、東洋、政治哲学に関わらず、バランスの良い知識体系を身につけた上で、隔たりがあり得ることを承知した上で使った方が良いでしょう。当然、LLMでも学習内容によって依拠している社会の思想的な傾向を持ちます。

 1世紀前の全体主義的な思想統制を振り返ると、教育者が実施するか、システムが実施するかの違いはありますが、電子的なツールを使う方が便利で効率が良さそうなことは推測できます。対象がどのような分野であれ、物事の判断や価値基準について、盲目的に信用する前に、土台となる教養とバランスの取れた知識体系は必要です。

 某企業の株価の急変も、中国製のAIアシスタントとは関係ありません。また、ここでも取り上げているHuaweiのgCastleはPyTorchで実装されています。HWのインターフェイスはPyTorchが抽象化しているのでPyTorchのAPIを使って容易にアルゴリズムを実装することができます。コアのテクノロジーがどこにあるかを知っておくのは有用です。

  1. ylearnのネーミングは"learn why" のシャレだそうです。 ↩︎
  2. DMLについては、参考資料2,3,4を参照して下さい。また、"DoubleML"という同じ名称のPythonとRで利用できる因果推論ツールがあります。こちらは、scikit-learnとmlr3の上に構築されたメタパッケージになっています。 ↩︎

-システム, リスクモデル
-, ,