BetaML Benchmarks

This benchmark page allows us to quickly check for regressions across versions. As it is run and compiled using GitHub actions, and these may be powered by different computational resources, timing results are normalized using SystemBenchmark.

This page also provides a basic, far-from-exhaustive, comparison with other leading Julia libraries for the same model. Note that while we did try to match hyperparameters to the BetaML default ones, differences still occour and may in part explain the different model's performances and scores.

This file is intended just for benchmarking, not much as a tutorial, and it doesn't employ a full ML workflow, just the minimum preprocessing such that the algorithms work.

Benchmark setup

Threads.nthreads()
4
avg_factor_to_ref
1.7470931883779202

Regression

A simple regression over 500 points with y = x₁²-x₂+x₃²

bm_regression

6 rows × 8 columns

nametimememoryallocsmre_trainstd_trainmre_teststd_test
StringFloat64Int64Int64Float64Float64Float64Float64
1DT7.96821e68302672556060.0007237252.76557e-50.00522130.000643395
2RF6.28088e71157980009977190.001231453.35691e-50.003094810.000272821
3NN1.08781e91048887408112270280.001173295.52884e-50.001195240.000245931
4DT (DecisionTrees.jl)1.04506e5738885050.006483750.0002144950.008783510.00135441
5RF (DecisionTrees.jl)1.36738e62757968142010.002696670.0001087210.003859660.000828025
6NN (Flux.jl)1.2886e821532168011780010.003345919.90508e-50.00336549.90508e-5

Classification

A dicotomic diagnostic breast cancer classification based on the Wisconsin Breast Cancer Database.

bm_classification

9 rows × 8 columns

nametimememoryallocsacc_trainstd_trainacc_teststd_test
StringFloat64Int64Int64Float64Float64Float64Float64
1DT3.92619e821075297613006230.9994140.001318260.9121550.0247153
2RF6.50396e869466612841204960.999610.001232860.9613410.0215558
3NN2.5655e910846554912150407440.9994140.0009434490.971930.0205928
4Perc7.94392e73522944966209100.9900410.005782150.9578950.0236824
5KPerc1.15248e91447524096119951321.00.00.9403510.0332871
6Peg1.65821e860667641613780090.9408320.01850630.9385960.0312195
7DT (DT.jl)3.60508e6569602421.00.00.9262840.0458556
8RF (DT.jl)4.88405e6605732867071.00.00.9613410.0258813
9NN (Flux.jl)2.57455e857292808014088011.00.00.9684210.0161217

Clustering

Cluster benchmarks using the iris dataset. Note that all algorithms use only the features, the label is used only to asses the cluster accuracy score.

bm_clustering

3 rows × 8 columns

nametimememoryallocsacc_meanacc_stdsil_meansil_std
StringFloat64Int64Int64Float64Float64Float64Float64
1KMeans523509.051812848730.8911110.00858890.5522610.00939593
2KMedoids1.06986e7150123681343000.9022220.01630380.5410250.0140424
3GMM1.16944e7208675201999830.9148150.01888530.5437410.014114

Missing imputation

TODO :-)