hypershap 0.0.2__tar.gz → 0.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hypershap-0.0.3/CHANGELOG.md +20 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/PKG-INFO +13 -13
- {hypershap-0.0.2 → hypershap-0.0.3}/README.md +12 -12
- hypershap-0.0.3/docs/api/games.md +2 -0
- hypershap-0.0.3/docs/api/hypershap.md +2 -0
- hypershap-0.0.3/docs/api/surrogate_model.md +2 -0
- hypershap-0.0.3/docs/api/task.md +2 -0
- hypershap-0.0.3/docs/api/utils.md +2 -0
- hypershap-0.0.3/docs/authors.md +9 -0
- hypershap-0.0.3/docs/cite.md +25 -0
- hypershap-0.0.3/docs/contribute.md +126 -0
- hypershap-0.0.3/docs/getting_started.md +48 -0
- hypershap-0.0.3/docs/help.md +7 -0
- hypershap-0.0.3/docs/index.md +34 -0
- hypershap-0.0.3/docs/license.md +8 -0
- hypershap-0.0.3/examples/carps-benchmark-example.ipynb +308 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/mkdocs.yml +14 -1
- {hypershap-0.0.2 → hypershap-0.0.3}/pyproject.toml +6 -2
- {hypershap-0.0.2 → hypershap-0.0.3}/src/hypershap/games/__init__.py +4 -1
- {hypershap-0.0.2 → hypershap-0.0.3}/src/hypershap/games/ablation.py +49 -2
- hypershap-0.0.3/src/hypershap/games/multi_data.py +63 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/src/hypershap/games/tunability.py +10 -10
- {hypershap-0.0.2 → hypershap-0.0.3}/src/hypershap/hypershap.py +236 -13
- {hypershap-0.0.2 → hypershap-0.0.3}/src/hypershap/surrogate_model.py +0 -30
- {hypershap-0.0.2 → hypershap-0.0.3}/src/hypershap/task.py +150 -18
- {hypershap-0.0.2 → hypershap-0.0.3}/src/hypershap/utils.py +29 -30
- {hypershap-0.0.2 → hypershap-0.0.3}/tests/conftest.py +2 -0
- hypershap-0.0.3/tests/fixtures/large_setup.py +76 -0
- hypershap-0.0.3/tests/fixtures/multi_data_setup.py +45 -0
- hypershap-0.0.3/tests/test_extended_settings.py +66 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/tests/test_games.py +5 -5
- {hypershap-0.0.2 → hypershap-0.0.3}/tests/test_hypershap.py +73 -18
- {hypershap-0.0.2 → hypershap-0.0.3}/tests/test_task.py +108 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/tests/test_utils.py +16 -36
- {hypershap-0.0.2 → hypershap-0.0.3}/uv.lock +2618 -17
- hypershap-0.0.2/CHANGELOG.md +0 -14
- hypershap-0.0.2/docs/index.md +0 -8
- hypershap-0.0.2/docs/modules.md +0 -16
- {hypershap-0.0.2 → hypershap-0.0.3}/.devcontainer/devcontainer.json +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/.devcontainer/postCreateCommand.sh +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/.github/actions/setup-python-env/action.yml +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/.github/workflows/main.yml +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/.github/workflows/on-release-main.yml +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/.github/workflows/validate-codecov-config.yml +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/.gitignore +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/.pre-commit-config.yaml +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/CONTRIBUTING.md +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/LICENSE +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/Makefile +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/codecov.yaml +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/examples/ablation-example.ipynb +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/examples/explanation-task-example.ipynb +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/examples/optimizerbias-example.ipynb +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/examples/tunability-example.ipynb +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/src/hypershap/__init__.py +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/src/hypershap/games/abstract.py +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/src/hypershap/games/optimizerbias.py +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/tests/__init__.py +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/tests/fixtures/__init__.py +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/tests/fixtures/simple_setup.py +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/tests/test_ablation_game.py +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/tests/test_surrogate_model.py +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/tests/test_tunability_game.py +0 -0
- {hypershap-0.0.2 → hypershap-0.0.3}/tox.ini +0 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# v0.0.3
|
|
2
|
+
- Added multi-baseline ablation game. This game computes ablation paths with respect to multiple baseline configurations and aggregates values for different paths via mean, min, max or variance.
|
|
3
|
+
- Added waterfall plots to the HyperSHAP interface.
|
|
4
|
+
- Added support for multi-data settings
|
|
5
|
+
- Enabled approximation of Shapley values and interactions for settings exceeding a certain number of hyperparameters.
|
|
6
|
+
|
|
7
|
+
# v0.0.2
|
|
8
|
+
- Added parallelization for faster analysis
|
|
9
|
+
|
|
10
|
+
## Maintenance
|
|
11
|
+
- Added unit tests for proper quality assurance and continuous integration
|
|
12
|
+
- Relaxed requirements to allow interoperability with python 3.10
|
|
13
|
+
|
|
14
|
+
# v0.0.1
|
|
15
|
+
- Initial implementation of HyperSHAP and its explanation games:
|
|
16
|
+
- AblationGame
|
|
17
|
+
- TunabilityGame
|
|
18
|
+
- MistunabilityGame
|
|
19
|
+
- SensitivityGame
|
|
20
|
+
- OptimizerBiasGame
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hypershap
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.3
|
|
4
4
|
Summary: HyperSHAP is a post-hoc explanation method for hyperparameter optimization.
|
|
5
5
|
Project-URL: Homepage, https://automl.github.io/hypershap/
|
|
6
6
|
Project-URL: Repository, https://github.com/automl/hypershap
|
|
@@ -100,14 +100,14 @@ The example demonstrates how to:
|
|
|
100
100
|
|
|
101
101
|
## API Overview
|
|
102
102
|
|
|
103
|
-
| Method | Purpose
|
|
104
|
-
|
|
105
|
-
| `HyperSHAP(explanation_task)` |
|
|
103
|
+
| Method | Purpose | Key Arguments |
|
|
104
|
+
|--------|-----------------------------------------------------------------------------------------------------------------------------------|---------------|
|
|
105
|
+
| `HyperSHAP(explanation_task)` | Initialize the explainer with a generic `ExplanationTask`. |
|
|
106
106
|
| `ablation(config_of_interest, baseline_config, index="FSII", order=2)` | Explain the contribution of each hyperparameter value (and interactions) when moving from a baseline to a specific configuration. |
|
|
107
|
-
| `tunability(baseline_config=None, index="FSII", order=2, n_samples=10_000)` | Quantify how much performance can be gained by tuning subsets of hyper‑parameters.
|
|
108
|
-
| `optimizer_bias(optimizer_of_interest, optimizer_ensemble, index="FSII", order=2)` | Attribute performance differences to a particular optimizer vs. an ensemble of optimizers.
|
|
109
|
-
| `plot_si_graph(interaction_values=None, save_path=None)` | Plot the Shapley Interaction (SI) graph; uses the most recent interaction values if none are supplied.
|
|
110
|
-
| `ExplanationTask.get_hyperparameter_names()` | Helper to retrieve ordered hyper‑parameter names (used for visualisation).
|
|
107
|
+
| `tunability(baseline_config=None, index="FSII", order=2, n_samples=10_000)` | Quantify how much performance can be gained by tuning subsets of hyper‑parameters. |
|
|
108
|
+
| `optimizer_bias(optimizer_of_interest, optimizer_ensemble, index="FSII", order=2)` | Attribute performance differences to a particular optimizer vs. an ensemble of optimizers. |
|
|
109
|
+
| `plot_si_graph(interaction_values=None, save_path=None)` | Plot the Shapley Interaction (SI) graph; uses the most recent interaction values if none are supplied. |
|
|
110
|
+
| `ExplanationTask.get_hyperparameter_names()` | Helper to retrieve ordered hyper‑parameter names (used for visualisation). |
|
|
111
111
|
|
|
112
112
|
All methods return an `InteractionValues` object (from **shapiq**) that can be inspected, saved, or passed to the visualisation routine.
|
|
113
113
|
|
|
@@ -147,11 +147,11 @@ The paper introduces the underlying game-theoretic framework and demonstrates it
|
|
|
147
147
|
|
|
148
148
|
Contributions are welcome! Please follow these steps:
|
|
149
149
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
150
|
+
1. Fork the repo and create a feature branch (git checkout -b feat/your-feature).
|
|
151
|
+
2. Write tests (the project uses pytest).
|
|
152
|
+
3. Ensure all tests pass (pytest).
|
|
153
|
+
4. Update documentation if you add new functionality.
|
|
154
|
+
5. Submit a Pull Request with a clear description of the changes.
|
|
155
155
|
|
|
156
156
|
|
|
157
157
|
See CONTRIBUTING.md for detailed guidelines.
|
|
@@ -74,14 +74,14 @@ The example demonstrates how to:
|
|
|
74
74
|
|
|
75
75
|
## API Overview
|
|
76
76
|
|
|
77
|
-
| Method | Purpose
|
|
78
|
-
|
|
79
|
-
| `HyperSHAP(explanation_task)` |
|
|
77
|
+
| Method | Purpose | Key Arguments |
|
|
78
|
+
|--------|-----------------------------------------------------------------------------------------------------------------------------------|---------------|
|
|
79
|
+
| `HyperSHAP(explanation_task)` | Initialize the explainer with a generic `ExplanationTask`. |
|
|
80
80
|
| `ablation(config_of_interest, baseline_config, index="FSII", order=2)` | Explain the contribution of each hyperparameter value (and interactions) when moving from a baseline to a specific configuration. |
|
|
81
|
-
| `tunability(baseline_config=None, index="FSII", order=2, n_samples=10_000)` | Quantify how much performance can be gained by tuning subsets of hyper‑parameters.
|
|
82
|
-
| `optimizer_bias(optimizer_of_interest, optimizer_ensemble, index="FSII", order=2)` | Attribute performance differences to a particular optimizer vs. an ensemble of optimizers.
|
|
83
|
-
| `plot_si_graph(interaction_values=None, save_path=None)` | Plot the Shapley Interaction (SI) graph; uses the most recent interaction values if none are supplied.
|
|
84
|
-
| `ExplanationTask.get_hyperparameter_names()` | Helper to retrieve ordered hyper‑parameter names (used for visualisation).
|
|
81
|
+
| `tunability(baseline_config=None, index="FSII", order=2, n_samples=10_000)` | Quantify how much performance can be gained by tuning subsets of hyper‑parameters. |
|
|
82
|
+
| `optimizer_bias(optimizer_of_interest, optimizer_ensemble, index="FSII", order=2)` | Attribute performance differences to a particular optimizer vs. an ensemble of optimizers. |
|
|
83
|
+
| `plot_si_graph(interaction_values=None, save_path=None)` | Plot the Shapley Interaction (SI) graph; uses the most recent interaction values if none are supplied. |
|
|
84
|
+
| `ExplanationTask.get_hyperparameter_names()` | Helper to retrieve ordered hyper‑parameter names (used for visualisation). |
|
|
85
85
|
|
|
86
86
|
All methods return an `InteractionValues` object (from **shapiq**) that can be inspected, saved, or passed to the visualisation routine.
|
|
87
87
|
|
|
@@ -121,11 +121,11 @@ The paper introduces the underlying game-theoretic framework and demonstrates it
|
|
|
121
121
|
|
|
122
122
|
Contributions are welcome! Please follow these steps:
|
|
123
123
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
124
|
+
1. Fork the repo and create a feature branch (git checkout -b feat/your-feature).
|
|
125
|
+
2. Write tests (the project uses pytest).
|
|
126
|
+
3. Ensure all tests pass (pytest).
|
|
127
|
+
4. Update documentation if you add new functionality.
|
|
128
|
+
5. Submit a Pull Request with a clear description of the changes.
|
|
129
129
|
|
|
130
130
|
|
|
131
131
|
See CONTRIBUTING.md for detailed guidelines.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Cite HyperSHAP
|
|
2
|
+
|
|
3
|
+
If you use HyperSHAP in your research, please cite the original paper:
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## Citation String
|
|
7
|
+
Wever et al., (2025). HyperSHAP: Shapley Values and Interactions for Hyperparameter Importance. CoRR, abs/2502.01276, https://doi.org/10.48550/ARXIV.2502.01276.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## Bibtex
|
|
11
|
+
```bibtex
|
|
12
|
+
@article{wever-arxiv25,
|
|
13
|
+
author = {Marcel Wever and
|
|
14
|
+
Maximilian Muschalik and
|
|
15
|
+
Fabian Fumagalli and
|
|
16
|
+
Marius Lindauer},
|
|
17
|
+
title = {HyperSHAP: Shapley Values and Interactions for Hyperparameter Importance},
|
|
18
|
+
journal = {CoRR},
|
|
19
|
+
volume = {abs/2502.01276},
|
|
20
|
+
year = {2025},
|
|
21
|
+
doi = {10.48550/ARXIV.2502.01276},
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The paper introduces the underlying game-theoretic framework and demonstrates its usefulness for HPO explainability.
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# How to Contribute
|
|
2
|
+
|
|
3
|
+
Contributions are welcome, and they are greatly appreciated!
|
|
4
|
+
Every little bit helps, and credit will always be given.
|
|
5
|
+
|
|
6
|
+
You can contribute in many ways:
|
|
7
|
+
|
|
8
|
+
# Types of Contributions
|
|
9
|
+
|
|
10
|
+
## Report Bugs
|
|
11
|
+
|
|
12
|
+
Report bugs at https://github.com/automl/HyperSHAP/issues
|
|
13
|
+
|
|
14
|
+
If you are reporting a bug, please include:
|
|
15
|
+
|
|
16
|
+
- Your operating system name and version.
|
|
17
|
+
- Any details about your local setup that might be helpful in troubleshooting.
|
|
18
|
+
- Detailed steps to reproduce the bug.
|
|
19
|
+
|
|
20
|
+
## Fix Bugs
|
|
21
|
+
|
|
22
|
+
Look through the GitHub issues for bugs.
|
|
23
|
+
Anything tagged with "bug" and "help wanted" is open to whoever wants to implement a fix for it.
|
|
24
|
+
|
|
25
|
+
## Implement Features
|
|
26
|
+
|
|
27
|
+
Look through the GitHub issues for features.
|
|
28
|
+
Anything tagged with "enhancement" and "help wanted" is open to whoever wants to implement it.
|
|
29
|
+
|
|
30
|
+
## Write Documentation
|
|
31
|
+
|
|
32
|
+
HyperSHAP could always use more documentation, whether as part of the official docs, in docstrings, or even on the web in blog posts, articles, and such.
|
|
33
|
+
|
|
34
|
+
## Submit Feedback
|
|
35
|
+
|
|
36
|
+
The best way to send feedback is to file an issue at https://github.com/automl/HyperSHAP/issues.
|
|
37
|
+
|
|
38
|
+
If you are proposing a new feature:
|
|
39
|
+
|
|
40
|
+
- Explain in detail how it would work.
|
|
41
|
+
- Keep the scope as narrow as possible, to make it easier to implement.
|
|
42
|
+
- Remember that this is a volunteer-driven project, and that contributions
|
|
43
|
+
are welcome :)
|
|
44
|
+
|
|
45
|
+
# Get Started!
|
|
46
|
+
|
|
47
|
+
Ready to contribute? Here's how to set up `HyperSHAP` for local development.
|
|
48
|
+
Please note this documentation assumes you already have `uv` and `Git` installed and ready to go.
|
|
49
|
+
|
|
50
|
+
1. Fork the `HyperSHAP` repo on GitHub.
|
|
51
|
+
|
|
52
|
+
2. Clone your fork locally:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
cd <directory_in_which_repo_should_be_created>
|
|
56
|
+
git clone git@github.com:YOUR_NAME/HyperSHAP.git
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
3. Now we need to install the environment. Navigate into the directory
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
cd HyperSHAP
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Then, install and activate the environment with:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
uv sync
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
4. Install pre-commit to run linters/formatters at commit time:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
uv run pre-commit install
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
5. Create a branch for local development:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
git checkout -b name-of-your-bugfix-or-feature
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Now you can make your changes locally.
|
|
84
|
+
|
|
85
|
+
6. Don't forget to add test cases for your added functionality to the `tests` directory.
|
|
86
|
+
|
|
87
|
+
7. When you're done making changes, check that your changes pass the formatting tests.
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
make check
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Now, validate that all unit tests are passing:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
make test
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
9. Before raising a pull request you should also run tox.
|
|
100
|
+
This will run the tests across different versions of Python:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
tox
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
This requires you to have multiple versions of python installed.
|
|
107
|
+
This step is also triggered in the CI/CD pipeline, so you could also choose to skip this step locally.
|
|
108
|
+
|
|
109
|
+
10. Commit your changes and push your branch to GitHub:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
git add .
|
|
113
|
+
git commit -m "Your detailed description of your changes."
|
|
114
|
+
git push origin name-of-your-bugfix-or-feature
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
11. Submit a pull request through the GitHub website.
|
|
118
|
+
|
|
119
|
+
# Pull Request Guidelines
|
|
120
|
+
|
|
121
|
+
Before you submit a pull request, check that it meets these guidelines:
|
|
122
|
+
|
|
123
|
+
1. The pull request should include tests.
|
|
124
|
+
|
|
125
|
+
2. If the pull request adds functionality, the docs should be updated.
|
|
126
|
+
Put your new functionality into a function with a docstring, and add the feature to the list in `README.md`.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Getting Started
|
|
2
|
+
|
|
3
|
+
## Installation
|
|
4
|
+
|
|
5
|
+
The `HyperSHAP` package can be easily installed via PyPI:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install hypershap
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Alternatively, one can clone the GitHub repository and install hypershap via the following command:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
make install
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## General Usage
|
|
18
|
+
|
|
19
|
+
Given an existing setup with a ConfigurationSpace from the [ConfigSpace package](https://github.com/automl/ConfigSpace) and black-box function as follows:
|
|
20
|
+
```Python
|
|
21
|
+
from ConfigSpace import ConfigurationSpace, Configuration
|
|
22
|
+
|
|
23
|
+
# ConfigurationSpace describing the hyperparameter space
|
|
24
|
+
cs = ConfigurationSpace()
|
|
25
|
+
...
|
|
26
|
+
|
|
27
|
+
# A black-box function, evaluating ConfigSpace.Configuration objects
|
|
28
|
+
def blackbox_function(cfg: Configuration) -> float:
|
|
29
|
+
...
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
You can use HyperSHAP as follows:
|
|
33
|
+
```Python
|
|
34
|
+
from hypershap import ExplanationTask, HyperSHAP
|
|
35
|
+
|
|
36
|
+
# Instantiate HyperSHAP
|
|
37
|
+
hypershap = HyperSHAP(ExplanationTask.from_function(config_space=cs,function=blackbox_function))
|
|
38
|
+
# Conduct tunability analysis
|
|
39
|
+
hypershap.tunability(baseline_config=cs.get_default_configuration())
|
|
40
|
+
# Plot results as a Shapley Interaction graph
|
|
41
|
+
hypershap.plot_si_graph()
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The example demonstrates how to:
|
|
45
|
+
|
|
46
|
+
1. Wrap a black-box function in an explanation task.
|
|
47
|
+
2. Use `HyperSHAP` to obtain interaction values for the **tunability** game.
|
|
48
|
+
3. Plot the corresponding SI-graph.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Need help?
|
|
2
|
+
|
|
3
|
+
Do you have further questions or a problem with `HyperSHAP` and do not know how to continue?
|
|
4
|
+
|
|
5
|
+
1. Check the [examples](https://github.com/automl/HyperSHAP/tree/main/examples), maybe you can find a suitable solution.
|
|
6
|
+
2. Check the [GitHub issues](https://github.com/automl/hypershap/issues), maybe someone else has been in a similar situation already.
|
|
7
|
+
3. If you could not find anything related, please [create a help issue](https://github.com/automl/hypershap/issues).
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Welcome to HyperSHAP's documentation! <img src="https://raw.githubusercontent.com/automl/hypershap/main/docs/source/_static/logo/hypershap-logo.png" alt="HyperSHAP Logo" align="right" height="200px"/>
|
|
2
|
+
|
|
3
|
+
[](https://img.shields.io/github/v/release/automl/hypershap)
|
|
4
|
+
[](https://github.com/automl/hypershap/actions/workflows/main.yml?query=branch%3Amain)
|
|
5
|
+
[](https://coveralls.io/github/automl/HyperSHAP?branch=dev)
|
|
6
|
+
[](https://img.shields.io/github/commit-activity/m/automl/hypershap)
|
|
7
|
+
[](https://img.shields.io/github/license/automl/hypershap)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
`HyperSHAP` is a framework to explain the outcomes of hyperparameter optimization (HPO) by leveraging cooperative game theory concepts such as Shapley values and interaction indices. It is designed to provide actionable insights into the role and interplay of hyperparameters, thereby reducing the manual effort typically required to interpret HPO results. While its primary audience is researchers and practitioners in machine learning and artificial intelligence, its use is not restricted to these target groups.
|
|
11
|
+
|
|
12
|
+
The analysis of HPO results often involves comparing tuned configurations, assessing hyperparameter importance, and identifying optimizer biases. These tasks are typically performed in an ad-hoc and dataset-specific manner, requiring extensive manual inspection of results. Moreover, existing approaches often lack the ability to systematically capture interactions among hyperparameters or to generalize explanations across datasets and optimizers.
|
|
13
|
+
|
|
14
|
+
`HyperSHAP` addresses these challenges by formulating HPO explanations as cooperative games, where hyperparameters form coalitions whose contributions to performance are quantified. This unified framework enables fine-grained analyses, such as ablation studies, sensitivity attribution, tunability assessment, and optimizer behavior characterization. All computations are naturally parallelizable, making `HyperSHAP` scalable to modern HPO scenarios. By automating and standardizing the generation of interpretable explanations, `HyperSHAP` alleviates much of the overhead in analyzing HPO results and provides practitioners with clear guidance on which hyperparameters to focus on and how optimizers behave across tasks.
|
|
15
|
+
|
|
16
|
+
- **Github repository**: <https://github.com/automl/hypershap/>
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## Features
|
|
20
|
+
- **Additive Shapley decomposition** of any performance metric across hyper‑parameters.
|
|
21
|
+
- **Interaction analysis** via the Faithful Shapley Interaction Index (FSII).
|
|
22
|
+
- Ready‑made explanation tasks for **Ablation**, **Tunability**, and **Optimizer Bias** studies.
|
|
23
|
+
- Integrated **visualisation** (SI‑graph) for interaction effects.
|
|
24
|
+
- Works with any surrogate model that follows the `ExplanationTask` interface.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Acknowledgements
|
|
29
|
+
This work was partially supported by the European Union (ERC, “ixAutoML”, grant no.101041029).
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
**Enjoy exploring your HPO pipelines with HyperSHAP!** 🎉
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# License
|
|
2
|
+
|
|
3
|
+
This program is free software: you can redistribute it and/or modify it under the terms of the 3-clause BSD license
|
|
4
|
+
(please see the [LICENSE](https://github.com/automl/HyperSHAP/blob/main/LICENSE) file).
|
|
5
|
+
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
6
|
+
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
7
|
+
You should have received a copy of the 3-clause BSD license along with this program
|
|
8
|
+
(see [LICENSE](https://github.com/automl/HyperSHAP/blob/main/LICENSE) file). If not, see [BSD-3-Clause license](https://opensource.org/license/BSD-3-Clause).
|