因果深層学習 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

システム リスクモデル

CastleBoardの使い方 gCastle因果探索アルゴリズムの検証(2)

中国のAI技術動向の調査を兼ねて、gCastleに実装された因果探索アルゴリズムを検証しました。gCastleはGUIツールCastleBoardを含んでいますが、パッケージにツールのマニュアル類は添付されていません。そのため、本稿では実際にアルゴリズムを検証するためのCastleBoardの使い方について解説します。

CastleBoardの操作

 GUIツールはいくつかの設定項目への入力でテストデータを生成できるため、テストプログラムを組むより簡単にアルゴリズムを検証できます。ツールの機能は主に二つのタスクを実行させることです。一つはテストデータを生成し、もう一つはテストデータで探索アルゴリズムを実行させることです。

  1. テスト用のデータセットを生成して保存します。
  2. 因果探索アルゴリズムを選択し、生成したテスト用のデータセットを使ってアルゴリズムを検証します。

CastleBoardの起動

 以下にリンクしている【gCastle因果探索アルゴリズムの検証】で解説したように、python39の仮想環境を起動し、パッケージのディレクトリ、gcastleに移動後、flaskサーバーを起動します。

 以下のコマンドを実行し、Webブラウザで localhost:5000/index.htmlにアクセスしてください。

conda activate python39
cd gcastle
python web/main.py

テストデータの生成

 CastleBoardにアクセスできたら、左上に4つ並んだメニューからTaskメニューを選択してください。

 Taskメニューで選択した図1で示すタスク一覧画面で、上部に三つ並んだボタンの中でAdd Taskボタンを押します。

図1 タスクメニュー タスク一覧

 以下の図2に示すように、タスク選択ダイアログ(Set task type)が表示されます。

図2 タスク選択ダイアログ

 中央のメニューTask TypeからData Generationを選択します。

図3 タスク選択ダイアログ2

 Task Type選択後、Next stepボタンを押します。

図4 タスク種別の設定

 図5で示すAdd a Task -- Data Generationダイアログが表示されます。

図5 Add a task -- Dataset Generation Step1

 ここでSimulation dataset name: テキスト入力フィールドに、シミュレーション・データセットの名称を入力します。これは後で因果探索アルゴリズムを実行するときのデータセットに指定します。

 生成するデータセットに名前をつけた後、 Next stepボタンを押します。

 以下の図6で示すStep2 画面が表示されます。

図6 Step2

 保存場所Storage locationを表示します。生成されるテストデータの保存先を指定します。

 デフォルトの設定で問題ありません。そのままNext stepボタンを押してください。

 以下の図7で示すStep3画面が表示されます。

図7 Step3 Causal mechanism for sample generation

 中央にあるプルダウンメニューからサンプル生成のための因果関係の仕組みを選択します。以下の三つの選択肢から選択します。

  • IID LINEAR
  • IID_NONLINEAR
  • EVENT

図8 Causal mechanism for sample generation

 ここでは、IID_LINEARを選択します。

図9 Configuration Parameters

 Configuration Parametersボタンを押します。Configuration Parameters パラメータの設定画面が表示されます。

図10 Configuration Parameters

 n_edgesn_nodesの項目にそれぞれ値を入力します。ここでは一例として、それぞれ10、8を入力します。

 ここで指定するnodesは因果ダイアグラムのノード、エッジは二つのノード間を結ぶ原因と結果を示す線であり、因果の方向が矢印で表示されます。

 項目に数値を入力したら、Confirmボタンを押します。Step3画面に戻ります。

 Next stepボタンを押します。

 図11で示すStep4の確認画面が表示されます。

図11 Step4 Check the configuration

 入力した内容が表示されます。内容を確認します。

 右下の三つ並んだボタンの中で中央にあるConfirmボタンを押します。

 正常に終了すると、下の図12のタスク画面の一番下に表示されているように、新しく生成したデータセットが、"ds_iid_test1"の名称でタスクに登録されます。これは、上の手続き Step1 図5のテキスト入力フィールドSimulation dataset name:に入力した名称に一致します。

図12 Task一覧 ds_iid_test1

生成したテストデータの表示

 生成したデータを表示するには、タスクリストの右端のOperations欄にあるViewボタンをクリックします。

図13 Operations Viewボタン

 下の図14に示すように、DAGノード間を結ぶエッジが表示されます。

図14 View

 画面右上にあるView Edgesボタンを押します。

 下の図15に示すように、ノード間を結ぶエッジのリストを表示します。

図15 View ノード間を結ぶエッジのリスト

 エッジの上にマウスを移動させると、ノードを結ぶエッジがハイライト表示されます。(図16)ハイライトで表示された 6>2はノード6からノード2への矢印を意味し、6が2の原因であることを示しています。

図16 ノード間を結ぶエッジ(6>2)

因果探索アルゴリズムの実行

 図17のタスク一覧画面の上部に並んだ三つのボタンの中のAdd Taskボタンを押します。

図17 タスク一覧

 Task Type選択画面で Causal Discoveryを選択します。

図18 Set task type

 Task Type選択後に、Next Step ボタンを押します。

 図19で示すStep1画面が表示されます。

図19 Add a task -- Causal Discovery Step 1

 中央のTask nameで示されたテキスト入力フィールドに任意のタスクの名称を入力します。このタスク名はタスク一覧表のリストに追加されます。

 任意のタスク名入力後に、Next stepボタンを押します。

 以下の図20で示す Step2 画面が表示されます。

図20 Step2画面 User-defined training dataset

 データセットの選択画面が表示されます。User defined training datasetBuilt-in training datasetのどちらかを選択するラジオボタンがあります。

 User defined training datasetのラジオボタンを選択します。このラジオボタンを選択すると、生成したデータセットが選択できます。

 【テストデータの生成】項目に記した手続きで生成したデータセットを選択してください。

 Next stepボタンを押してください。Step3画面が表示されます。

