MAモデルに重みをつけたものの実装
python 3.9.9で動作確認をしています。
git clone https://github.com/ryoryon66/MAwithWeight.git
cd MAwithWeight
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
M1 macでpygraphvizのinstallに失敗する場合こちらが参考になります。link
python MAmodel/MAmodel.py
が動作し、pdfファイルが生成されていれば環境構築終了です。
- sample_model/ma1model.ymlの形式を参考にして重み付きMAモデルを表現するymlファイルを書いてください。
- MAmodel/settings.pyを適切に設定してください。
- python MAmodel/MAmodel.pyを実行してください。
赤色の辺がattack,青色の辺がsupportです。
条件データ (+,x1,x2) (-,y1,y2)が付与された頂点uの予測ラベルは以下のように定まる。
- Au : Auをrejに向かわせるような頂点の集合 (ラベルがl1かつuをattack または ラベルがl2かつuをsupport)
- Bu : Auをaccに向かわせるような頂点の集合 (ラベルがl2かつuをattack または ラベルがl1かつuをsupport)
V : AuとBuを一緒にした多重集合
average_weight : V内の頂点の重みの平均
としたとき
- A_weightはAu内の重みの合計をaverage_weightで除したもの
- B_weightはBu内の重みの合計をaverage_weightで除したもの
で定める。
- (+,x1,x2)についてはx1,x2,B_weightの大小関係によって判断を定める.
- (-,y1,y2)についてはy1,y2,A_weightの大小関係によって判断を定める。
以上の判断を総合して予測ラベルを定める(ソースコード内のtable_neutralなどを参照)。
MAモデル
graph
- label_list : 用いるラベルのリスト [l1,l2,l3]
edge
- attack : boolでTrueならattack,Falseならsupport
- color : グラフ描画の時の色。
node
-
label ラベリングデータによって付けられたラベル
-
predicted_labels 周囲の頂点から予測されたラベルのリスト
-
judges : 条件ごとの判断などを並べたもの.Aが大きいほどrejされやすく、Bが大きいほどaccされやすくなる。Aは(-,x,y),Bは(+,x,y)の条件判断に用いられる