Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/abstract-machine-learning/silva
Silvarum Interpretatione Lator Valens Analysis - Stability analyzer for tree ensemble calssifiers.
https://github.com/abstract-machine-learning/silva
Last synced: 3 months ago
JSON representation
Silvarum Interpretatione Lator Valens Analysis - Stability analyzer for tree ensemble calssifiers.
- Host: GitHub
- URL: https://github.com/abstract-machine-learning/silva
- Owner: abstract-machine-learning
- License: gpl-3.0
- Created: 2019-11-13T08:47:29.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-10-25T09:56:21.000Z (about 1 year ago)
- Last Synced: 2024-06-30T18:09:30.228Z (4 months ago)
- Language: C
- Homepage:
- Size: 196 KB
- Stars: 8
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-decision-tree-papers - [Code
README
# Silva
Silva (**S**ilvarum **I**nterpretatione **L**ator **V**alens **A**nalysis) is an abstract interpretation based tool for proving properties of tree ensembles classifiers, in particural we aim at proving stability-related properties of classifiers.Given a point *x* and a perturbation *P*, silva symbolically computes an overapproximation of *P(x)*, the region of (possibly infinite) points which corresponds to perturbations of *x*, and runs an abstract version of the forest classifier on it, returning a superset of the labels associated to points in *P(x)*. Whenever such set yelds the same output as the classification ona single point in *P(x)*, the concrete classifier is definitively stable on point *x* for perturbation *P*.
When silva returns more labels, it may happen due to the classifier really being not stable, or because of a loss of precision induced by the abstract process. For forests consisting of univariate hard splits only (i.e. *x_i < k*) and *l_\inf* perturbation silva becomes *complete*: every single label in the output set is guaranteed to be associated to at least one point in *P(x)*, thus no false results can be returned.
More information can be found in [Abstract interpretation of decision tree ensemble classifiers](http://www.math.unipd.it/~ranzato/papers/aaai20.pdf).
## Requirements ##
- Any C99-compatible C compiler
## Installation
To install silva you need to clone or download the source code files from this repository and compile them. There are no additional requirements nor dependencies:git clone https://github.com/abstract-machine-learning/silva
or:wget https://github.com/abstract-machine-learning/silva/archive/master.zip
unzip master.zip
then:
cd silva/src
make
make install
The executable file will be available under `silva/bin/silva`.Every piece of code is documented using [Doxygen](http://www.doxygen.nl/). If you have Doxygen installed and wish to generate the documentation pages (HTML), run:
cd silva/src
make doc
Documentation will be available under `silva/doc/html/index.html`.## Usage
Run `silva` without arguments for a quick online help message. Full syntax isbin/silva [options]
Mandatory arguments:- classifier Path to classifier file, in silva format
- dataset Path to dataset file (CSV or binary)Optional arguments:
- --max-print-length VALUE Maximum number of characters to print for long strings, -1 to disable limit (deafult: 32)
- --counterexamples <path> Path to counterexamples file (default: null, no file will be generated)
- --voting {max | average | softargmax} Voting scheme to use for forests (default: max)
- --abstraction {interval | hyperrectangle} Abstract domain to use (default: hyperrectangle)
- --perturbation {l\_inf} [DATA] Perturbation to analyse, followed by perturbation-specific options (default: l\_inf 0)
- --tiers N VALUE... Tier list of features
- --sample-timeout VALUE Maximum allowed execution time for each sample analysis, in seconds (default: 1)
- --seed VALUE Seed to use for random number generation, reserved for future use (default: 42)Perturbation-specific options:
- l\_inf
- magnitude Radius of the L\_inf ball giving the perturbation region
- from_file
- file_name Path to perturbation file## Examples
### Stability Analysis
silva my_classifier.silva my_dataset.csv --abstraction hyperrectangle --perturbation l_inf 64
Analyses classifier "my\_classifier.silva" using "my\_dataset.csv", adversarial region is generated by an L_\inf ball with radius 64, analysis is performed using hyperrectangles.### Counterexample Search
silva my_classifier.silva my_dataset.csv --abstraction hyperrectangle --perturbation l_inf 64 --counterexamples my_output.dat
Runs the same analysis as the previous example, and also exports creates a file named `my_output.dat` containing one adversaria hyperrectangle for each sample marked as unstable.## Data set format
See [dedicated section on our data-collection repository](https://github.com/abstract-machine-learning/data-collection#dataset-format), from which you can also download some ready-to-use [datasets](https://github.com/svm-abstract-verifier/data-collection/tree/master/datasets) and [models](https://github.com/abstract-machine-learning/data-collection/tree/master/models).