SlowGuess/NeurIPS_2023_OCR huggingface dataset:
$$
\mathcal {L} \left(s _ {1}, s _ {2}\right) = P \left(Y \in s _ {1}\right) \operatorname {V a r} _ {s _ {1}} (Y) + P \left(Y \in s _ {2}\right) \operatorname {V a r} _ {s _ {2}} (Y) = \mathbb {E} _ {S} [ \operatorname {V a r} (Y | S) ], \tag {C.13}
$$
where  $\operatorname{Var}_s(Y)$  denotes the variance of the outcome variable  $Y$  in node  $s$ ,  $S = \{s_1, s_2\}$  is the variable representing the children nodes. Therefore, given that  $\operatorname{Var}_{fa}(Y)(:= \operatorname{Var}_S(\mathbb{E}[Y|S]) + \mathbb{E}_S[\operatorname{Var}(Y|S)])$  is constant, the minimal  $\mathbb{E}_S[\operatorname{Var}(Y|S)]$  corresponds with the largest  $\operatorname{Var}_S(\mathbb{E}[Y|S])$ , which maximizes the discrepancy of the outcome between two children nodes.
C.5 Details of Non-algorithmic Interventions
In Section 3.2, we propose two potential non-algorithmic interventions to mitigate the performance degradation. In this section, we introduce in detail the intervention of collecting specific data from the target.
Experiment Setup We focus on the income prediction task using the ACS Income dataset. Consider a practical scenario where the training set consists of 20,000 samples from California (CA) and the trained model was deployed in Puerto Rico (PR) in trial. After the trial deployment in PR, we got a small amount of samples from PR with labels and observed performance degradation. Under this setting, we investigate the effect of non-algorithmic interventions.
Collect specific data from the target We first identify the regions with high discrepancy between source and target. Note that the sample size of the target state is small compared to the training samples. Then for typical algorithms like logistic regression (LR), MLP, random forest (RF), LightGBM and XGBoost, we compare the performances of:
- original setting (only 20,000 samples from the source);
- original setting with  $N$  additional random samples drawn from the whole target state;
- original setting with  $N$  additional random samples drawn from the risk region of the target state.
In this experiment, we first select the best configuration of each method according to the i.i.d validation set in the original setting (only samples from CA), and fix it for the other two interventions. We vary  $N$  as 100, 200, 300 and the results are shown in Figure 9. From Figure 9, incorporating data from the risk region leads to a stable improvement on typical algorithms even for small target sample sizes. However, we observe that LightGBM and XGBoost would easily overfit  $f_{Q}$  on the target data, and we use random forest under this setup as an alternative. It is worth investigating approaches to find risk regions effectively under small/imbalanced sample sizes in the future. The approach mentioned here is a simple way of non-algorithmic and explainable interventions and we hope it could inspire further research in this direction.
(a)  $N = 100$
(b)  $N = 200$
(c)  $N = 300$
Figure 9: Test accuracies of different ways to incorporate data.
C.6 Potential Alternative Approach of Identifying Risk Region
In Algorithm 1, we propose a simple way to identify the risk region to explain the cause of  $Y|X$ -shifts. And the identified region could be used to guide the collecting process of target data, which could help to further reduce the effects of performance degradation. However, in practice, when the amount of target samples is quite small, it may be hard to train the  $f_{Q}$  only with target samples accurately.
Therefore, it may be better to propose a method that does not need  $f_{Q}$  to fit  $Q(Y|X)$  on the target distribution.
Following this idea, we propose an alternative way of Algorithm 1. Since the training data is enough, it is feasible to fit  $f_{P}$  on the shared distribution  $S_{X}$  as:
$$
f _ {P} := \underset {f \in \mathcal {F}} {\operatorname {a r g m i n}} \mathbb {E} _ {P} \left[ \frac {d S _ {X}}{d P _ {X}} \ell (f (X), Y) \right]. \tag {C.14}
$$
Then for  $n_Q$  samples from target distribution  $Q$ , we could use a prediction model  $h(x)$  to approximate  $|Y - f_P(X)|$  on the shared distribution (by reweighting density ratio  $\frac{dS_X}{dQ_X}$ ). Note that this method does not need to train  $f_Q$  on target samples, but the quality of the density ratio  $dS_X / dP_X$  and the prediction model  $h(x)$  still depend on the target samples. We hope the estimation of the ratio and the residuals  $|Y - f_P(X)|$  can be less affected by the low sample size  $n_Q$ . This non-algorithmic intervention is not the main focus of this work, but we hope this idea could help to promote this line of research.
D Benchmark Details
In this section, we provide the details of our benchmark. In our benchmark, we explore distribution shifts on 5 real-world tabular datasets from the economic and traffic sectors with natural spatiotemporal distribution shifts. We carefully design 22 settings utilizing these 5 datasets, and the overview of 22 settings is shown in Table 3. Note that in our main body, due to space limitations, we only pick 7 typical settings and select only one representative target domain for each setting, as shown in Table 1. Detailed introductions of all datasets, algorithms, and experiment settings will be given in the following sections. A Python package for our benchmark can be found at https://github.com/namkoong-lab/whyshift.
Table 3. Overview of datasets and the whole 22 selected settings. In our benchmark, each setting has multiple target domains (except the last setting). In our main body, we select only one target domain for each setting.  $\diamond$ : we report the "Dom. Ratio" to represent the dominant ratio of  $Y|X$ -shifts or  $X$ -shifts in source-target pairs with performance degradation larger than 5 percentage points in each setting. For example, " $Y|X:13/14"$  means that there are 14 source-target pairs in Setting 1 with degradation larger than 5 percentage points and 13 out of them with over  $50\%$  degradation attributed to  $Y|X$  shifts. We use XGBoost to measure this.
#ID	Dataset	Type	#Features	Outcome	Source	#Train Samples	#Test Domains	Dom. Ratio
1	ACS Income	Spatial	9	Income≥50k	California	195,665	50	Y|X: 13/14
2	ACS Income	Spatial	9	Income≥50k	Connecticut	19,785	50	Y|X: 24/24
3	ACS Income	Spatial	9	Income≥50k	Massachusetts	40,114	50	Y|X: 21/22
4	ACS Income	Spatial	9	Income≥50k	South Dakota	4,899	50	Y|X: 9/9
5	ACS Mobility	Spatial	21	Residential Address	Mississippi	5,318	50	Y|X: 28/34
6	ACS Mobility	Spatial	21	Residential Address	New York	40,463	50	Y|X: 30/31
7	ACS Mobility	Spatial	21	Residential Address	California	80,329	50	Y|X: 9/17
8	ACS Mobility	Spatial	21	Residential Address	Pennsylvania	23,918	50	Y|X: 17/17
9	Taxi	Spatial	7	Duration time≥30 min	Bogotá	3,063	3	Y|X: 1/2
10	Taxi	Spatial	7	Duration time≥30 min	New York City	1,458,646	3	Y|X: 3/3
11	ACS Pub.Cov	Spatial	18	Public Ins. Coverage	Nebraska	6,332	50	Y|X: 32/39
12	ACS Pub.Cov	Spatial	18	Public Ins. Coverage	Florida	71,297	50	Y|X: 28/29
13	ACS Pub.Cov	Spatial	18	Public Ins. Coverage	Texas	98,928	50	Y|X: 33/34
14	ACS Pub.Cov	Spatial	18	Public Ins. Coverage	Indiana	24,330	50	Y|X: 11/13
15	US Accident	Spatial	47	Severity of Accident	Texas	26,664	13	Y|X: 7/7
16	US Accident	Spatial	47	Severity of Accident	California	64,909	13	X: 22/31
17	US Accident	Spatial	47	Severity of Accident	Florida	32,278	13	X: 5/7
18	US Accident	Spatial	47	Severity of Accident	Minnesota	8,927	13	X: 8/11
19	ACS Pub.Cov	Temporal	18	Public Ins. Coverage	Year 2010 (NY)	73,208	3	X: 2/2
20	ACS Pub.Cov	Temporal	18	Public Ins. Coverage	Year 2010 (CA)	149,441	3	X: 2/2
21	ACS Income	Synthetic	9	Income≥50k	Younger People (80%)	20,000	1	X: 1/1
22	ACS Income	Synthetic	9	Income≥50k	Younger People (90%)	20,000	1	X: 1/1
D.1 Datasets & Settings
Here we introduce 5 real-world tabular datasets in detail. ACS Income, ACS Mobility, ACS Public Coverage are based on the American Community Survey (ACS) Public Use Microdata Sample (PUMS) [25]. And here we use the same data filtering as [25].
ACS Income The task is to predict whether an individual's income is above  $50,000. We filter the dataset to only include individuals above the age of 16, usual working hours of at least 1 hour per week in the past year, and an income of at least$ 100.
- In our Setting  $1 \sim 4$ , we use data from 2018 and the source/target domain refers to American states, which contain natural spatial distribution shifts. We train methods on data from California, Connecticut, Massachusetts, and South Dakota respectively, and test the generalization performance on the other 50 American states.
- In our Setting  $21 \sim 22$ , we sub-sample the dataset according to age to introduce covariate shift, where we focus on individuals from California and form two groups according to whether their age is  $\geq 25$ . In Setting 21, the source data over-samples the low age group where  $80\%$  is drawn from the age  $\geq 25$  group, and the proportions are reversed in the target data ( $20\%$  from age  $\geq 25$  group). In Setting 22, the source data over-samples the low age group where  $90\%$  is drawn from the age  $\geq 25$  group, and the proportions are reversed in the target data ( $10\%$  from age  $\geq 25$  group).
ACS Mobility The task is to predict whether an individual had the same residential address one year ago. We filter the dataset to only include individuals between the ages of 18 and 35, which increases the difficulty of the prediction task.
- In our Setting  $5 \sim 8$ , we use data from 2018 and the source/target domain refers to American states, which contain natural spatial distribution shifts. We train methods on data from Mississippi, New York, California, and Pennsylvania respectively, and test the generalization performance on the other 50 American states.
ACS Public Coverage The task is to predict whether an individual has public health insurance. We focus on low-income individuals who are not eligible for Medicare by filtering the dataset to only include individuals under the age of 65 and with an income of less than $30,000.
- In our Setting  $11\sim 14$ , we use data from 2018 and the source/target domain refers to American states, which contain natural spatial distribution shifts. We train methods on data from Nebraska, Florida, Texas, and Indiana respectively, and test the generalization performance on the other 50 American states.
- In our Setting  $19\sim 20$  we consider the temporal shifts. We use data from 2010 in training and data from 2014, 2017, and 2021 in testing (3 test domains). In Setting 19, the training data come from New York, and in Setting 20, the training data come from California.
US Accident The task is to predict whether an accident is severe (long delay) or not (short delay) based on weather features and Road conditions features.
- In our Setting  $15\sim 18$ , the source/target domain refers to American states, which contain natural spatial distribution shifts. We train methods on data from California, Florida, Texas, and Minnesota respectively, and test the generalization performance on other 13 American states. Here we only involve 13 test domains because the sample sizes in the other states are quite small.
Taxi The task is to predict whether the total ride duration time exceeds 30 minutes, based on location and temporal features. We filter the data in 2017 and remove some extremely large or small features (e.g. samples with too long distances which can be easily classified).
- In our Setting  $9\sim 10$  we use data from 2016 and the source/target domain refers to different cities. We train methods on data from Bogota and New York City and test the generalization performance in the other cities.
D.2 Algorithms & Implementations
In our benchmark, we evaluate 22 algorithms that span a wide range of learning strategies on tabular data and compare their performances under different patterns of distribution shifts we construct. Concretely, these algorithms include:
Base Methods We include some typical supervised learning methods for tabular data: Logistic Regression (LR), SVM, and fully-connected neural networks (MLP) with standard ERM optimization. For LR and SVM, we use the standard implementation in scikit-learn [71] and train them on CPUs. For MLP, we implement it via PyTorch [70] and train it on GPUs.
Tree Ensemble Models As shown by Gardner et al. [31], several tree-based methods achieve good performances on tabular datasets. And gradient-boosted trees (e.g., XGBoost, LightGBM) are widely considered as the state-of-the-art methods on tabular data. Therefore, we evaluate XGBoost and LightGBM in our benchmark. Also, we evaluate Random Forest (RF) to incorporate the performance of tree bagging methods.
DRO Methods Distributionally Robust Optimization (DRO) methods are proposed to address the distribution shifts, which is the form of:
$$
\min  _ {\theta \in \Theta} \sup  _ {Q \in \mathcal {P} \left(P _ {t r}\right)} \mathbb {E} _ {Q} [ \ell (f _ {\theta} (X), Y) ], \tag {D.1}
$$
where  $\mathcal{P}(P_{tr})$  denotes the uncertainty set around the training distribution  $P_{tr}$ . Following Gardner et al. [31], we implement two typical variants of DRO, namely CVaR-DRO and  $\chi^2$ -DRO. CVaR-DRO is equivalent to Conditional Value at Risk (CVaR), and  $\chi^2$ -DRO uses  $\chi^2$ -divergence to regulate the uncertainty set. We use the fast implementation [53] in PyTorch [70]. We also consider the DORO [105], which discards a proportion  $\epsilon$  of the largest error points in each iteration to mitigate the outliers in DRO with two variants, CVaR-DORO and  $\chi^2$ -DORO. We also evaluate the Group DRO [79], which is proposed to minimize the worst-group loss and shows good generalization performances on many vision tasks. This method needs the group label and we define groups according to the "SEX" feature on ACS datasets. For US Accident and Taxi, we do not run Group DRO, since the current Group DRO model in the codebase only accepts the input with few groups while it is hard to define such group here. For all DRO methods, we use the MLP as the backbone model. We do not choose tree ensemble methods since tree ensemble methods are difficult to adapt to the distributionally robust case. Therefore, we leave their method developments and implementations as our future work.
Imbalanced Learning Methods Recently, some simple data balancing methods [42] have shown good worst-group performances under distribution shifts. In our benchmark, we implement 4 typical balancing methods, namely Sub-Sampling  $Y$  (SUBY), Reweighting  $Y$  (RWY), Sub-Sampling Group (SUBG), and Reweighting Group (RWG). Besides, "Just Train Twice" (JTT [57]) exhibits good performances in many vision tasks, and therefore we also evaluate it in our tabular settings. Furthermore, stable learning methods [51, 24] propose to de-correlate sample covariates for an accurate estimation of causal relationships via global balancing, which could mitigate distribution shifts. In our benchmark, we implement one typical method named DWR [51]. For these imbalanced learning methods, we use XGBoost as the backbone model due to its superiority on tabular data and adjust sample weight or training procedure accordingly for each of the methods.
Fairness-enhancing Methods Following Ding et al. [25] and Gardner et al. [31], fairness-enhancing methods have the potential to mitigate the performance degradation under distribution shifts. In our benchmark, we evaluate the in-processing and post-processing intervention methods. The in-processing method [4] minimizes the prediction error subject to some fairness constraints, and in our benchmark, we choose three typical fairness constraints, including demographic parity (DP), equal opportunity (EO), error parity (EP). And the post-processing method [37] randomizes the predictions of a fixed classifier to satisfy equalized odds criterion, and we use exponential and threshold controls in our benchmark. We use the implementations of aif360 [11] and fairlearn [12].
D.3 Parameter Search Space
We provide the hyperparameter grids in Table 4. We mainly use the hyperparameter grids proposed in [31], and we restrict the grid size of each method in each setting to 200 in consideration of computational costs. For each setting, we randomly pick 200 configurations for each algorithm for a fair comparison. For methods incorporating backbone models (e.g., MLP/XGBoost), we choose the top 10 best configurations for that backbone model to reduce the search space, making the searched best configuration represent its best performance more accurately. Moreover, to accelerate the grid search process, we utilize Ray [55] to run experiments in parallel.
Table 4. Hyperparameter grids used in all experiments.  $\diamond$ : for methods with the total grid size above 200, we randomly sample 200 configurations for fair comparisons. For methods incorporating backbone models (e.g., MLP/XGBoost), we choose top-10 best configurations for that backbone model to reduce the search space, making the searched best configuration represent its best performance more accurately.
Model	Total Grid Size	Hyperparameter	Value Range
Base Methods
MLP	270°	Learning Rate	{0.001, 0.003, 0.0001, 0.005, 0.01}
Batch Size	{64, 128, 256}
Hidden Units	{16, 32, 64}
Dropout Ratio	{0, 0.1}
Train Epoch	{50, 100, 200}
SVM	96	C	{0.01, 0.1, 1, 10, 100, 1000}
Kernel	{linear, RBF}
Loss	Squared Hinge
γ	{0.1, 0.3, 0.5, 1.0, 1.5, 2.0, scale, auto}
Logistic Regression	23	L2 penalty	{0.001, 0.03, 0.005, 0.007, 0.01, 0.03, 0.05, ... 1.3, 1.7, 5, 10, 50, 100, 5e2, 1e3, 5e3, 1e4}
Tree Ensemble Methods
Random Forest	640°	Num. Estimators	{32, 64, 128, 256, 512}
Max Features	{sqrt, log2}
Min. Samples Split	{2, 4, 8, 16}
Min. Samples Leaf	{1, 2, 4, 8}
Cost-Complexity α	{0., 0.001, 0.01, 0.1}
XGBoost	1944°	Learning Rate	{0.1, 0.3, 1.0, 2.0}
Min. Split Loss	{0, 0.1, 0.5}
Max. Depth	{4, 6, 8}
Column Subsample Ratio (tree)	{0.7, 0.9, 1}
Column Subsample Ratio (level)	{0.7, 0.9, 1}
Max. Bins	{128, 256, 512}
Growth Policy	{Depthwise, Loss Guide}
LightGBM	1680°	Learning Rate	{0.01, 0.1, 0.5, 1.}
Num. Estimators	{64, 128, 256, 512}
L2-reg.	{0., 0.001, 0.01, 0.1, 1.}
Min. Child Samples	{1, 2, 4, 8, 16, 32, 64}
Column Subsample Ratio (tree)	{0.5, 0.8, 1.}
DRO Methods
DRO χ2	1890°	Uncertainty set size α	{0.01, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6}
Backbone Model	MLP
DRO CVaR	1890°	Uncertainty set size α	{0.001, 0.01, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6}
Backbone Model	MLP
DORO χ2	8100°	Uncertainty set size α	{0.1, 0.2, 0.3, 0.4, 0.5, 0.6}
Outlier proportion ε	{0.001, 0.01, 0.1, 0.2, 0.3}
Backbone Model	MLP
DORO CVaR	8100°	Uncertainty set size α	{0.1, 0.2, 0.3, 0.4, 0.5, 0.6}
Outlier proportion ε	{0.001, 0.01, 0.1, 0.2, 0.3}
Group DRO	1080°	Group weights step size	{0.001, 0.01, 0.1, 0.2}
Backbone Model	MLP
Imbalanced Learning Methods
SUBY, RWY, SUBG, RWG	1944°	Backbone Model	XGBoost
JTT	11664°	Up-weight λ	{4, 5, 6, 20, 50, 100}
Backbone Model	XGBoost
DWR	48600°	L1 penalty λ	{1e-3, 1e-2, 1e-1, 0.2, 0.3}
L2 penalty λ	{1e-3, 1e-2, 1e-1, 0.2, 0.3}
Backbone Model	XGBoost
Fairness Methods
In-processing	1944°	Constraint Type	{DP, EO, Error Parity}
Backbone Model	XGBoost
Post-processing	1944°	Constraint Type	{Exp, Threshold}
Backbone Model	XGBoost
Figure 10: Algorithmic rankings vary across different target states for the fixed source state and task.
D.4 Training Details
In each setting, we randomly sample 20,000 samples from the source domain for training, 20,000 samples from the source domain for validation, and 20,000 samples from the target domain for testing. For US Accident and Taxi datasets, we only randomly sample 8,000 samples for the source/target domain due to fewer samples involved in each setting. For setting where the source domain has fewer samples, we use  $80\%$  samples for training and  $20\%$  for validation. For results not specified by the validation protocol, we selected the best configuration according to the performance on such validation set (i.i.d with training).
For settings with ACS Income, ACS Public Coverage, ACS Mobility and US Accident datasets, all experiments were run on a server using 48 cores from two AMD EPYC 7402 24-Core Processors. For settings with Taxi dataset, all experiments were run on a cluster using 24 cores from an Intel Xeon Gold 6126 Processor. Neural-network-based models (MLP, DRO methods) were trained on GPU, NVIDIA GeForce RTX 3090, the other methods were trained only on CPUs. Note that all experiments are small-scale and could be run efficiently. Besides, during training, we found that the bi-search in  $\chi^2$ -DRO sometimes failed to converge, and therefore we set the maximal iteration num to 2500.
D.5 Detailed Results of 7 Selected Settings in Main Body
In the main body, due to space limitations, we only visualize the target performances of different methods. Here we provide the detailed results of all algorithms on the 7 selected settings in Table 1. We select the top-10 configurations according to the validation set  $i.i.d$  with training data and report the mean accuracy as well as the standard deviation in Table 5. Also, in Figure 11, we visualize the results of 22 algorithms of all configurations in our 7 selected settings.
Table 5. Results of 7 selected settings in the main body, where we run each method with its best configuration 10 times and report their mean accuracies and standard deviations.
Dataset Shift Pattern Source → Target Pair	ACS Income Y|X dominates CA→PR i.d.	ACS Mobility Y|X dominates MS→HI i.d.	ACS Mobility Y|X dominates NYC→BOG i.d.	US Taxi Y|X dominates NYC→LA i.d.	ACS Pub.Cov Y|X more NE→LA i.d.	ACS Accident Y|X more CA→OR i.d.	ACS Time X more 2010→2017 i.d.	Sub-Sampling X dominates Young→Old i.d.	ACS Accident X more o.o.d
Base Methods	LR	80.5±0.2	73.2±0.2	76.9±0.2	76.9±2.6	83.6±0.3	73.7±0.2	83.2±0.6	66.3±1.4	75.3±1.8
SVM	79.0±0.3	67.0±0.9	78.6±0.6	76.9±0.3	83.4±0.2	74.9±0.6	83.9±0.4	64.9±1.2	75.4±0.9
MLP	80.9±0.4	68.9±2.5	76.8±0.5	76.4±2.7	84.5±0.5	73.8±0.5	82.5±1.1	66.4±2.6	77.0±1.0
Tree Ensemble Methods	Random forest	81.1±0.2	72.9±0.4	80.2±0.3	72.0±0.3	85.8±0.2	73.4±0.8	85.5±0.3	68.3±0.4	78.5±0.2
LightGBM	81.2±0.2	71.4±0.5	79.5±0.3	71.3±0.8	86.4±0.4	72.7±0.8	85.7±0.4	70.0±0.4	79.1±0.3
XGBoost	81.4±0.2	71.7±0.6	80.0±0.4	71.2±0.8	86.5±0.4	73.0±0.7	85.8±0.5	70.1±0.3	79.0±0.3
DRO Methods (base: MLP)	x²-DRO	80.7±0.2	73.2±2.2	76.3±0.3	78.4±0.2	84.8±0.4	73.0±1.1	80.6±0.6	60.9±1.7	73.3±0.4
CVaR-DRO	80.9±0.2	71.7±1.7	76.4±0.5	78.3±0.4	85.4±0.4	73.8±0.8	79.5±4.0	61.7±1.7	74.1±0.3
x²-DORO	77.2±6.2	71.0±10.2	76.3±0.4	78.6±0.0	84.6±0.4	73.6±0.7	80.6±0.4	59.4±0.0	73.5±0.4
CVaR-DORO	78.8±0.6	72.4±4.2	76.4±0.4	78.6±0.1	85.2±0.3	74.3±0.4	83.7±0.5	66.9±0.9	73.4±2.4
Group DRO	80.7±0.3	71.9±3.4	75.5±0.4	78.5±0.2	N/A	N/A	80.3±7.3	65.8±3.6	N/A
Imbalanced Learning Methods (base: XGB)	JTT	77.9±0.4	69.7±1.3	77.2±0.3	70.1±0.8	85.0±0.3	71.4±1.1	84.1±0.8	68.9±0.4	85.9±0.4
SUBY	80.5±0.2	64.9±0.7	76.0±0.2	70.3±2.6	85.8±0.4	72.0±1.9	75.2±1.0	68.6±0.7	73.5±0.4
RWY	80.9±0.2	65.9±0.6	75.9±0.4	68.5±1.3	86.2±0.5	73.1±1.1	82.1±0.7	69.7±0.5	76.1±0.4
SUBG	81.2±0.3	70.9±0.6	79.1±0.2	71.1±0.6	85.3±0.3	71.4±1.2	85.1±0.5	70.2±0.4	76.4±0.4
RWG	81.4±0.2	71.5±0.5	79.7±0.2	71.0±0.8	86.3±0.4	72.8±0.9	85.8±0.5	70.1±0.3	76.7±0.4
DWR	81.3±0.2	71.3±0.6	78.2±0.4	69.8±0.8	83.5±0.5	71.2±1.2	85.8±0.4	69.8±0.4	76.7±0.4
Fairness Methods (base: XGB)	DP	80.8±0.3	70.4±0.6	79.5±0.3	71.3±0.8	86.3±0.4	72.0±1.0	85.2±0.5	70.2±0.5	76.3±0.4
EO	81.3±0.2	71.2±0.6	79.3±0.3	71.4±1.0	86.4±0.3	72.8±1.2	85.8±0.4	70.2±0.4	76.4±0.5
EP	81.3±0.2	71.4±0.5	79.6±0.3	70.9±0.9	85.7±0.4	71.7±1.4	86.0±0.2	70.1±0.5	76.4±0.5
Exp	80.9±0.2	70.6±0.6	79.4±0.6	71.2±0.9	85.6±0.5	71.5±1.1	85.5±0.2	70.2±0.5	76.4±0.5
Threshold	77.2±0.3	73.6±0.4	77.5±0.5	69.9±1.3	84.1±0.6	54.3±0.4	84.5±0.3	68.2±0.7	73.5±0.4
Top 3 Classes	Fair>Base<Rob.	DRO>Base>Tree.	Base>DRO>Tree	Tree<Fair<Imb.	Base>Tree>Fair
(a) ACS Income (CA→PR)
(b) ACS Income (CA  $\rightarrow$  SD)
(c) ACS Mobility  $(\mathrm{MS}\rightarrow \mathrm{HI})$
(d) Taxi (NYC  $\rightarrow$  BOG)
(e) ACS Pub. Cov (NE  $\rightarrow$  LA)
(f) US Accident (CA  $\rightarrow$  OR)