図21 Step3画面 Select an algorithm

 アルゴリズムの選択(Select an algorithm): ポップアップメニューを選択して、因果探索アルゴリズムを選択します。

 因果探索に用いるアルゴリズムを選択します。

 ここではICA LiNGAMを選択しました。

 Configuration ボタンを押します。以下の図22で示すパラメータの設定画面が表示されます。

図22 Configuration parameters

 デフォルト設定のまま、Confirmボタンを押します。

 Next stepボタンを押します。

図23 Step3 アルゴリズムの選択

 以下の図24で示す Step4 画面が表示されます。

図24 Step4 確認画面

 入力内容を確認します。確認画面に、テストに用いるテストデータセットの名称が表示されます。

 入力内容に問題がなければ、画面の右下 中央にあるConfirmボタンを押してください。

 タスクが正常に終了すると、図25に示すように、タスク一覧画面に、因果探索の実行結果が、因果探索タスクとして登録されます。下図では項目10に登録されています。

図25 タスク一覧

 各タスクの行の右端のOperation欄のViewボタンを押すと、タスクの結果をグラフィカルモデルで表示します。(図26)

図26  因果探索結果の表示

探索結果の表示

 タスク一覧画面で、タスクの種別がCausalDiscoveryのリストを選択します。Viewボタンを押すと、下の図27で示すように、ノードを結ぶエッジが表示されます。

図27 因果探索結果

 これは、因果探索アルゴリズムが探索したDAGを表示しています。

 'ViewEdges'ボタンを押します。

 ノード間を結ぶ、エッジのリストをパネル表示します。(図28)

図28 エッジリスト

 パネルのメニューにある、'Edges(True Graph)'をマウスでクリックすると、真のノードを結ぶエッジのリストが表示されます。これはテストデータを生成したときに作ったオリジナルのグラフです。

 'TP'(True Positive)を選択すると、正しいノードを結ぶエッジのリストを表示します。オリジナルのグラフと探索結果が一致しているエッジを表示します。

 'FP'(False Positive)を選択すると、誤ったエッジ(予測が1で実際は0)のリスト表示します。

 'FN'(False Negative)を選択すると、誤ったノードを結ぶエッジ(予測が0で実際は1)のリストを表示します。

 

 エッジの上にマウスを移動させると、ノードを結ぶエッジがハイライト表示されます。5>7という表示はノード5から7へ矢印が向いていることを示しており、ノード5がノード7の原因となっていることを示します。

図29 ノード5からノード7へのエッジ

 Comparison'ボタンを押すと、図30で示されるように、真のDAG(オリジナルのDAG)が青い線で表示されます。赤の線は探索アルゴリズムの探索結果です。

図30 元のデータと探索結果の比較

 マウスをエッジの上に移動するとハイライト表示されます。

図31 ノード2からノード7へ向かう真のグラフ(青線)

図32 ノード2からノード7へ向かう探索結果のDAG(赤線)

 'Cancel Comparison'ボタンを押すと、元の探索結果の表示に戻ります。

図33 探索結果

 

 'Select Nodes'ボタンを押すと、図34で示すように、ノードの選択画面が表示されます。

図34 Select Node

 ノードのチェックボックスを選択し、'Confirm'ボタンを押すと、選択されたノードだけが表示されます。(図35)

図35 選択ノードのみ表示

探索結果の評価

 'Evaluatie'ボタンを押すと、評価のための操作パネルを表示します。(図36)

図36 Evaluate

 Select evaluation indicatorに Select Allのチェックボックスにチェックを入れます。

 チェックボックスの項目の意味を以下に記します。

  • fdr: False Discovery Rate, rev + FP_TP + FP
  • tpr: True Positive Rate, TP_TP + FN
  • fpr: False Positive Rate, rev + FP_TN + FP
  • shd: Structual Hamming Distance,
  • nnz:Non-Negative Entries, TP + FP
  • precision:Precision, TP_TP + FP
  • recall: Recall, TP_TP + F_N
  • F1 : F1 Score,
  • gscore: G-Score, max(0, TP-FP_TP + FN)

 ここで、TPはTrue Positiveの数、FPは、False Positiveの数、TNは、True Negativeの数、FNは、False Negativeの数、revは、reversed edge(方向の逆転)の数を意味します。

  • TP: adjacency matrix(注1)のエントリーが、予測結果が1で、真のエントリーが1の場合に計数されます
  • FP: 予測結果が1で、真のエントリーが0だった場合に計数されます。
  • FN: 予測結果が0で、真のエントリーが1だった場合に計数されます。
  • rev:予測結果と、真のグラフのエントリーの両方が1だった場合で、その方向が間違っていた場合に計数されます。

注1adjacency matrix

gCastleに関する以下のブログ内で示した、探索アルゴリズムのテストプログラムで出力するグラフと同じものです。以下の図のest_graphtrue_graphで示します。

左のest_graphがアルゴリズムの予測結果、右のtrue_graphが生成したテストデータが示す真のグラフ

 True Causal Graphの項目で、二つのラジオボタンが選択できます。下側の use a built-in true causal graphを選択します。

 Use a built-in True Causal Graph:に生成したテストデータセットを設定します。プルダウンメニューから生成したデータセットを選択します。

 'Evaluate' ボタンを押します。

 Performance Indicator 欄に、結果が表示されます。(図37)

図37 Performance Indicator

 タスクメニューに戻ってタスク一覧を表示すると、評価した結果がPerformance欄に表示されます。

図38 タスク一覧

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