The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

Introduction to PIE – A Partially Interpretable Model with Black-box Refinement

Tong Wang, Jingyi Yang, Yunyi Li and Boxiang Wang

2025-01-20

Introduction to PIE

The PIE package implements Partially Interpretable Estimators (PIE), a framework that jointly train an interpretable model and a black-box model to achieve high predictive performance as well as partial model transparency.

Installation

To install the development version from GitHub, run the following:

# Install the R package from CRAN
install.packages("PIE")

Getting Started

This section demonstrates how to generate synthetic data for transfer learning and apply the ART framework using different models.

Generate Data

The function data_process() allows you to process dataset into the format that fits with PIE model, including cross-validation dataset (such as training, validation and testing) and group indicators for group lasso.

library(PIE)
# Load the training data
data("winequality")
# Which columns are numerical?
num_col <- 1:11
# Which columns are categorical?
cat_col <- 12
# Which column is the response?
y_col <- ncol(winequality)
# Data Processing
dat <- data_process(X = as.matrix(winequality[, -y_col]), 
  y = winequality[, y_col], 
  num_col = num_col, cat_col = cat_col, y_col = y_col)

Fitting PIE

Once the data is prepared, you can use the PIE_fit() function to train PIE model. In this example, we fit only with 5 iterations using group lasso and XGBoost models.

# Fit a PIE model
fold <- 1
fit <- PIE_fit(
  X = dat$spl_train_X[[fold]],
  y = dat$train_y[[fold]],
  lasso_group = dat$lasso_group,
  X_orig = dat$orig_train_X[[fold]],
  lambda1 = 0.01, lambda2 = 0.01, iter = 5, eta = 0.05, nrounds = 200
)

Predicting PIE

Once your PIE model is trained, you can use the PIE_predict() function to predict on test data.

# Prediction
pred <- predict(fit, 
  X = dat$spl_validation_X[[fold]],
  X_orig = dat$orig_validation_X[[fold]])

Evaluate PIE

You can evaluate your PIE model’s performance with RPE(), which has formula \(RPE=\frac{\sum_i(y_i-\hat{y_i})^2}{\sum_i(y_i-\bar{y})^2}\), where \(\bar{y} = \frac{1}{n}\sum_i^n y_i\).

# Validation
val_rrmse_test <- RPE(pred$total, dat$validation_y[[fold]])

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.