SlideShare a Scribd company logo
SigOpt. Confidential.
Talk #3
Training, Tuning, and Metric Strategy
SigOpt Talk Series
Tuning for Systematic Trading
Tobias Andreasen — Machine Learning Engineer
Tuesday, May 19, 2020
SigOpt. Confidential.
Abstract
SigOpt provides an extensive set of advanced features,
which help you, the expert, save time while
increasing model performance via experimentation.
Today, we will continue this talk series by discussing
training, tuning, and metric strategies in the context of
SigOpt, and use this to come up with a recipe for how
this can be used for model experimentation.
SigOpt. Confidential.
Overview of SigOpt
SigOpt. Confidential.
Accelerate and amplify the
impact of modelers everywhere
SigOpt. Confidential.
Experiment Insights Optimization Engine
Track, analyze and reproduce any
model to improve the productivity of
your modeling
Enterprise Platform
Automate hyperparameter tuning to
maximize the performance and impact
of your models
Standardize experimentation across
any combination of library,
infrastructure, model or task
On-Premise Hybrid/Multi
Solution: Experiment, optimize and analyze at scale
5
SigOpt. Confidential.
SigOpt Features
Enterprise
Platform
Optimization
Engine
Experiment
Insights
Reproducibility
Intuitive web dashboards
Cross-team permissions
and collaboration
Advanced experiment
visualizations
Usage insights
Parameter importance
analysis
Multimetric optimization
Continuous, categorical, or
integer parameters
Constraints and
failure regions
Up to 10k observations,
100 parameters
Multitask optimization and
high parallelism
Training Monitor and
Automated Early Stopping
Infrastructure agnostic
REST API
Parallel Resource Scheduler
Black-Box Interface
Tunes without
accessing any data
Libraries for Python,
Java, R, and MATLAB
SigOpt. Confidential.
Experimentation Recipe
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
Black Box Optimization
Your firewall
Training
Data
AI, ML, DL,
Simulation Model
Model Evaluation
or Backtest
Testing
Data
New
Configurations
Objective
Metric
Better
Results
EXPERIMENT INSIGHTS
Track, organize, analyze and
reproduce any model
ENTERPRISE PLATFORM
Built to fit any stack and scale
with your needs
OPTIMIZATION ENGINE
Explore and exploit with a
variety of techniques
RESTAPI
Configuration
Parameters or
Hyperparameters
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
8
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
9
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
class SIGOPT:
APITOKEN =
'PPPPPOJUZPFSAAAAADSSEYPCPNPGGGGGLNLRYKSRBWYZTTFI'
CLIENTID = 1
PROJECT = 'quant_series'
Creating SigOpt Project
SigOpt Access Class
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
Your firewall
Training
Data
AI, ML, DL,
Simulation Model
Model Evaluation
or Backtest
Testing
Data
New
Configurations
Objective
Metric
Better
Results
EXPERIMENT INSIGHTS
Track, organize, analyze and
reproduce any model
ENTERPRISE PLATFORM
Built to fit any stack and scale
with your needs
OPTIMIZATION ENGINE
Explore and exploit with a
variety of techniques
RESTAPI
Configuration
Parameters or
Hyperparameters
10
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
Load Data
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
11
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
class Data:
X, Y = datasets.load_breast_cancer(return_X_y=True)
def __init__(self, test_size=0.3):
self.x_train, self.x_test, self.y_train, self.y_test = train_test_split(
self.X, self.Y, test_size=test_size)
def train_data(self,):
return [self.x_train, self.y_train]
def test_data(self,):
return [self.x_test, self.y_test]
def num_features(self,):
return self.X.shape[1]
def num_classes(self,):
return len(np.unique(self.Y))
Load Data
Data Loader Class
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
Your firewall
Training
Data
AI, ML, DL,
Simulation Model
Model Evaluation
or Backtest
Testing
Data
New
Configurations
Objective
Metric
Better
Results
EXPERIMENT INSIGHTS
Track, organize, analyze and
reproduce any model
ENTERPRISE PLATFORM
Built to fit any stack and scale
with your needs
OPTIMIZATION ENGINE
Explore and exploit with a
variety of techniques
RESTAPI
Configuration
Parameters or
Hyperparameters
12
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
Create Evaluation Framework
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
13
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
class Evaluation:
METRICS = [{'name': 'accuracy', 'objective': 'maximize', 'strategy': 'optimize'},
{'name': 'f1', 'objective': 'maximize', 'strategy': 'store'},
{'name': 'precision', 'objective': 'maximize', 'strategy': 'store'},
{'name': 'recall', 'objective': 'maximize', 'strategy': 'store'}, ]
@classmethod
def return_object(cls, y):
y_true = y[0]
y_hat = y[1]
# needs to be replaced by data input and score calculations
scores = []
scores.append(accuracy_score(y_true, y_hat))
scores.append(f1_score(y_true, y_hat, average='macro'))
scores.append(precision_score(
y_true, y_hat, average='macro', zero_division=1))
scores.append(recall_score(y_true, y_hat, average='macro'))
return [{'name': m['name'], 'value': s} for m, s in zip(cls.METRICS, scores)]
Create Evaluation Framework
Model Evaluation Class
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
Your firewall
Training
Data
AI, ML, DL,
Simulation Model
Model Evaluation
or Backtest
Testing
Data
New
Configurations
Objective
Metric
Better
Results
EXPERIMENT INSIGHTS
Track, organize, analyze and
reproduce any model
ENTERPRISE PLATFORM
Built to fit any stack and scale
with your needs
OPTIMIZATION ENGINE
Explore and exploit with a
variety of techniques
RESTAPI
Configuration
Parameters or
Hyperparameters
14
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
Create Model
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
15
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
class LogisticRegression:
NAME = 'Logistic Regression'
BUDGET = 10
PARAMETERS = [{'name': 'log_c', 'type': 'double',
'bounds': {'min': -11, 'max': 0}, 'grid': BUDGET}]
def __init__(self, assignment):
c = np.exp(assignment['log_c'])
self.model = LogisticRegression(C=c)
self.y_hat = None
self.y_true = None
def train(self, data):
x = data[0]
y = data[1]
self.model.fit(x, y)
def test(self, data):
x = data[0]
y = data[1]
self.y_hat = self.model.predict(x)
self.y_true = y
def evaluate(self,):
return [self.y_true, self.y_hat]
Create Model
Baseline Model Class
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
Your firewall
Training
Data
AI, ML, DL,
Simulation Model
Model Evaluation
or Backtest
Testing
Data
New
Configurations
Objective
Metric
Better
Results
EXPERIMENT INSIGHTS
Track, organize, analyze and
reproduce any model
ENTERPRISE PLATFORM
Built to fit any stack and scale
with your needs
OPTIMIZATION ENGINE
Explore and exploit with a
variety of techniques
RESTAPI
Configuration
Parameters or
Hyperparameters
16
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
Optimization Loop
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
17
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
conn = Connection(client_token=SIGOPT.APITOKEN)
experiment_meta = {
'type': 'grid',
'project': SIGOPT.PROJECT,
'name': Model.NAME,
'parameters': Model.PARAMETERS,
'metrics': Evaluation.METRICS}
experiment = conn.experiments().create(**experiment_meta)
while experiment.progress.observation_count < experiment.observation_budget:
suggestion = conn.experiments(experiment.id).suggestions().create()
model = Model(suggestion.assignments)
model.train(data.train_data())
model.test(data.test_data())
conn.experiments(experiment.id).observations().create(
suggestion=suggestion.id,
values=Evaluation.return_object(model.evaluate()),)
experiment = conn.experiments(experiment.id).fetch()
Optimization Loop
Experiment Create Call
Optimization Loop
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
18
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
conn = Connection(client_token=SIGOPT.APITOKEN)
experiment_meta = {
'type': 'grid',
'project': SIGOPT.PROJECT,
'name': Model.NAME,
'parameters': Model.PARAMETERS,
'metrics': Evaluation.METRICS}
experiment = conn.experiments().create(**experiment_meta)
while experiment.progress.observation_count < experiment.observation_budget:
suggestion = conn.experiments(experiment.id).suggestions().create()
model = Model(suggestion.assignments)
model.train(data.train_data())
model.test(data.test_data())
conn.experiments(experiment.id).observations().create(
suggestion=suggestion.id,
values=Evaluation.return_object(model.evaluate()),)
experiment = conn.experiments(experiment.id).fetch()
Optimization Loop
Experiment Create Call
Optimization Loop
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
19
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
conn = Connection(client_token=SIGOPT.APITOKEN)
experiment_meta = {
'type': 'grid',
'project': SIGOPT.PROJECT,
'name': Model.NAME,
'parameters': Model.PARAMETERS,
'metrics': Evaluation.METRICS}
experiment = conn.experiments().create(**experiment_meta)
while experiment.progress.observation_count < experiment.observation_budget:
suggestion = conn.experiments(experiment.id).suggestions().create()
model = Model(suggestion.assignments)
model.train(data.train_data())
model.test(data.test_data())
conn.experiments(experiment.id).observations().create(
suggestion=suggestion.id,
values=Evaluation.return_object(model.evaluate()),)
experiment = conn.experiments(experiment.id).fetch()
Optimization Loop
Experiment Create Call
Optimization Loop
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
20
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
Metric Strategy
- Storing up to 50 non-optimized
metrics
- Gain insights through
additional model information
Objective
- Storing business specific
metrics to drive the best
decisions
- Hit business targets through
modeling
Adding Metrics
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
21
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
Adding Metrics
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
22
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
Investigating Metrics
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
23
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
Investigating Metrics
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
24
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
Metric Constraints
- Guardrail your modeling by
applying constraints to
non-optimized metrics
Objective
- Use business requirements
as constraints for your
modeling
- Maximize modeling impact
Adding Metric Constraints
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
25
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
Adding Metric Constraints
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
Your firewall
Training
Data
AI, ML, DL,
Simulation Model
Model Evaluation
or Backtest
Testing
Data
New
Configurations
Objective
Metric
Better
Results
EXPERIMENT INSIGHTS
Track, organize, analyze and
reproduce any model
ENTERPRISE PLATFORM
Built to fit any stack and scale
with your needs
OPTIMIZATION ENGINE
Explore and exploit with a
variety of techniques
RESTAPI
Configuration
Parameters or
Hyperparameters
26
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
Create Model
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
27
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
class NeuralNetwork:
NAME = 'Neural Network'
BUDGET = 30
EPOCHS = 40
MAXCHECKPOINTS = {'max_checkpoints': EPOCHS, }
NUMFEATURES = None
NUMCLASSES = None
PARAMETERS = [{'name': 'num_nodes', 'type': 'int', 'bounds': {'min': 4, 'max': 40}},
{'name': 'log_learning_rate', 'type': 'double',
'bounds': {'min': -11, 'max': 0}},
{'name': 'batch_size', 'type': 'int', 'bounds': {'min': 4, 'max': 10}}]
def __init__(self, assignment):
self.num_nodes = assignment['num_nodes']
self.learning_rate = np.exp(assignment['log_learning_rate'])
self.batch_size = assignment['batch_size']
self.model = keras.Sequential(
[layers.Dense(self.num_nodes, activation='relu', input_shape=(self.NUMFEATURES,)),
layers.Dense(self.NUMCLASSES, activation='softmax'), ])
opt = keras.optimizers.Adam(learning_rate=self.learning_rate)
self.model.compile(
loss='sparse_categorical_crossentropy', optimizer=opt)
Create Model
Advanced Model Class
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
Your firewall
Training
Data
AI, ML, DL,
Simulation Model
Model Evaluation
or Backtest
Testing
Data
New
Configurations
Objective
Metric
Better
Results
EXPERIMENT INSIGHTS
Track, organize, analyze and
reproduce any model
ENTERPRISE PLATFORM
Built to fit any stack and scale
with your needs
OPTIMIZATION ENGINE
Explore and exploit with a
variety of techniques
RESTAPI
Configuration
Parameters or
Hyperparameters
28
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
Optimization Loop
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
29
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
conn = Connection(client_token=SIGOPT.APITOKEN)
experiment_meta = {
'project': SIGOPT.PROJECT,
'name': Model.NAME,
'parameters': Model.PARAMETERS,
'observation_budget': Model.BUDGET,
'training_monitor': Model.MAXCHECKPOINTS,
'metrics': Evaluation.METRICS,}
experiment = conn.experiments().create(**experiment_meta)
while experiment.progress.observation_count < experiment.observation_budget:
suggestion = conn.experiments(experiment.id).suggestions().create()
model = Model(suggestion.assignments)
training_run = conn.experiments(
experiment.id).training_runs().create(suggestion=suggestion.id)
for _ in range(model.EPOCHS):
model.train(data.train_data())
model.test(data.test_data())
checkpoint = conn.experiments(experiment.id).training_runs(
training_run.id).checkpoints().create(values=Evaluation.return_object(model.evaluate()),)
Optimization Loop
Experiment Create Call
Optimization Loop with Training Monitor
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
30
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
conn = Connection(client_token=SIGOPT.APITOKEN)
experiment_meta = {
'project': SIGOPT.PROJECT,
'name': Model.NAME,
'parameters': Model.PARAMETERS,
'observation_budget': Model.BUDGET,
'training_monitor': Model.MAXCHECKPOINTS,
'metrics': Evaluation.METRICS,}
experiment = conn.experiments().create(**experiment_meta)
while experiment.progress.observation_count < experiment.observation_budget:
suggestion = conn.experiments(experiment.id).suggestions().create()
model = Model(suggestion.assignments)
training_run = conn.experiments(
experiment.id).training_runs().create(suggestion=suggestion.id)
for _ in range(model.EPOCHS):
model.train(data.train_data())
model.test(data.test_data())
checkpoint = conn.experiments(experiment.id).training_runs(
training_run.id).checkpoints().create(values=Evaluation.return_object(model.evaluate()),)
Optimization Loop
Experiment Create Call
Optimization Loop with Training Monitor
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
Optimization Loop with Training Monitor
31
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
conn = Connection(client_token=SIGOPT.APITOKEN)
experiment_meta = {
'project': SIGOPT.PROJECT,
'name': Model.NAME,
'parameters': Model.PARAMETERS,
'observation_budget': Model.BUDGET,
'training_monitor': Model.MAXCHECKPOINTS,
'metrics': Evaluation.METRICS,}
experiment = conn.experiments().create(**experiment_meta)
while experiment.progress.observation_count < experiment.observation_budget:
suggestion = conn.experiments(experiment.id).suggestions().create()
model = Model(suggestion.assignments)
training_run = conn.experiments(
experiment.id).training_runs().create(suggestion=suggestion.id)
for _ in range(model.EPOCHS):
model.train(data.train_data())
model.test(data.test_data())
checkpoint = conn.experiments(experiment.id).training_runs(
training_run.id).checkpoints().create(values=Evaluation.return_object(model.evaluate()),)
Optimization Loop
Experiment Create Call
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
32
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
Training Monitor
- Monitor convergence for
better model performance
- Increase generalization by
seeing best convergence
Objective
- Decide on the best model for
production by performance as
well as convergence
Looking at Convergence
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
33
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
Looking at Convergence
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
34
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
while experiment.progress.observation_count < experiment.observation_budget:
suggestion = conn.experiments(experiment.id).suggestions().create()
model = Model(suggestion.assignments)
training_run = conn.experiments(
experiment.id).training_runs().create(suggestion=suggestion.id)
for _ in range(model.EPOCHS):
model.train(data.train_data())
model.test(data.test_data())
checkpoint = conn.experiments(experiment.id).training_runs(
training_run.id).checkpoints().create(values=Evaluation.return_object(model.evaluate()),)
if checkpoint.should_stop:
conn.experiments(experiment.id).observations().create(
training_run=training_run.id)
break
Looking at Convergence
Optimization Loop with Training Monitor and Early Stopping
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
35
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
while experiment.progress.observation_count < experiment.observation_budget:
suggestion = conn.experiments(experiment.id).suggestions().create()
model = Model(suggestion.assignments)
training_run = conn.experiments(
experiment.id).training_runs().create(suggestion=suggestion.id)
for _ in range(model.EPOCHS):
model.train(data.train_data())
model.test(data.test_data())
checkpoint = conn.experiments(experiment.id).training_runs(
training_run.id).checkpoints().create(values=Evaluation.return_object(model.evaluate()),)
if checkpoint.should_stop:
conn.experiments(experiment.id).observations().create(
training_run=training_run.id)
break
Looking at Convergence
Optimization Loop with Training Monitor and Early Stopping
SigOpt. Confidential.SigOpt. Confidential.
Key Use Cases
36
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
class SIGOPT:
APITOKEN =
'DBOKLMJUZPFSYYCCEDSSEYPNPNPPLOWHLNLRYKSRBDYZIIFI'
CLIENTID = 1
PROJECT = 'quant_series'
Finishing up Project
SigOpt Access Class
SigOpt. Confidential.SigOpt. Confidential.
Key Use Casesclass SIGOPT:
APITOKEN =
'DBOKLMJUZPFSYYCCEDSSEYPNPNPPLOWHLNLRYKSRBDYZIIFI'
CLIENTID = 1
PROJECT = 'quant_series'
37
Experimentation Recipe:
Project Hygiene
Data Handling
Evaluation Strategy
Baseline Modeling
Metric Strategy
Advanced Modeling
Optimization Feedback Loop
- Convergence
- Early Stopping
Project Handoff
Finishing up Project
SigOpt Access Class
SigOpt. Confidential.
Tobias Andreasen | tobias@sigopt.com
For more information visit: https://sigopt.com/research/
Questions?

