Plotting a partial dependance corner plot (like scikit-optimize)
avivajpeyi opened this issue · 0 comments
Describe the feature you'd like
A potentially useful plot for diagnostics is the partial dependence 'corner' or 'triangle' plot of the model prediction in the various 1d/2d marginal views, as done in the scikit-optimize library
This shows the partial dependence of the model output with the various model input parameters, and may help visualise/diagnose the progress the optimizer.
Describe alternatives you've considered
I've attempted at using corner.py to achieve the above in a hacky approach (by using the GP model mean value as 'weights'):
1. plot_samples = search_space.sample(N)
2. weights, _ = model.predict(plot_samples)
3. corner(plot_samples, weights=weights/max(weights))
![Screenshot 2024-01-11 at 12 43 15 pm](https://private-user-images.githubusercontent.com/15642823/295821621-69dbfabd-81a6-4948-a76e-91220a677b1a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM1MjQ0NTYsIm5iZiI6MTcyMzUyNDE1NiwicGF0aCI6Ii8xNTY0MjgyMy8yOTU4MjE2MjEtNjlkYmZhYmQtODFhNi00OTQ4LWE3NmUtOTEyMjBhNjc3YjFhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODEzVDA0NDIzNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRlYzk3NDk2NTk2NTNmZWZmMTA5YjE5MmVkYWM3NzRmNDE2ZmI1MmE1YzY5ZjY5ZDY4ODgxZjFmZWNlZjdmZmQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.GIFZbzPAonZrN9h4t_7SSqHALDrEaHfTajOI7bTUJ48)
this kindof works, but isn't the ideal solution -- the 2d and 1d contours can be made to be smooth if we plot the partial dependence of the model for each parameter rather than plotting samples weighted by the model output.
Would this be something that could be interesting to add as an 'experimental plottting' feature?