Skip to content

Commit

Permalink
update: README
Browse files Browse the repository at this point in the history
  • Loading branch information
krmr73 committed Jul 23, 2023
1 parent 367bde3 commit 554aa0b
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 18 deletions.
13 changes: 8 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,14 @@ Iwahashi, Okabe and Suda's experiments for MPS-TOM 2023
- [**`data/`**](/data/)
- 探索に用いるターゲットデータ
- [**`full-search/`**](/full-search/)
- 全探索を行うスクリプト
- 既存モデルの全探索を行うスクリプト
- [**`random-search/`**](/random-search/)
- ランダムサーチによる探索を行うスクリプト
- [**`ga/`**](/ga/)
- 遺伝的アルゴリズムによる探索を行うスクリプト
- [**`qd`**](/qd/)
- [**`qd/`**](/qd/)
- Quality Diversityによる探索を行うスクリプト
- [**`visualize`**](/visualize/)
- [**`visualize/`**](/visualize/)
- 探索結果をもとに可視化するスクリプト

## Requirements
Expand All @@ -23,7 +25,7 @@ Iwahashi, Okabe and Suda's experiments for MPS-TOM 2023
- Rust (latest)
- Rustの実行環境があれば問題ありません

`full-search/`,`ga/`,`qd/`から上位のディレクトリ`lib/`の中身をimportするためにpoetryを用いて設定しています。依存関係は`$ poetry install`でインストールしてください。
`full-search/`,`random-search/`,`ga/`,`qd/`から上位のディレクトリ`lib/`の中身をimportするためにpoetryを用いて設定しています。依存関係は`$ poetry install`でインストールしてください。


## Usage
Expand All @@ -36,7 +38,7 @@ julia --proj=. --threads=auto make_synthetic_target.jl
$$(\rho,\nu,s)=(5,5,SSW),(5,5,WSW),(5,15,SSW),(5,15,WSW),(20,7,SSW),(20,7,WSW)$$

### Search Params
各ディレクトリ`full-search/`,`ga/`,`qd/`のREADMEの指示に従って、`main.py`及び`main.jl`を実行してください。
各ディレクトリ`full-search/`,`random-search/`,`ga/`,`qd/`のREADMEの指示に従って、`main.py`及び`main.jl`を実行してください。
#### Required Files
- `./data/aps.csv`
- `./data/twitter.csv`
Expand All @@ -47,6 +49,7 @@ $$(\rho,\nu,s)=(5,5,SSW),(5,5,WSW),(5,15,SSW),(5,15,WSW),(20,7,SSW),(20,7,WSW)$$
#### Required Files
- `./data/...`
- `./full-search/results/...`
- `./random-search/results/...`
- `./ga/results/...`
- `./qd/results/...`

Expand Down
13 changes: 10 additions & 3 deletions full-search/README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
## 概要
既存モデルである全探索を行います
既存モデルの全探索を行います
rho,nu=1,2,...,20と戦略SSW,WSWの2種類の全てのパラメータ組(20x20x2=800)で全探索します。
それぞれUbaldiのモデルを走らせ、10個の指標を計測して保存します。

GA,QDはターゲットデータに合うように(rho,nu,s)を探索しますが、`full-search/main.jl`ではターゲットデータを意識していません。
壺モデルを走らせる処理と10個の指標の計測が終わっていれば、ターゲットデータとのフィッティング(ターゲットデータとのdistanceを求め、最低な(rho,nu,s)を見つける操作)は一瞬で完了するため、`/visualize`で可視化するときに行われています
ターゲットデータとのフィッティング(ターゲットデータとのdistanceを求め、最良の(rho,nu,s)を見つける操作)`fitting.py`で行われます

## 実行方法
Ubaldiのモデルを走らせ、10個の指標を計算して保存するには、以下のコマンドを実行してください。
```bash
$ julia --proj=. --threads=auto main.jl
```
Expand All @@ -18,4 +19,10 @@ $ julia --proj=. --threads=auto main.jl
rho,nu,s,gamma,no,nc,oo,oc,c,y,g,r,h
<int>,<int>,<string>,<float>,<float>,<float>,<float>,<float>,<float>,<float>,<float>,<float>,<float>
...
```
```

次に以下のコマンドを実行してください。`./results/existing_full_search.csv`を用いて、各ターゲットデータとの距離を計算できます。
```bash
$ python fitting.py <target_type>
```
この結果は`./results/<target>/archive.csv`に保存されます。
4 changes: 2 additions & 2 deletions ga/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

遺伝的アルゴリズムによるパラメタ探索は、以下のような手順で行われます。

1. パラメタを表すベクトル: `(rho, nu, friendship, recentness)` を各個体とする集団をランダムに生成する
1. パラメタを表すベクトル: `(rho, nu, frequency, recentness)` を各個体とする集団をランダムに生成する
2. パラメタをもとに壺モデルを実行、その結果から適合度を算出し、これを記録する
3. 適合度をもとに、集団の進化計算を行う
a. 適合度が高い個体を選択し、交叉を行う
Expand All @@ -24,7 +24,7 @@

