2020 09 06 Specificity plots - WojciechMigda/TruRL GitHub Wiki

Specificity plot for max_episode_steps=200

Run parameters:

Episodes: 1000
max_episode_steps: 200
TsetliniClassifierBitwise({
        "threshold": 32000,
        "s": <#####>,
        "number_of_regressor_clauses": 3200,
        "number_of_states": 127,
        "boost_true_positive_feedback": 1,
        "random_state": 1,
        "n_jobs": 2,
        "clause_output_tile_size": 16,
        "weighted": true,
        "verbose": false
    })

Seven specificity values were examined: 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, and 8.0.

Plot AUC Plot AUC Plot (zoomed)

Conclusions:

  • the smallest specificity exhibited some learning instability,
  • the best performing specificity value equals 4.0, the second best is 3.0,
  • observed learning performance dependency is different compared to experiments with T=16000 in which the top performing s value was 8.0,

Plotting scripts

steps_200_s.py

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import plac
import numpy as np
import pandas as pd


def main():
    df = pd.read_csv('steps_200_s.csv', header=None, names=['2.0', '3.0','4.0', '5.0', '6.0', '7.0', '8.0'])

    import matplotlib.pyplot as plt

    plt.figure()

    lw = 2

    plt.plot(df.index + 1, df['2.0'], lw=lw, color='brown', alpha=0.7, label='s=2.0')
    plt.plot(df.index + 1, df['3.0'], lw=lw, color='teal', alpha=0.7, label='s=3.0')
    plt.plot(df.index + 1, df['4.0'], lw=lw, color='orange', alpha=0.7, label='s=4.0')
    plt.plot(df.index + 1, df['5.0'], lw=lw, color='red', alpha=0.7, label='s=5.0')
    plt.plot(df.index + 1, df['6.0'], lw=lw, color='purple', alpha=0.7, label='s=6.0')
    plt.plot(df.index + 1, df['7.0'], lw=lw, color='navy', alpha=0.7, label='s=7.0')
    plt.plot(df.index + 1, df['8.0'], lw=lw, color='green', alpha=0.7, label='s=8.0')

    plt.xlabel("Episode")
    plt.ylabel("Avg. reward")

    plt.xlim(1, 1000)
    plt.ylim(0, 200)

    plt.title("Averaged 10x runs, 200 steps\n[3200 clauses, T=32000]")
    plt.legend(loc='lower right')

    plt.show()
    return 0


if __name__ == '__main__':
    plac.call(main)

steps_200_s_AUC.py

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import plac
import numpy as np
import pandas as pd


def main():
    df = pd.read_csv('steps_200_s.csv', header=None, names=['2.0', '3.0','4.0', '5.0', '6.0', '7.0', '8.0'])

    df = df.cumsum(axis=0)

    import matplotlib.pyplot as plt

    plt.figure()

    lw = 2

    plt.plot(df.index + 1, df['2.0'], lw=lw, color='brown', alpha=0.7, label='s=2.0')
    plt.plot(df.index + 1, df['3.0'], lw=lw, color='teal', alpha=0.7, label='s=3.0')
    plt.plot(df.index + 1, df['4.0'], lw=lw, color='orange', alpha=0.7, label='s=4.0')
    plt.plot(df.index + 1, df['5.0'], lw=lw, color='red', alpha=0.7, label='s=5.0')
    plt.plot(df.index + 1, df['6.0'], lw=lw, color='purple', alpha=0.7, label='s=6.0')
    plt.plot(df.index + 1, df['7.0'], lw=lw, color='navy', alpha=0.7, label='s=7.0')
    plt.plot(df.index + 1, df['8.0'], lw=lw, color='green', alpha=0.7, label='s=8.0')

    plt.xlabel("Episode")
    plt.ylabel("Avg. cumulative reward")

    plt.xlim(1, 1000)
    plt.ylim(0, 170000)

    plt.title("AUC: Averaged 10x runs, 200 steps\n[3200 clauses, T=32000]")
    plt.legend(loc='upper left')

    plt.show()
    return 0


if __name__ == '__main__':
    plac.call(main)

Data

Location: /experiments/2020-09-05_step200_s

Logs were created by running /experiments/run.sh script (invocation parameters hardcoded inside). Logs were transformed into CSV file with averaged runs by executing /experiments/run_csv.py:

../run_csv.py steps_200_s.csv run_test10.log run_test9.log run_test7.log run_test2.log run_test3.log run_test4.log run_test6.log

Commit

1374ed2fd4541a8ce76a1daced462c01f166c55a

⚠️ **GitHub.com Fallback** ⚠️