More Related Content

PDF
Tuning for Systematic Trading: Talk 2: Deep Learning
PDF
Tuning for Systematic Trading: Talk 1
PDF
SigOpt for Hedge Funds
PDF
SigOpt at O'Reilly - Best Practices for Scaling Modeling Platforms
PDF
SigOpt at Ai4 Finance—Modeling at Scale
PDF
Modeling at scale in systematic trading
PDF
SigOpt at GTC - Reducing operational barriers to optimization
PDF
Advanced Optimization for the Enterprise Webinar
Tuning for Systematic Trading: Talk 2: Deep Learning
Tuning for Systematic Trading: Talk 1
SigOpt for Hedge Funds
SigOpt at O'Reilly - Best Practices for Scaling Modeling Platforms
SigOpt at Ai4 Finance—Modeling at Scale
Modeling at scale in systematic trading
SigOpt at GTC - Reducing operational barriers to optimization
Advanced Optimization for the Enterprise Webinar

What's hot (15)

PDF
Tuning the Untunable - Insights on Deep Learning Optimization
PDF
Common Problems in Hyperparameter Optimization
PPTX
Machine Learning Fundamentals
PDF
MLOps Using MLflow
PPTX
Pydata presentation
PDF
Pentaho World 2017: Automated Machine Learning (AutoML) and Pentaho (Thursday...
PDF
Model-Based Optimization for Effective and Reliable Decision-Making
PDF
PyData London 2018 talk on feature selection
PDF
Agile Machine Learning for Real-time Recommender Systems
PDF
“Houston, we have a model...” Introduction to MLOps
PDF
Recent advances on large scheduling problems in CP Optimizer
PDF
Shortening the time from analysis to deployment with ml as-a-service — Luiz A...
PPTX
MLOps - The Assembly Line of ML
PDF
Nesma autumn conference 2015 - Is FPA a valuable addition to predictable agil...
PDF
Model-Based Optimization / CP 2018
Tuning the Untunable - Insights on Deep Learning Optimization
Common Problems in Hyperparameter Optimization
Machine Learning Fundamentals
MLOps Using MLflow
Pydata presentation
Pentaho World 2017: Automated Machine Learning (AutoML) and Pentaho (Thursday...
Model-Based Optimization for Effective and Reliable Decision-Making
PyData London 2018 talk on feature selection
Agile Machine Learning for Real-time Recommender Systems
“Houston, we have a model...” Introduction to MLOps
Recent advances on large scheduling problems in CP Optimizer
Shortening the time from analysis to deployment with ml as-a-service — Luiz A...
MLOps - The Assembly Line of ML
Nesma autumn conference 2015 - Is FPA a valuable addition to predictable agil...
Model-Based Optimization / CP 2018
Ad

Similar to Tuning for Systematic Trading: Talk 3: Training, Tuning, and Metric Strategy (20)

PDF
Modeling at Scale: SigOpt at TWIMLcon 2019
PDF
Tuning 2.0: Advanced Optimization Techniques Webinar
PDF
Metric Management: a SigOpt Applied Use Case
PDF
Advanced MLflow: Multi-Step Workflows, Hyperparameter Tuning and Integrating ...
PDF
SigOpt for Machine Learning and AI
PDF
Building successful and secure products with AI and ML
PPTX
CNCF-Istanbul-MLOps for Devops Engineers.pptx
PDF
SigOpt at GTC - Tuning the Untunable
PPSX
Selling commercial Solar +/or Energy Storage solutions? You need GridMAP!
PDF
Building the Ideal Stack for Machine Learning
PPT
principle of six sigma
PDF
How to Run a Cost-Efficient Optimization Program With a Limited Budget
 
PPTX
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
PDF
Failure is an Option: Scaling Resilient Feature Delivery
PPT
Strata CA 2019: From Jupyter to Production Manu Mukerji
PPTX
PureApp Presentation
PDF
How to Lower the Cost of Deploying Analytics: An Introduction to the Portable...
PPT
OTS - Everything you wanted to know but didn't ask
PPT
Design for six_sigma
PPTX
Simulacion luis garciaguzman-21012011
Modeling at Scale: SigOpt at TWIMLcon 2019
Tuning 2.0: Advanced Optimization Techniques Webinar
Metric Management: a SigOpt Applied Use Case
Advanced MLflow: Multi-Step Workflows, Hyperparameter Tuning and Integrating ...
SigOpt for Machine Learning and AI
Building successful and secure products with AI and ML
CNCF-Istanbul-MLOps for Devops Engineers.pptx
SigOpt at GTC - Tuning the Untunable
Selling commercial Solar +/or Energy Storage solutions? You need GridMAP!
Building the Ideal Stack for Machine Learning
principle of six sigma
How to Run a Cost-Efficient Optimization Program With a Limited Budget
 
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
Failure is an Option: Scaling Resilient Feature Delivery
Strata CA 2019: From Jupyter to Production Manu Mukerji
PureApp Presentation
How to Lower the Cost of Deploying Analytics: An Introduction to the Portable...
OTS - Everything you wanted to know but didn't ask
Design for six_sigma
Simulacion luis garciaguzman-21012011
Ad

More from SigOpt (14)

PDF
Optimizing BERT and Natural Language Models with SigOpt Experiment Management
PDF
Experiment Management for the Enterprise
PDF
Efficient NLP by Distilling BERT and Multimetric Optimization
PDF
Detecting COVID-19 Cases with Deep Learning
PDF
Tuning Data Augmentation to Boost Model Performance
PDF
Interactive Tradeoffs Between Competing Offline Metrics with Bayesian Optimiz...
PDF
Machine Learning Infrastructure
PDF
SigOpt at Uber Science Symposium - Exploring the spectrum of black-box optimi...
PDF
Lessons for an enterprise approach to modeling at scale
PDF
SigOpt at MLconf - Reducing Operational Barriers to Model Training
PDF
Machine Learning Infrastructure
PPTX
Tips and techniques for hyperparameter optimization
PDF
MLconf 2017 Seattle Lunch Talk - Using Optimal Learning to tune Deep Learning...
PDF
Using Optimal Learning to Tune Deep Learning Pipelines
Optimizing BERT and Natural Language Models with SigOpt Experiment Management
Experiment Management for the Enterprise
Efficient NLP by Distilling BERT and Multimetric Optimization
Detecting COVID-19 Cases with Deep Learning
Tuning Data Augmentation to Boost Model Performance
Interactive Tradeoffs Between Competing Offline Metrics with Bayesian Optimiz...
Machine Learning Infrastructure
SigOpt at Uber Science Symposium - Exploring the spectrum of black-box optimi...
Lessons for an enterprise approach to modeling at scale
SigOpt at MLconf - Reducing Operational Barriers to Model Training
Machine Learning Infrastructure
Tips and techniques for hyperparameter optimization
MLconf 2017 Seattle Lunch Talk - Using Optimal Learning to tune Deep Learning...
Using Optimal Learning to Tune Deep Learning Pipelines

Recently uploaded (20)

PDF
Electronic commerce courselecture one. Pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
Cloud computing and distributed systems.
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
PDF
Advanced IT Governance
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Network Security Unit 5.pdf for BCA BBA.
Electronic commerce courselecture one. Pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Cloud computing and distributed systems.
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
NewMind AI Monthly Chronicles - July 2025
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
Advanced IT Governance
Per capita expenditure prediction using model stacking based on satellite ima...
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Spectral efficient network and resource selection model in 5G networks
Diabetes mellitus diagnosis method based random forest with bat algorithm
NewMind AI Weekly Chronicles - August'25 Week I
Network Security Unit 5.pdf for BCA BBA.

Tuning for Systematic Trading: Talk 3: Training, Tuning, and Metric Strategy

  • 1. SigOpt. Confidential. Talk #3 Training, Tuning, and Metric Strategy SigOpt Talk Series Tuning for Systematic Trading Tobias Andreasen — Machine Learning Engineer Tuesday, May 19, 2020
  • 2. SigOpt. Confidential. Abstract SigOpt provides an extensive set of advanced features, which help you, the expert, save time while increasing model performance via experimentation. Today, we will continue this talk series by discussing training, tuning, and metric strategies in the context of SigOpt, and use this to come up with a recipe for how this can be used for model experimentation.
  • 4. SigOpt. Confidential. Accelerate and amplify the impact of modelers everywhere
  • 5. SigOpt. Confidential. Experiment Insights Optimization Engine Track, analyze and reproduce any model to improve the productivity of your modeling Enterprise Platform Automate hyperparameter tuning to maximize the performance and impact of your models Standardize experimentation across any combination of library, infrastructure, model or task On-Premise Hybrid/Multi Solution: Experiment, optimize and analyze at scale 5
  • 6. SigOpt. Confidential. SigOpt Features Enterprise Platform Optimization Engine Experiment Insights Reproducibility Intuitive web dashboards Cross-team permissions and collaboration Advanced experiment visualizations Usage insights Parameter importance analysis Multimetric optimization Continuous, categorical, or integer parameters Constraints and failure regions Up to 10k observations, 100 parameters Multitask optimization and high parallelism Training Monitor and Automated Early Stopping Infrastructure agnostic REST API Parallel Resource Scheduler Black-Box Interface Tunes without accessing any data Libraries for Python, Java, R, and MATLAB
  • 8. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases Black Box Optimization Your firewall Training Data AI, ML, DL, Simulation Model Model Evaluation or Backtest Testing Data New Configurations Objective Metric Better Results EXPERIMENT INSIGHTS Track, organize, analyze and reproduce any model ENTERPRISE PLATFORM Built to fit any stack and scale with your needs OPTIMIZATION ENGINE Explore and exploit with a variety of techniques RESTAPI Configuration Parameters or Hyperparameters Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff 8
  • 9. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 9 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff class SIGOPT: APITOKEN = 'PPPPPOJUZPFSAAAAADSSEYPCPNPGGGGGLNLRYKSRBWYZTTFI' CLIENTID = 1 PROJECT = 'quant_series' Creating SigOpt Project SigOpt Access Class
  • 10. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases Your firewall Training Data AI, ML, DL, Simulation Model Model Evaluation or Backtest Testing Data New Configurations Objective Metric Better Results EXPERIMENT INSIGHTS Track, organize, analyze and reproduce any model ENTERPRISE PLATFORM Built to fit any stack and scale with your needs OPTIMIZATION ENGINE Explore and exploit with a variety of techniques RESTAPI Configuration Parameters or Hyperparameters 10 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff Load Data
  • 11. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 11 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff class Data: X, Y = datasets.load_breast_cancer(return_X_y=True) def __init__(self, test_size=0.3): self.x_train, self.x_test, self.y_train, self.y_test = train_test_split( self.X, self.Y, test_size=test_size) def train_data(self,): return [self.x_train, self.y_train] def test_data(self,): return [self.x_test, self.y_test] def num_features(self,): return self.X.shape[1] def num_classes(self,): return len(np.unique(self.Y)) Load Data Data Loader Class
  • 12. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases Your firewall Training Data AI, ML, DL, Simulation Model Model Evaluation or Backtest Testing Data New Configurations Objective Metric Better Results EXPERIMENT INSIGHTS Track, organize, analyze and reproduce any model ENTERPRISE PLATFORM Built to fit any stack and scale with your needs OPTIMIZATION ENGINE Explore and exploit with a variety of techniques RESTAPI Configuration Parameters or Hyperparameters 12 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff Create Evaluation Framework
  • 13. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 13 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff class Evaluation: METRICS = [{'name': 'accuracy', 'objective': 'maximize', 'strategy': 'optimize'}, {'name': 'f1', 'objective': 'maximize', 'strategy': 'store'}, {'name': 'precision', 'objective': 'maximize', 'strategy': 'store'}, {'name': 'recall', 'objective': 'maximize', 'strategy': 'store'}, ] @classmethod def return_object(cls, y): y_true = y[0] y_hat = y[1] # needs to be replaced by data input and score calculations scores = [] scores.append(accuracy_score(y_true, y_hat)) scores.append(f1_score(y_true, y_hat, average='macro')) scores.append(precision_score( y_true, y_hat, average='macro', zero_division=1)) scores.append(recall_score(y_true, y_hat, average='macro')) return [{'name': m['name'], 'value': s} for m, s in zip(cls.METRICS, scores)] Create Evaluation Framework Model Evaluation Class
  • 14. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases Your firewall Training Data AI, ML, DL, Simulation Model Model Evaluation or Backtest Testing Data New Configurations Objective Metric Better Results EXPERIMENT INSIGHTS Track, organize, analyze and reproduce any model ENTERPRISE PLATFORM Built to fit any stack and scale with your needs OPTIMIZATION ENGINE Explore and exploit with a variety of techniques RESTAPI Configuration Parameters or Hyperparameters 14 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff Create Model
  • 15. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 15 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff class LogisticRegression: NAME = 'Logistic Regression' BUDGET = 10 PARAMETERS = [{'name': 'log_c', 'type': 'double', 'bounds': {'min': -11, 'max': 0}, 'grid': BUDGET}] def __init__(self, assignment): c = np.exp(assignment['log_c']) self.model = LogisticRegression(C=c) self.y_hat = None self.y_true = None def train(self, data): x = data[0] y = data[1] self.model.fit(x, y) def test(self, data): x = data[0] y = data[1] self.y_hat = self.model.predict(x) self.y_true = y def evaluate(self,): return [self.y_true, self.y_hat] Create Model Baseline Model Class
  • 16. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases Your firewall Training Data AI, ML, DL, Simulation Model Model Evaluation or Backtest Testing Data New Configurations Objective Metric Better Results EXPERIMENT INSIGHTS Track, organize, analyze and reproduce any model ENTERPRISE PLATFORM Built to fit any stack and scale with your needs OPTIMIZATION ENGINE Explore and exploit with a variety of techniques RESTAPI Configuration Parameters or Hyperparameters 16 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff Optimization Loop
  • 17. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 17 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff conn = Connection(client_token=SIGOPT.APITOKEN) experiment_meta = { 'type': 'grid', 'project': SIGOPT.PROJECT, 'name': Model.NAME, 'parameters': Model.PARAMETERS, 'metrics': Evaluation.METRICS} experiment = conn.experiments().create(**experiment_meta) while experiment.progress.observation_count < experiment.observation_budget: suggestion = conn.experiments(experiment.id).suggestions().create() model = Model(suggestion.assignments) model.train(data.train_data()) model.test(data.test_data()) conn.experiments(experiment.id).observations().create( suggestion=suggestion.id, values=Evaluation.return_object(model.evaluate()),) experiment = conn.experiments(experiment.id).fetch() Optimization Loop Experiment Create Call Optimization Loop
  • 18. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 18 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff conn = Connection(client_token=SIGOPT.APITOKEN) experiment_meta = { 'type': 'grid', 'project': SIGOPT.PROJECT, 'name': Model.NAME, 'parameters': Model.PARAMETERS, 'metrics': Evaluation.METRICS} experiment = conn.experiments().create(**experiment_meta) while experiment.progress.observation_count < experiment.observation_budget: suggestion = conn.experiments(experiment.id).suggestions().create() model = Model(suggestion.assignments) model.train(data.train_data()) model.test(data.test_data()) conn.experiments(experiment.id).observations().create( suggestion=suggestion.id, values=Evaluation.return_object(model.evaluate()),) experiment = conn.experiments(experiment.id).fetch() Optimization Loop Experiment Create Call Optimization Loop
  • 19. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 19 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff conn = Connection(client_token=SIGOPT.APITOKEN) experiment_meta = { 'type': 'grid', 'project': SIGOPT.PROJECT, 'name': Model.NAME, 'parameters': Model.PARAMETERS, 'metrics': Evaluation.METRICS} experiment = conn.experiments().create(**experiment_meta) while experiment.progress.observation_count < experiment.observation_budget: suggestion = conn.experiments(experiment.id).suggestions().create() model = Model(suggestion.assignments) model.train(data.train_data()) model.test(data.test_data()) conn.experiments(experiment.id).observations().create( suggestion=suggestion.id, values=Evaluation.return_object(model.evaluate()),) experiment = conn.experiments(experiment.id).fetch() Optimization Loop Experiment Create Call Optimization Loop
  • 20. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 20 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff Metric Strategy - Storing up to 50 non-optimized metrics - Gain insights through additional model information Objective - Storing business specific metrics to drive the best decisions - Hit business targets through modeling Adding Metrics
  • 21. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 21 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff Adding Metrics
  • 22. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 22 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff Investigating Metrics
  • 23. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 23 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff Investigating Metrics
  • 24. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 24 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff Metric Constraints - Guardrail your modeling by applying constraints to non-optimized metrics Objective - Use business requirements as constraints for your modeling - Maximize modeling impact Adding Metric Constraints
  • 25. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 25 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff Adding Metric Constraints
  • 26. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases Your firewall Training Data AI, ML, DL, Simulation Model Model Evaluation or Backtest Testing Data New Configurations Objective Metric Better Results EXPERIMENT INSIGHTS Track, organize, analyze and reproduce any model ENTERPRISE PLATFORM Built to fit any stack and scale with your needs OPTIMIZATION ENGINE Explore and exploit with a variety of techniques RESTAPI Configuration Parameters or Hyperparameters 26 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff Create Model
  • 27. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 27 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff class NeuralNetwork: NAME = 'Neural Network' BUDGET = 30 EPOCHS = 40 MAXCHECKPOINTS = {'max_checkpoints': EPOCHS, } NUMFEATURES = None NUMCLASSES = None PARAMETERS = [{'name': 'num_nodes', 'type': 'int', 'bounds': {'min': 4, 'max': 40}}, {'name': 'log_learning_rate', 'type': 'double', 'bounds': {'min': -11, 'max': 0}}, {'name': 'batch_size', 'type': 'int', 'bounds': {'min': 4, 'max': 10}}] def __init__(self, assignment): self.num_nodes = assignment['num_nodes'] self.learning_rate = np.exp(assignment['log_learning_rate']) self.batch_size = assignment['batch_size'] self.model = keras.Sequential( [layers.Dense(self.num_nodes, activation='relu', input_shape=(self.NUMFEATURES,)), layers.Dense(self.NUMCLASSES, activation='softmax'), ]) opt = keras.optimizers.Adam(learning_rate=self.learning_rate) self.model.compile( loss='sparse_categorical_crossentropy', optimizer=opt) Create Model Advanced Model Class
  • 28. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases Your firewall Training Data AI, ML, DL, Simulation Model Model Evaluation or Backtest Testing Data New Configurations Objective Metric Better Results EXPERIMENT INSIGHTS Track, organize, analyze and reproduce any model ENTERPRISE PLATFORM Built to fit any stack and scale with your needs OPTIMIZATION ENGINE Explore and exploit with a variety of techniques RESTAPI Configuration Parameters or Hyperparameters 28 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff Optimization Loop
  • 29. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 29 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff conn = Connection(client_token=SIGOPT.APITOKEN) experiment_meta = { 'project': SIGOPT.PROJECT, 'name': Model.NAME, 'parameters': Model.PARAMETERS, 'observation_budget': Model.BUDGET, 'training_monitor': Model.MAXCHECKPOINTS, 'metrics': Evaluation.METRICS,} experiment = conn.experiments().create(**experiment_meta) while experiment.progress.observation_count < experiment.observation_budget: suggestion = conn.experiments(experiment.id).suggestions().create() model = Model(suggestion.assignments) training_run = conn.experiments( experiment.id).training_runs().create(suggestion=suggestion.id) for _ in range(model.EPOCHS): model.train(data.train_data()) model.test(data.test_data()) checkpoint = conn.experiments(experiment.id).training_runs( training_run.id).checkpoints().create(values=Evaluation.return_object(model.evaluate()),) Optimization Loop Experiment Create Call Optimization Loop with Training Monitor
  • 30. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 30 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff conn = Connection(client_token=SIGOPT.APITOKEN) experiment_meta = { 'project': SIGOPT.PROJECT, 'name': Model.NAME, 'parameters': Model.PARAMETERS, 'observation_budget': Model.BUDGET, 'training_monitor': Model.MAXCHECKPOINTS, 'metrics': Evaluation.METRICS,} experiment = conn.experiments().create(**experiment_meta) while experiment.progress.observation_count < experiment.observation_budget: suggestion = conn.experiments(experiment.id).suggestions().create() model = Model(suggestion.assignments) training_run = conn.experiments( experiment.id).training_runs().create(suggestion=suggestion.id) for _ in range(model.EPOCHS): model.train(data.train_data()) model.test(data.test_data()) checkpoint = conn.experiments(experiment.id).training_runs( training_run.id).checkpoints().create(values=Evaluation.return_object(model.evaluate()),) Optimization Loop Experiment Create Call Optimization Loop with Training Monitor
  • 31. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases Optimization Loop with Training Monitor 31 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff conn = Connection(client_token=SIGOPT.APITOKEN) experiment_meta = { 'project': SIGOPT.PROJECT, 'name': Model.NAME, 'parameters': Model.PARAMETERS, 'observation_budget': Model.BUDGET, 'training_monitor': Model.MAXCHECKPOINTS, 'metrics': Evaluation.METRICS,} experiment = conn.experiments().create(**experiment_meta) while experiment.progress.observation_count < experiment.observation_budget: suggestion = conn.experiments(experiment.id).suggestions().create() model = Model(suggestion.assignments) training_run = conn.experiments( experiment.id).training_runs().create(suggestion=suggestion.id) for _ in range(model.EPOCHS): model.train(data.train_data()) model.test(data.test_data()) checkpoint = conn.experiments(experiment.id).training_runs( training_run.id).checkpoints().create(values=Evaluation.return_object(model.evaluate()),) Optimization Loop Experiment Create Call
  • 32. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 32 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff Training Monitor - Monitor convergence for better model performance - Increase generalization by seeing best convergence Objective - Decide on the best model for production by performance as well as convergence Looking at Convergence
  • 33. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 33 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff Looking at Convergence
  • 34. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 34 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff while experiment.progress.observation_count < experiment.observation_budget: suggestion = conn.experiments(experiment.id).suggestions().create() model = Model(suggestion.assignments) training_run = conn.experiments( experiment.id).training_runs().create(suggestion=suggestion.id) for _ in range(model.EPOCHS): model.train(data.train_data()) model.test(data.test_data()) checkpoint = conn.experiments(experiment.id).training_runs( training_run.id).checkpoints().create(values=Evaluation.return_object(model.evaluate()),) if checkpoint.should_stop: conn.experiments(experiment.id).observations().create( training_run=training_run.id) break Looking at Convergence Optimization Loop with Training Monitor and Early Stopping
  • 35. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 35 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff while experiment.progress.observation_count < experiment.observation_budget: suggestion = conn.experiments(experiment.id).suggestions().create() model = Model(suggestion.assignments) training_run = conn.experiments( experiment.id).training_runs().create(suggestion=suggestion.id) for _ in range(model.EPOCHS): model.train(data.train_data()) model.test(data.test_data()) checkpoint = conn.experiments(experiment.id).training_runs( training_run.id).checkpoints().create(values=Evaluation.return_object(model.evaluate()),) if checkpoint.should_stop: conn.experiments(experiment.id).observations().create( training_run=training_run.id) break Looking at Convergence Optimization Loop with Training Monitor and Early Stopping
  • 36. SigOpt. Confidential.SigOpt. Confidential. Key Use Cases 36 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff class SIGOPT: APITOKEN = 'DBOKLMJUZPFSYYCCEDSSEYPNPNPPLOWHLNLRYKSRBDYZIIFI' CLIENTID = 1 PROJECT = 'quant_series' Finishing up Project SigOpt Access Class
  • 37. SigOpt. Confidential.SigOpt. Confidential. Key Use Casesclass SIGOPT: APITOKEN = 'DBOKLMJUZPFSYYCCEDSSEYPNPNPPLOWHLNLRYKSRBDYZIIFI' CLIENTID = 1 PROJECT = 'quant_series' 37 Experimentation Recipe: Project Hygiene Data Handling Evaluation Strategy Baseline Modeling Metric Strategy Advanced Modeling Optimization Feedback Loop - Convergence - Early Stopping Project Handoff Finishing up Project SigOpt Access Class
  • 38. SigOpt. Confidential. Tobias Andreasen | tobias@sigopt.com For more information visit: https://sigopt.com/research/ Questions?