Uncertainty Quantification 360 (UQ360) es un conjunto de herramientas de código abierto con un paquete Python para proporcionar a los profesionales y desarrolladores de la ciencia de datos acceso a algoritmos de última generación, para agilizar el proceso de estimación, evaluación, mejora y comunicación de la incertidumbre de Modelos de aprendizaje automático como prácticas comunes para la transparencia de la IA. La experiencia interactiva UQ360 proporciona una suave introducción a los conceptos y capacidades al recorrer un caso de uso de ejemplo. Los tutoriales y cuadernos de ejemplo ofrecen una introducción más profunda y orientada a los científicos de datos. La API completa también está disponible.
Hemos desarrollado el paquete teniendo en cuenta la extensibilidad. Esta biblioteca aún está en desarrollo. Fomentamos la contribución de sus algoritmos, métricas y aplicaciones de estimación de incertidumbre. Para comenzar como colaborador, únase al canal #uq360-users o #uq360-developers de la comunidad AIF360 en Slack solicitando una invitación aquí.
Uso de metamodelos para aumentar el regresor impulsado por gradiente de sklearn con intervalo de predicción. Vea un ejemplo detallado aquí.
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 )
La puntuación de probabilidad de cobertura del intervalo de predicción (PICP) se utiliza aquí como métrica para seleccionar el modelo mediante validación cruzada. Vea un ejemplo detallado aquí.
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 )
Configuraciones admitidas:
SO | Versión de Python |
---|---|
macos | 3.7 |
ubuntu | 3.7 |
ventanas | 3.7 |
Se recomienda encarecidamente un administrador de entorno virtual para garantizar que las dependencias se puedan instalar de forma segura. Si tiene problemas para instalar el kit de herramientas, intente esto primero.
Se recomienda Conda para todas las configuraciones, aunque Virtualenv generalmente es intercambiable para nuestros propósitos. Miniconda es suficiente (vea la diferencia entre Anaconda y Miniconda si tiene curiosidad) y puede instalarse desde aquí si aún no la tiene.
Luego, para crear un nuevo entorno Python 3.7, ejecute:
conda create --name uq360 python=3.7
conda activate uq360
El shell ahora debería verse como (uq360) $
. Para desactivar el entorno, ejecute:
(uq360)$ conda deactivate
El mensaje volverá a $
o (base)$
.
Nota: Las versiones anteriores de conda pueden usar source activate uq360
y source deactivate
( activate uq360
y deactivate
en Windows).
Clona la última versión de este repositorio:
(uq360)$ git clone https://github.ibm.com/UQ360/UQ360
Si desea ejecutar los ejemplos y los cuadernos de tutoriales, descargue los conjuntos de datos ahora y colóquelos en sus respectivas carpetas como se describe en uq360/data/README.md.
Luego, navegue hasta el directorio raíz del proyecto que contiene el archivo setup.py
y ejecute:
(uq360)$ pip install -e .
Si desea comenzar a utilizar rápidamente el kit de herramientas UQ360 sin clonar este repositorio, puede instalar el paquete pypi uq360 de la siguiente manera.
(your environment)$ pip install uq360
Si sigue este enfoque, es posible que necesite descargar los cuadernos en la carpeta de ejemplos por separado.
El directorio examples
contiene una colección diversa de portátiles jupyter que utilizan UQ360 de diversas formas. Tanto los ejemplos como los cuadernos de tutoriales ilustran el código de trabajo utilizando el kit de herramientas. Los tutoriales proporcionan discusión adicional que guía al usuario a través de los distintos pasos del cuaderno. Vea los detalles sobre tutoriales y ejemplos aquí.
Una descripción técnica de UQ360 está disponible en este documento. A continuación se muestra la entrada bibtex para este artículo.
@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á construido con la ayuda de varios paquetes de código abierto. Todos estos se enumeran en setup.py y algunos de ellos incluyen:
Consulte el archivo LICENCIA presente en el directorio raíz para obtener información sobre la licencia.