Skip to content

Latest commit

 

History

History
133 lines (120 loc) · 4.1 KB

how_to_reproduce.md

File metadata and controls

133 lines (120 loc) · 4.1 KB

Step 0: Installation

conda create -n ag python=3.10
pip install -U uv
python -m uv pip install autogluon==1.4
uv pip install autogluon.tabular[tabicl]
uv pip install matplotlib

Step 1: Reproduction of Table 2 & Fig3 & Fig4

Step 1.1: Experiments Running

VPN-APP

for split in s0 s1 s2; do
    dataset="vpn-service-${split}"
    nohup python -u main.py --root_path dataset --experiment per-flow --dataset "${dataset}" --model_name RandomForestGini --min_bound 0.0 --importance_type default --window 5 --rounds 100 > "rf-${dataset}.log" 2>&1 &
done

App-Time

for split in s0 s1 s2; do
    dataset="app53-time-${split}"
    nohup python -u main.py --root_path dataset --experiment per-flow --dataset "${dataset}" --model_name RandomForestGini --min_bound 0.0 --importance_type default --window 5 --rounds 100 > "rf-${dataset}.log" 2>&1 &
done

App-Version

for split in s0 s1 s2; do
    dataset="app53-version-${split}"
    nohup python -u main.py --root_path dataset --experiment per-flow --dataset "${dataset}" --model_name RandomForestGini --min_bound 0.0 --importance_type default --window 5 --rounds 100 > "rf-${dataset}.log" 2>&1 &
done

TLS

for split in s0 s1 s2; do
    dataset="tls-${split}"
    nohup python -u main.py --root_path dataset --experiment per-packet --dataset "${dataset}" --model_name RandomForestGini --min_bound 0.0 --importance_type default --window 5 --rounds 100 > "${dataset}.log" 2>&1 &
done

Step 1.2: Results Calculation and Collection

python evaluate/table2.py
python evaluate/create_fig3.py
python evaluate/create_fig4.py

Step 2: Reproduction of Table 4 (Require GPU)

Step 2.1: Experiments Running

MLP

for config in \
    "per-flow vpn-service-s2 mlp-vpn-s2" \
    "per-flow app53-time-s2 mlp-app53-time-s2" \
    "per-flow app53-time-s2 mlp-app53-version-s2" \
    "per-packet tls-s2 mlp-tls-s2"; do
    set -- ${config}
    experiment="$1"
    dataset="$2"
    log_name="$3"
    nohup python -u main.py --root_path dataset --experiment "${experiment}" --dataset "${dataset}" --model_name NeuralNetTorch --min_bound 0.0 --importance_type permutation --window 5 --rounds 100 --num_gpus 1 > "${log_name}.log" 2>&1 &
done

TabICL

for config in \
    "per-flow vpn-service-s2 tabicl-vpn-versice-s2" \
    "per-flow app53-time-s2 tabicl-app53-time-s2" \
    "per-flow app53-time-s2 tabicl-app53-version-s2"; do
    set -- ${config}
    experiment="$1"
    dataset="$2"
    log_name="$3"
    nohup python -u main.py --root_path dataset --experiment "${experiment}" --dataset "${dataset}" --model_name TABICL --min_bound 0.0 --importance_type permutation --window 5 --rounds 100 --num_gpus 1 > "${log_name}.log" 2>&1 &
done

Step 2.2: Results Calculation and Collection

python evaluate/table4.py

Step 3: Reproduction of Table 5

Step 3.1: Experiments Running

for size in {40..44}; do
    for sample in 1 2 4 8; do
        dataset="sample-${size}-${sample}"
        nohup python -u main.py --root_path sample_dataset --experiment per-flow --dataset "${dataset}" --model_name RandomForestGini --min_bound 0.0 --importance_type default --window 5 --rounds 100 > "${dataset}.log" 2>&1 &
    done
done

Step 3.2: Results Calculation and Collection

python evaluate/table5.py

Step 4: Reproduction of Table 6

Step 4.1: Experiments Running

App-Time

dataset="app53-time-s2"
for window in 1 3 7; do
    nohup python -u main.py --root_path dataset --experiment per-flow --dataset "${dataset}" --model_name RandomForestGini --min_bound 0.0 --importance_type default --window "${window}" --rounds 100 > "${dataset}-w${window}.log" 2>&1 &
done

TLS

dataset="tls-s2"
for window in 1 3 7; do
    nohup python -u main.py --root_path dataset --experiment per-packet --dataset "${dataset}" --model_name RandomForestGini --min_bound 0.0 --importance_type default --window "${window}" --rounds 100 > "${dataset}-w${window}.log" 2>&1 &
done

Step 4.2: Results Calculation and Collection

python evaluate/table6.py

Step 5: Reproduction of Figure 5

python evaluate/create_fig5.py