強化学習による因果探索 gCastle因果探索アルゴリズムの検証(3)

2025/3/18

gCastleに実装された探索アルゴリズムの中で、強化学習を使ったアルゴリズムが高い性能を示しています。本稿ではこの探索のための強化学習アルゴリズムを解説します。 強化学習を使った探索  強化学習は一般的にポリシーを学習することを目的に用いられますが、彼らはこれをDAGの探索に使っています。  巡回セールスマンの問題と同様に、d次元のnシーケンスでベストスコアを導くことで、入力データからバイナリの隣接行列の生成を考えます。  隣接行列を出力するためにエンコーダ/デコーダ・モデルを作りますが、エンコーダ自己 ...

ReadMore

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

2025/3/2

中国のAI技術動向の調査を兼ねて、gCastleに実装された因果探索アルゴリズムを検証しました。gCastleはGUIツールCastleBoardを含んでいますが、パッケージにツールのマニュアル類は添付されていません。そのため、本稿では実際にアルゴリズムを検証するためのCastleBoardの使い方について解説します。 CastleBoardの操作  GUIツールはいくつかの設定項目への入力でテストデータを生成できるため、テストプログラムを組むより簡単にアルゴリズムを検証できます。ツールの機能は主に二つの ...

ReadMore

マイニング・セクターのリスク許容度、関税の影響 (DoubleMLの推論)

2025/3/14

 2025年2月に合衆国の新政権の政策として、鉄鋼とアルミニウムに25%の関税が課されることが決定されました。一方で、ウクライナへのこれまでの支援の対価として、ウクライナの鉱物資源などの天然資源の権益取得が交渉されています。  この関税政策が、原料である鉄鉱石やボーキサイトなどの鉱物資源の採掘を行なっている企業に与える影響について分析します。  分析手段として機械学習を使った推論手法、DoubleML(Double Machine Learning)を用います。このDoubleMLという推論手法と同じ名称 ...

ReadMore

gCastle 因果探索アルゴリズムの検証

2025/2/28

gCastleは、因果探索アルゴリズムが実装された因果の構造を学習するツールチェインです。パッケージは、Webアプリを含んでおり、因果探索アルゴリズムがGUIベースの操作で検証できるようになっています。 gCastle 概要  Huawei社のリサーチラボから提供されています。因果探索アルゴリズムが実装されており、Webアプリを使用してアルゴリズムの動作が検証できます。  GCastleの名称は、Gradient-based Causal Structure Learning pipeline. の頭文字 ...

ReadMore

クレジット・カードの種別と利用額の最適化 YLearnによる因果推論(2)

2025/2/20

YLearn因果推論パッケージを使ったケース・スタディを使ってYLearnの機能を解説します。YLearnの因果推論パイプラインを使ったマーケティング上の分析の一つになります。クレジット・カードのグレードを更新した場合の効果の推論です。 機能と仕様  以下、簡単に機能をまとめ、最後にケーススタディを使って動作を確認します。ケース・スタディでは、Kaggleの実際のデータセットを使います。 DAG グラフと交絡因子  観測されていない変数はconfounding arcとして定義し、下の図1では(黒の点線) ...

ReadMore

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

2025/2/20

 因果推論はAIシステムが、イベント間の真の因果関係をよりよく理解する助けになります。中国製のLLMが最近、話題(注1)になっていたので、データサイエンス分野で中国の因果推論に関する取り組みとツールについて評価します。  因果推論や因果探索のツールとして、Huaweiが提供しているgCastleと、因果探索・因果推論ツール、ylearnを使います。gCastleはPyTorchで実装された因果探索パッケージです。因果関係に関連した代表的なアルゴリズムが実装されて、検証ツールが提供されています。Huawei ...

ReadMore

Jupyter-notebookがAnaconda Navigatorから起動できない問題

2025/2/6

新しいAnaconda Navigatorをインストールしたところ、jupyter-notebook(7.3.2)がNavigatorから起動できない問題がありました。 Navigatorのエラーメッセージは、次のようになっています。 【The file /Users/xxx/anaconda3/bin/Jupyter_mac.command does not exist.】 jupyter_mac.command does not exist.  問題は、インストールまたはNavigatorが参照してい ...

ReadMore

Apple Silicon Mac 用 Anacondaバージョン更新・インストール

2025/2/5

Apple Silicon用に新しいバージョンのAnacondaがリリースされていたので、Navigatorの更新を兼ねてインストールします。 (Mac OSの更新(Sequoia15.3)によって、使用中のNavigatorが起動しなくなったため) Anaconda Navigatorのインストール  以下のAnacondaのサイトにアクセスします。最近のAIに対する、人と資本、計算リソースの流れを反映した画面に様変わりしています。 https://www.anaconda.com  【1】画面左上のP ...

ReadMore

グラフィカル・モデルを基にした因果探索

2025/2/18

Rによるベイジアンネットワークを用いた因果探索。 有向グラフ因果モデル(DGCMs)、またはDAGは、因果関係を説明し、データから真の因果の関係を探索するために計算に用いる方法です。 causal-learnやcausalpyというpythonの因果探索ライブラリを評価しました、Rにも同様のライブラリが提供されています。ここでは、CRANに登録されているRのライブラリpcalgとbnlearnに実装されているいくつかの因果探索アルゴリズムを評価します。 2025年の10大リスク  ユーラシア・グループは、 ...

ReadMore

JupyterノートブックでRを使う方法

2025/1/20

Pythonの開発環境としてJupyter notebookがよく使われています。RでもPython同様にJupyter によるコードの編集、実行環境が利用できます。データサイエンスでは、主にJulia, Python, Rという言語が使用されますが、このイニシャルを繋げるとJupyterになります。 Jupyter notebook  R環境設定  JupyterからRを使うには、Rを起動したコマンドプロンプトから以下のコマンドを使います。  使用しているバージョンのR環境にJupyterのカーネルのパ ...

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 タスク一覧

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