What is Optuna Dashboard?
Optuna
dashboard is a visualization tool that allows you to view the
history and results of optuna hyperparameter optimization studies. To
install it, activate your rCISSVAE virtual environment and
use pip install optuna-dashboard from command line.
If you are using Positron as your IDE, you can install the Optuna Dashboard Extension and easily open optuna database files. For others, the simplest way to use Optuna Dashboard is from the command line. Please note that the command line version of Optuna Dashboard has some features that are not in the Extension.
Creating an Optuna Dashboard with the Autotune Function
The autotune_cissvae() function has an option for
creating an Optuna Dashboard database.
In R:
library(tidyverse)
library(reticulate)
library(rCISSVAE)
library(kableExtra)
## Set the virtual environment
# reticulate::use_virtualenv("./.venv", required = TRUE)
## Load the data
data(df_missing)
data(clusters)
aut <- autotune_cissvae(
data = df_missing,
index_col = "index",
clusters = clusters$clusters,
n_trials = 3, ## Using low number of trials for demo
study_name = "ShowOptunaDB",
device_preference = "cpu",
optuna_dashboard_db = "sqlite:///optuna_study_demo.db", # Save results to database
load_if_exists = TRUE, ## Set true to load and continue study if it exists
seed = 42,
verbose = FALSE,
## Hyperparameter search space
num_hidden_layers = c(2, 5), # Try 2-5 hidden layers
hidden_dims = c(64, 512), # Layer sizes from 64 to 512
latent_dim = c(10, 100), # Latent dimension range
latent_shared = c(TRUE, FALSE),
output_shared = c(TRUE, FALSE),
lr = 0.01, # Learning rate range
decay_factor = 0.99,
beta = 0.01, # KL weight range
num_epochs = 5, # Fixed epochs for demo
batch_size = c(1000, 4000), # Batch size options
num_shared_encode = c(0, 1, 2, 3),
num_shared_decode = c(0, 1, 2, 3),
# Layer placement strategies - try different arrangements
encoder_shared_placement = c("at_end", "at_start", "alternating", "random"),
decoder_shared_placement = c("at_start", "at_end", "alternating", "random"),
refit_patience = 2, # Early stopping patience
refit_loops = 10, # Fixed refit loops
epochs_per_loop = 5, # Epochs per refit loop
reset_lr_refit = FALSE
)
# Analyze results
imputed <- aut$imputed
best_model <- aut$model
results <- aut$results
# View best hyperparameters
print("Trial results:")
results |> kable() |>
kable_styling(font_size=12)## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.6.0
## ✔ ggplot2 4.0.1 ✔ tibble 3.3.0
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.2
## ✔ purrr 1.2.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## [1] "Trial results:"
| trial_number | imputation_error | num_hidden_layers | hidden_dim_0 | hidden_dim_1 | hidden_dim_2 | hidden_dim_3 | hidden_dim_4 | latent_dim | latent_shared | output_shared | batch_size | num_shared_encode | num_shared_decode | encoder_shared_placement | decoder_shared_placement | layer_order_enc_used | layer_order_dec_used |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 29.62110 | 5 | 512 | 64 | 512 | 64 | 64 | 100 | FALSE | FALSE | 1000 | 1 | 1 | alternating | at_start | S,U,U,U,U | S,U,U,U,U |
| 1 | 33.00819 | 5 | 64 | 64 | 64 | 512 | 64 | 10 | TRUE | TRUE | 1000 | 1 | 0 | alternating | alternating | S,U,U,U,U | U,U,U,U,U |
| 2 | 58.28946 | 2 | 512 | 64 | NaN | NaN | NaN | 10 | TRUE | FALSE | 4000 | 0 | 3 | alternating | random | U,U | S,S |
To view the dashboard:
From Command Line
For more information see the optuna dashboard documentation.