Bayesian optimization; sequential design strategy for global optimizationA customer has asked me about a bayesian optimization. Does anyone has asked a similar request from a customer?
In general, Bayesian optimization is a sequential design strategy for global optimization of black-box functions that does not assume any functional forms. This method has been used to tune machine learning models. Bayesian optimization has also been recently applied in the manufacturing industry (for simulation experiments and actual experiments).
My customer wants to select the best candidate experiment for the next run based on the previous experiment's data.
Here is an example of an application for the chemical experiment.
https://www.nature.com/articles/s41586-021-03213-y
I think JMP can create a gaussian process model so that a customer could do some steps in Bayesian optimization in JMP.
Yuichi
Re: Bayesian optimization; sequential design strategy for global optimizationThanks, Yuichi.
It is interesting to see that there is a dedicated commercial software product for this.
I have seen quite a few academic papers about this type of approach. Some of them have provided open source applications based on R or Python. All the approaches that I see in these papers are "robotic" or "algorithmic".
An advantage of using JMP is that the scientist can interactively explore the data at each step to guide the process with their understanding of the domain.
Regards,
Phil
Re: Bayesian optimization; sequential design strategy for global optimizationI talked with a customer today, and they felt they could use JMP for their experiment. For your information, the following product are also candidate software for this purpose.
https://citrine.io/product/what-is-the-citrine-platform/
Thanks,
Yuichi
Re: Bayesian optimization; sequential design strategy for global optimizationThank you, Phil. All information is helpful for me.
I understand the combination of space-filling design and gaussian process model would be a solution for your customer. That makes sense for me.
Thank you for letting me know about your presentation at Discovery Europe. I understand that you and Ryan's approach is the combination of Covariate/Candidate Run capability and XGboost. I think that also works for JMP Pro customers.
I'll suggest those approaches to a customer. If a customer gets a good result, I'll let you know.
Thanks,
Yuichi
Re: Bayesian optimization; sequential design strategy for global optimizationYes, @yuichi_katsumur . I think that a combination of space filling design and gaussian process model would be a solution for your customer.
I think there is increasing interest from customers about this kind of approach, especially in chemistry. Although I don't know any customers that are using JMP for this at the moment.
And I have seen quite a few papers about this, including the paper that you shared.
A customer asked about using this approach for determining the effect of salt concentration on the viscosity of shampoos.
This is the approach that I would suggest:
- You need a starting dataset. In papers that I have read they often start with a random set of data points from the the factor space. But I think that a small space-filling design would be better. Carry out this experiment and record the response for each run.
- Augment the starting dataset with a very large number of runs (say 1000) using space filling. You are not going to run all of these so you can choose a very large number. You now have a data table with a very large number of runs - you have the response for only a few of these.
- Model the response against the factors using gaussian process model. Save Prediction Formula and Save Variance Formula. Now you have the actual response for a small number of runs and the variance and predicted response for all runs.
- From the runs that have not been tested find the run with the greatest variance. Record the actual response for this run.
- Repeat steps 3 and 4 until you have met your objective.
Does that make sense?
I have attached a data table that might help to illustrate. It is based on "2D Gaussian Process Example.jmp" from the sample data folder.
People talk about "exploitation" vs "exploration". The above approach is exploration because we are choosing the next run to explore the most uncertain region of the factor space. Exploitation is where you choose the run that is predicted to have the optimal response (e.g. highest yield). Often people use the approach of starting out with exploration and then at a certain point moving to exploitation.
@Ryan_Lekivetz and myself gave a presentation at Discovery Europe where we were looking at sequential optimisation of a chemical process and at each step you can carry out 48 runs. We compared exploration and exploitation approaches. And we looked at a hybrid approach where, at each step ("round"), an optimal set of runs is chosen from the untested runs that have predicted yield greater than a certain threshold. We increase the threshold at each step. This seemed to be a useful approach.
I hope that all helps. I will be interested to know if your customer tries this approach.
Thanks,
Phil