Overview of the dro package
maindro is a Python package designed for Distributionally Robust Optimization (DRO) in machine learning. It implements DRO methods for supervised learning tasks using linear losses (such as SVM, logistic regression, and linear regression).
Key features include:
- Optimization Engine: Built on top of the
cvxpyconvex optimization solver. - Distance Metrics: Supports various distance metrics $d(\cdot, \cdot)$ to define ambiguity sets.
- Model Support: Compatible with linear models, neural networks, and tree-based ensembles.
- Data Generation: Includes integrated synthetic data generation mechanisms based on recent research.
The core optimization problem solved is: $$\min_{\theta} \max_{P: P \in U} E_{(X,Y) \sim P}[\ell(\theta;(X, Y))]$$ where $U$ is the ambiguity set, typically defined as $U = {P: d(P, \hat P_n) \leq \epsilon}$ using the empirical distribution $\hat P_n$ and a hyperparameter $\epsilon$.