Uncertainty Quantification 360 (UQ360) est une boîte à outils open source avec un package Python permettant aux praticiens et aux développeurs de la science des données d'accéder à des algorithmes de pointe, afin de rationaliser le processus d'estimation, d'évaluation, d'amélioration et de communication de l'incertitude de les modèles d’apprentissage automatique comme pratiques courantes pour la transparence de l’IA. L'expérience interactive UQ360 fournit une introduction douce aux concepts et aux fonctionnalités en parcourant un exemple de cas d'utilisation. Les didacticiels et les exemples de cahiers offrent une introduction plus approfondie et orientée vers les data scientists. L'API complète est également disponible.
Nous avons développé le package en gardant à l'esprit l'extensibilité. Cette bibliothèque est toujours en développement. Nous encourageons la contribution de vos algorithmes, métriques et applications d’estimation de l’incertitude. Pour commencer en tant que contributeur, veuillez rejoindre le canal #uq360-users ou #uq360-developers de la communauté AIF360 sur Slack en demandant une invitation ici.
Utilisation de méta-modèles pour augmenter le régresseur boosté par gradient de Sklearn avec un intervalle de prédiction. Voir un exemple détaillé ici.
from sklearn . ensemble import GradientBoostingRegressor
from sklearn . datasets import make_regression
from sklearn . model_selection import train_test_split
from uq360 . algorithms . blackbox_metamodel import MetamodelRegression
# Create train, calibration and test splits.
X , y = make_regression ( random_state = 0 )
X_train , X_test , y_train , y_test = train_test_split ( X , y , random_state = 0 )
X_train , X_calibration , y_train , y_calibration = train_test_split ( X_train , y_train , random_state = 0 )
# Train the base model that provides the mean estimates.
gbr_reg = GradientBoostingRegressor ( random_state = 0 )
gbr_reg . fit ( X_train , y_train )
# Train the meta-model that can augment the mean prediction with prediction intervals.
uq_model = MetamodelRegression ( base_model = gbr_reg )
uq_model . fit ( X_calibration , y_calibration , base_is_prefitted = True )
# Obtain mean estimates and prediction interval on the test data.
y_hat , y_hat_lb , y_hat_ub = uq_model . predict ( X_test )
Le score de probabilité de couverture de l'intervalle de prédiction (PICP) est utilisé ici comme mesure pour sélectionner le modèle par validation croisée. Voir un exemple détaillé ici.
from sklearn . datasets import make_regression
from sklearn . model_selection import train_test_split
from sklearn . model_selection import GridSearchCV
from uq360 . utils . misc import make_sklearn_compatible_scorer
from uq360 . algorithms . quantile_regression import QuantileRegression
# Create a sklearn scorer using UQ360 PICP metric.
sklearn_picp = make_sklearn_compatible_scorer (
task_type = "regression" ,
metric = "picp" , greater_is_better = True )
# Hyper-parameters configuration using GridSearchCV.
base_config = { "alpha" : 0.95 , "n_estimators" : 20 , "max_depth" : 3 ,
"learning_rate" : 0.01 , "min_samples_leaf" : 10 ,
"min_samples_split" : 10 }
configs = { "config" : []}
for num_estimators in [ 1 , 2 , 5 , 10 , 20 , 30 , 40 , 50 ]:
config = base_config . copy ()
config [ "n_estimators" ] = num_estimators
configs [ "config" ]. append ( config )
# Create train test split.
X , y = make_regression ( random_state = 0 )
X_train , X_test , y_train , y_test = train_test_split ( X , y , random_state = 0 )
# Initialize QuantileRegression UQ360 model and wrap it in GridSearchCV with PICP as the scoring function.
uq_model = GridSearchCV (
QuantileRegression ( config = base_config ), configs , scoring = sklearn_picp )
# Fit the model on the training set.
uq_model . fit ( X_train , y_train )
# Obtain the prediction intervals for the test set.
y_hat , y_hat_lb , y_hat_ub = uq_model . predict ( X_test )
Configurations prises en charge :
Système d'exploitation | Version Python |
---|---|
macOS | 3.7 |
Ubuntu | 3.7 |
Fenêtres | 3.7 |
Un gestionnaire d'environnement virtuel est fortement recommandé pour garantir que les dépendances peuvent être installées en toute sécurité. Si vous rencontrez des difficultés pour installer la boîte à outils, essayez d'abord ceci.
Conda est recommandé pour toutes les configurations bien que Virtualenv soit généralement interchangeable pour nos besoins. Miniconda est suffisant (voir la différence entre Anaconda et Miniconda si vous êtes curieux) et peut être installé à partir d'ici si vous ne l'avez pas déjà.
Ensuite, pour créer un nouvel environnement Python 3.7, exécutez :
conda create --name uq360 python=3.7
conda activate uq360
Le shell devrait maintenant ressembler à (uq360) $
. Pour désactiver l'environnement, exécutez :
(uq360)$ conda deactivate
L'invite reviendra à $
ou (base)$
.
Remarque : les anciennes versions de conda peuvent utiliser source activate uq360
et source deactivate
( activate uq360
et deactivate
sous Windows).
Clonez la dernière version de ce dépôt :
(uq360)$ git clone https://github.ibm.com/UQ360/UQ360
Si vous souhaitez exécuter les exemples et les blocs-notes du didacticiel, téléchargez les ensembles de données maintenant et placez-les dans leurs dossiers respectifs, comme décrit dans uq360/data/README.md.
Ensuite, accédez au répertoire racine du projet qui contient le fichier setup.py
et exécutez :
(uq360)$ pip install -e .
Si vous souhaitez commencer rapidement à utiliser la boîte à outils UQ360 sans cloner ce référentiel, vous pouvez installer le package pypi uq360 comme suit.
(your environment)$ pip install uq360
Si vous suivez cette approche, vous devrez peut-être télécharger séparément les blocs-notes dans le dossier des exemples.
Le répertoire examples
contient une collection diversifiée de notebooks Jupyter qui utilisent UQ360 de différentes manières. Les exemples et les cahiers de didacticiels illustrent le code de travail à l’aide de la boîte à outils. Les didacticiels fournissent des discussions supplémentaires qui guident l'utilisateur à travers les différentes étapes du bloc-notes. Voir les détails sur les didacticiels et les exemples ici.
Une description technique de l'UQ360 est disponible dans cet article. Vous trouverez ci-dessous l'entrée bibtex de cet article.
@misc{uq360-june-2021,
title={Uncertainty Quantification 360: A Holistic Toolkit for Quantifying
and Communicating the Uncertainty of AI},
author={Soumya Ghosh and Q. Vera Liao and Karthikeyan Natesan Ramamurthy
and Jiri Navratil and Prasanna Sattigeri
and Kush R. Varshney and Yunfeng Zhang},
year={2021},
eprint={2106.01410},
archivePrefix={arXiv},
primaryClass={cs.AI}
}
UQ360 est construit à l'aide de plusieurs packages open source. Tous ces éléments sont répertoriés dans setup.py et certains d'entre eux incluent :
Veuillez consulter le fichier LICENSE présent dans le répertoire racine pour obtenir des informations sur la licence.