跳转到主要内容

Data-IQ:表征表格数据中具有异质结果的子组

项目描述

Data-IQ:表征表格数据中具有异质结果的子组

Tests Tutorials arXiv License: MIT

image

此存储库包含Data-IQ的实现,这是一个“以数据为中心的AI”框架,用于表征表格数据中具有异质结果的子组。

Data-IQ研究训练动态,特别是研究固有的数据不确定性(随机不确定性),将数据示例表征为以下子组: 容易模糊困难

Data-IQ可以使用任何迭代训练的机器学习模型来表征数据。我们提供了一个使用Data-IQ的接口,它可以与 Pytorch模型 一起使用,以及,SKLearn风格API模型,包括 XGBoost,LightGBM和CatBoost

子组的效用扩展到各种用例。

有关更多详细信息,请阅读我们的[NeurIPS 2022论文](即将提供链接): Data-IQ:表征表格数据中具有异质结果的子组

安装

  1. 克隆存储库
  2. 使用Python 3.7创建一个新的虚拟环境,例如
    virtualenv dataiq_env
  1. 在venv激活后,从存储库目录运行以下命令
  • 运行 Data-IQ 自带数据所需的最小要求
pip install data_iq

或从源代码中运行

pip install .
  • 运行 Data-IQ 测试和教程的完整要求
pip install .[testing]
  1. 将 venv 连接到内核
python -m ipykernel install --user --name=dataiq_env

使用 2 行代码将 Data-IQ 集成到您的项目训练循环中!

image

获取 Data-IQ

  • 选项 1:使用 PyPI 中的包(称为 data_iq)进行安装
pip install data_iq

或从源代码中使用

   python -m pip install -e .
  • 选项 2:从 data_iq 文件夹导入

以下展示了使用神经网络(Pytorch 风格)和 XGBoost(Sklearn 风格)的两种示例。

需要添加到您的训练循环中的 Data-IQ 代码行在注释中以星号突出显示。例如 *** 注释 ***

1. 基于 Pytorch 接口的 Data-IQ 示例(神经网络)

# Import Data-IQ
# Option 1 - if package is installed
from data_iq import DataIQ_Torch

# Option 2 - import from folder
from data_iq.dataiq_class import DataIQ_Torch

# Pytorch data loader here
train_loader = DataLoader(dataset=train_data, batch_size=128, shuffle=True)

# Define Pytorch device
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

# Define Pytorch model
net = Example_NN(input_size=X_train.shape[1], nlabels=len(np.unique(y_train)))
net.to(device)

# *** Initialize Data-IQ [LINE 1] ***
dataiq = DataIQ_Torch(X=X_train, y=y_train, sparse_labels=True)



# Fit Pytorch model [Training loop]
for e in range(1, EPOCHS + 1):
    net.train()

    for X_batch, y_batch in train_loader:
        ### ADD TRAIN LOOP HERE ###


    # *** CALL DATA-IQ on EPOCH END [LINE 2] ***
    dataiq.on_epoch_end(net, device=device)



# *** Access metrics ***
aleatoric_uncertainty = dataiq_xgb.aleatoric
confidence = dataiq_xgb.confidence

2. 基于 Sklearn 风格接口的 Data-IQ 示例(XGBoost)

# Import Data-IQ
# Option 1 - if package is installed
from data_iq import DataIQ_SKLearn

# Option 2 - import from folder
from data_iq.dataiq_class import DataIQ_SKLearn

# Arbitrary data loader - numpy arrays
X_train, X_test, y_train, y_test = load_data()

# *** Initialize Data-IQ [LINE 1] ***
dataiq_xgb = DataIQ_SKLearn(X=X_train, y=y_train)

# Fit XGBoost
clf = xgb.XGBClassifier(n_estimators=10)
clf.fit(X_train, y_train)

for i in range(1, nest):
    # *** Characterize with Data-IQ [LINE 2] ***
    dataiq_xgb.on_epoch_end(clf=clf, iteration=i)

# *** Access metrics ***
aleatoric_uncertainty = dataiq_xgb.aleatoric
confidence = dataiq_xgb.confidence

入门

为了在您的数据上开始使用 Data-IQ,我们提供了两个教程笔记本来展示 Data-IQ 的使用方法。示例包括 Pytorch 风格和 SKLearn 风格(XGBoost、Catboost、LightGBM)模型。

这些笔记本可以在 /tutorial 文件夹中找到。成年开源数据集作为教程中的示例数据集提供,以方便访问。

  1. tutorial_torch_api.ipynb
  • 示例:Data-IQ 与 Pytorch 模型的集成
  1. tutorial_sklearn_api.ipynb
  • 示例:Data-IQ 与迭代训练的 SKLearn 风格模型(例如 XGBoost、LightGBM、CatBoost)的集成

Data-IQ 度量

Data-IQ 包提供各种度量标准来描述训练动态。

主要和推荐的度量标准是:随机不确定性预测置信度。然而,包中也包含其他度量标准。

用于描述训练动态的不同度量标准如下,可以通过 dataiq 对象访问

  • 通过 dataiq.aleatoric 获取随机不确定性
  • 通过 dataiq.confidence 获取预测置信度
  • 通过 dataiq.variability 获取可变性
  • 通过 dataiq.entropy 获取熵
  • 通过 dataiq.mi 获取互信息
  • 通过 dataiq.correctness 获取训练过程中的正确性

用例

我们在笔记本中突出显示不同的 Data-IQ 用例,从理解学习动态、创建特征曲线、特征获取等,以及在不同数据模态中的使用案例,这些笔记本可以在 /use_cases 文件夹中找到。

引用

如果您使用此代码,请引用相关的论文

@inproceedings
{seedat2022dataiq,
title={Data-IQ: Characterizing subgroups with heterogeneous outcomes in tabular data},
author={Seedat, Nabeel and Crabbe, Jonathan and Bica, Ioana and van der Schaar, Mihaela},
booktitle={Advances in Neural Information Processing Systems},
year={2022}
}

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

此版本没有可用的源分布文件。请参阅有关 生成发行存档 的教程。

构建分布

data_iq-0.0.1-py3-none-macosx_10_14_x86_64.whl (20.7 kB 查看哈希)

上传时间 Python 3 macOS 10.14+ x86_64

data_iq-0.0.1-py3-none-any.whl (20.9 kB 查看哈希)

上传时间 Python 3

由以下支持