特に2で(各個体ごとに)求められる適合度は、具体的には以下のようにして求められます。

1. (`rho`, `nu`, `friendship`, `recentness`) というパラメタをもとに、壺モデルを実行する
1. (`rho`, `nu`, `frequency`, `recentness`) というパラメタをもとに、壺モデルを実行する
2. 壺モデルの実行によって生成された「相互やり取りの履歴」を記録する
3. 2で記録した履歴を用いて、ネットワークの特徴を示す10個のメトリクスを計算する
4. ターゲットとしているネットワークのメトリクスと、3で計算したメトリクスとの間の差分を計算し、これに-1をかけたものを適合度とする
Expand Down
13 changes: 13 additions & 0 deletions qd/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,16 @@ rho,nu,recentness,frequency,distance
rho,nu,recentness,frequency,distance
<float>,<float>,<float>,<float>,<float>
```

### ハイパーパラメータチューニング
ターゲットデータごとに適したセル数,graph2vecで表現する次元数を探索する場合は、`tuning.py`を実行してください。
```bash
$ python tunig.py <target_data> [rho] [nu] [s]
```
結果は`./results/hyperparams-search/<target>/cells<cells>/dim<dim>`以下に`main.py`の結果と同じ形式で保存されます。`tuning.py`の実行には時間がかかるため、注意してください。

チューニングした結果から最適なパラメータを見つけ、可視化できるようにするには、`search_best.py`を実行してください。
```bash
$ python copy_best.py <target_data> [rho] [nu] [s]
```
`results/hyperparams/`にある各ハイパーパラメータでの結果から、最良のものが`results/`にコピーされます。
59 changes: 51 additions & 8 deletions visualize/README.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,78 @@
# full searh, GA, QDの実験結果の可視化
# 既存モデルの全探索, ランダムサーチ, GA, QDの実験結果の可視化

## 概要

以下の3種類の図を作成する。
- 棒グラフ
- レーダーチャート
以下の5種類の図と2種類の表を作成する。

図を生成するスクリプトは`/graphs`にある。
- 箱ひげ図
- `box.py`
- full-search,random-search,GA,QD
- Fig.3(A), Fig.5(A)
- タイムライン
- `timeline.py`
- GA,QD
- Fig.3(B), Fig.5(B)
- レーダーチャート
- `radar_chart.py`
- full-search,GA,QD
- Fig.4, Fig.6
- ネットワークのベクトルが作るマップ
- `map.py`
- GA,QDの実データ
- Fig.7
- 棒グラフ
- `bar_graph.py`
- full-search,random-search,GA,QD

表を生成するスクリプトは`/tables`にある。
- 最良個体の距離の平均と分散を示す表
- `print_best.py`
- full-search,random-search,GA,QD
- Table1, Table2
- 最良の遺伝子5つを示すlatex形式の表
- `latex_table.py`
- QD
- Table3


## 実行方法

### 前処理
GA,QDで見つけた最良のrho,nu,recentness,frequencyの組で壺モデルを10回走らせます。
GA,QD,ランダムサーチで見つけた最良のrho,nu,recentness,frequencyの組で壺モデルを10回走らせます。(既存モデルの全探索では初めから10回走らせているため、ここでは行いません)
```bash
$ pwd # => /path/to/visualize
$ python preprocessing.py <target_type>
```
この結果は`./results/fitted`に保存され、棒グラフ・レーダーチャートの生成に用いられます。
この結果は`./results/fitted`に保存され、棒グラフ・レーダーチャート,最良個体の距離の表の生成に用いられます。


GA,QDの最終的な全個体のに対して、壺モデルを回してネットワークを生成します。そのネットワークをgraph2vecしたベクトルを保存しておきます。
```bash
$ python make_vec.py <target_type>
```
この結果は`./results/vec`に保存され、ネットワークのベクトルが作るマップに用いられます。



### 可視化のスクリプト
図を出力する場合
```bash
$ pwd # => /path/to/visualize
$ python main.py <graph_type> <target_type>
```

各引数の詳細などは `python main.py -h` あるいは `python main.py --help` で確認できます。
実行を行うと,`./results` 以下にグラフの種類ごとに分けられて結果が保存されます。


最良個体の距離の平均と分散を示す表を出力する場合
```bash
$ python tables/print_best.py <target_type>
```
また、latex形式で遺伝子の表を出力するには、以下のコマンドを実行してください。
```bash
$ pwd # => /path/to/visualize
$ python graphs/latex_table.py
```
`MPS-TOM-urnmodel/`で用意されているpoetry環境では、このスクリプトだけpandasのversionの依存関係が合わないため、動きません。
`MPS-TOM-urnmodel/`で用意されているpoetry環境では、`latex_table.py`だけpandasのversionの依存関係が合わないため、動きません。
`pandas>=1.5.3`, `Jinja2>=3.0.0`, `matplotlib`, `numpy`のある環境で実行してください。

0 comments on commit 554aa0b

Please sign in to comment.