O Uncertainty Quantification 360 (UQ360) é um kit de ferramentas de código aberto com um pacote Python para fornecer aos profissionais e desenvolvedores de ciência de dados acesso a algoritmos de última geração, para agilizar o processo de estimativa, avaliação, melhoria e comunicação de incerteza de modelos de aprendizado de máquina como práticas comuns para a transparência da IA. A experiência interativa do UQ360 fornece uma introdução suave aos conceitos e recursos, percorrendo um exemplo de caso de uso. Os tutoriais e cadernos de exemplo oferecem uma introdução mais profunda e orientada para cientistas de dados. A API completa também está disponível.
Desenvolvemos o pacote pensando na extensibilidade. Esta biblioteca ainda está em desenvolvimento. Incentivamos a contribuição de seus algoritmos, métricas e aplicações de estimativa de incerteza. Para começar como colaborador, junte-se ao canal #uq360-users ou #uq360-developers da comunidade AIF360 no Slack solicitando um convite aqui.
Uso de metamodelos para aumentar o regressor aumentado por gradiente do sklearn com intervalo de predição. Veja exemplo detalhado aqui.
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 )
A pontuação de probabilidade de cobertura de intervalo de predição (PICP) é usada aqui como a métrica para selecionar o modelo por meio de validação cruzada. Veja exemplo detalhado aqui.
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 )
Configurações suportadas:
SO | Versão Python |
---|---|
macOS | 3.7 |
Ubuntu | 3.7 |
Windows | 3.7 |
Um gerenciador de ambiente virtual é altamente recomendado para garantir que as dependências possam ser instaladas com segurança. Se você tiver problemas para instalar o kit de ferramentas, tente primeiro.
O Conda é recomendado para todas as configurações, embora o Virtualenv seja geralmente intercambiável para nossos propósitos. Miniconda é suficiente (veja a diferença entre Anaconda e Miniconda se tiver curiosidade) e pode ser instalado aqui caso ainda não o tenha.
Então, para criar um novo ambiente Python 3.7, execute:
conda create --name uq360 python=3.7
conda activate uq360
O shell agora deve se parecer com (uq360) $
. Para desativar o ambiente, execute:
(uq360)$ conda deactivate
O prompt retornará para $
ou (base)$
.
Nota: Versões mais antigas do conda podem usar source activate uq360
e source deactivate
( activate uq360
e deactivate
no Windows).
Clone a versão mais recente deste repositório:
(uq360)$ git clone https://github.ibm.com/UQ360/UQ360
Se desejar executar os exemplos e os cadernos do tutorial, baixe os conjuntos de dados agora e coloque-os em suas respectivas pastas conforme descrito em uq360/data/README.md.
Em seguida, navegue até o diretório raiz do projeto que contém o arquivo setup.py
e execute:
(uq360)$ pip install -e .
Se desejar começar a usar rapidamente o kit de ferramentas UQ360 sem clonar este repositório, você pode instalar o pacote uq360 pypi da seguinte maneira.
(your environment)$ pip install uq360
Se você seguir essa abordagem, talvez seja necessário baixar os notebooks na pasta de exemplos separadamente.
O diretório examples
contém uma coleção diversificada de notebooks Jupyter que usam o UQ360 de várias maneiras. Os exemplos e os cadernos do tutorial ilustram o código funcional usando o kit de ferramentas. Os tutoriais fornecem discussões adicionais que orientam o usuário pelas diversas etapas do notebook. Veja os detalhes sobre tutoriais e exemplos aqui.
Uma descrição técnica do UQ360 está disponível neste artigo. Abaixo está a entrada do bibtex para este artigo.
@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}
}
O UQ360 é construído com a ajuda de vários pacotes de código aberto. Todos eles estão listados em setup.py e alguns deles incluem:
Consulte o arquivo LICENSE presente no diretório raiz para obter informações de licença.