{"id":13783460,"url":"https://github.com/abstract-machine-learning/silva","last_synced_at":"2025-05-11T19:30:53.982Z","repository":{"id":140567654,"uuid":"221413196","full_name":"abstract-machine-learning/silva","owner":"abstract-machine-learning","description":"Silvarum Interpretatione Lator Valens Analysis - Stability analyzer for tree ensemble calssifiers.","archived":false,"fork":false,"pushed_at":"2023-10-25T09:56:21.000Z","size":201,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-08-03T19:07:52.575Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abstract-machine-learning.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-11-13T08:47:29.000Z","updated_at":"2023-10-25T09:42:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"5bcda318-d69c-4922-b7a9-c2d8a1a6a138","html_url":"https://github.com/abstract-machine-learning/silva","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abstract-machine-learning%2Fsilva","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abstract-machine-learning%2Fsilva/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abstract-machine-learning%2Fsilva/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abstract-machine-learning%2Fsilva/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abstract-machine-learning","download_url":"https://codeload.github.com/abstract-machine-learning/silva/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225086496,"owners_count":17418734,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T19:00:21.879Z","updated_at":"2024-11-17T20:30:33.051Z","avatar_url":"https://github.com/abstract-machine-learning.png","language":"C","readme":"# Silva\nSilva (**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.\n\nGiven 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*.\n\nWhen 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 \u003c 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.\n\nMore information can be found in [Abstract interpretation of decision tree ensemble classifiers](http://www.math.unipd.it/~ranzato/papers/aaai20.pdf).\n\n## Requirements ##\n\n - Any C99-compatible C compiler\n\n## Installation\nTo 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:\n\n    git clone https://github.com/abstract-machine-learning/silva\nor:\n\n    wget https://github.com/abstract-machine-learning/silva/archive/master.zip\n    unzip master.zip\nthen:\n    cd silva/src\n    make\n    make install\nThe executable file will be available under `silva/bin/silva`.\n\nEvery 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:\n\n    cd silva/src\n    make doc\nDocumentation will be available under `silva/doc/html/index.html`.\n\n## Usage\nRun `silva` without arguments for a quick online help message. Full syntax is\n\n    bin/silva \u003cclassifier\u003e \u003cdataset\u003e [options]\nMandatory arguments:\n\n - classifier       Path to classifier file, in silva format\n - dataset          Path to dataset file (CSV or binary)\n\nOptional arguments:\n - --max-print-length VALUE         Maximum number of characters to print for long strings, -1 to disable limit (deafult: 32)\n - --counterexamples \u0026lt;path\u0026gt;        Path to counterexamples file (default: null, no file will be generated)\n - --voting {max | average | softargmax} Voting scheme to use for forests (default: max)\n - --abstraction {interval | hyperrectangle} Abstract domain to use (default: hyperrectangle)\n - --perturbation {l\\_inf} [DATA]    Perturbation to analyse, followed by perturbation-specific options (default: l\\_inf 0)\n - --tiers N VALUE...               Tier list of features\n - --sample-timeout VALUE           Maximum allowed execution time for each sample analysis, in seconds (default: 1)\n - --seed VALUE                     Seed to use for random number generation, reserved for future use (default: 42)\n\nPerturbation-specific options:\n - l\\_inf\n   - magnitude\tRadius of the L\\_inf ball giving the perturbation region\n - from_file\n   - file_name  Path to perturbation file\n\n## Examples\n### Stability Analysis\n    silva my_classifier.silva my_dataset.csv --abstraction hyperrectangle --perturbation l_inf 64\nAnalyses 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.\n\n### Counterexample Search\n    silva my_classifier.silva my_dataset.csv --abstraction hyperrectangle --perturbation l_inf 64 --counterexamples my_output.dat\nRuns 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.\n\n## Data set format\nSee [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).\n","funding_links":[],"categories":["2020"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabstract-machine-learning%2Fsilva","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabstract-machine-learning%2Fsilva","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabstract-machine-learning%2Fsilva/lists"}