{"id":37073871,"url":"https://github.com/namkoong-lab/dro","last_synced_at":"2026-01-14T08:40:50.180Z","repository":{"id":211225537,"uuid":"728538933","full_name":"namkoong-lab/dro","owner":"namkoong-lab","description":"A package of distributionally robust optimization (DRO) methods. Implemented via cvxpy and PyTorch","archived":false,"fork":false,"pushed_at":"2025-05-31T07:25:22.000Z","size":24257,"stargazers_count":136,"open_issues_count":1,"forks_count":7,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-09-19T15:22:06.638Z","etag":null,"topics":["distributionally-robust-optimization","machine-learning","operations-research","trustworthy-ai"],"latest_commit_sha":null,"homepage":"https://python-dro.org/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/namkoong-lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-12-07T06:44:19.000Z","updated_at":"2025-08-29T02:32:39.000Z","dependencies_parsed_at":"2024-12-18T16:19:22.040Z","dependency_job_id":"ea0b5cae-f076-47fd-9210-17c2dc903245","html_url":"https://github.com/namkoong-lab/dro","commit_stats":null,"previous_names":["namkoong-lab/dro"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/namkoong-lab/dro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/namkoong-lab%2Fdro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/namkoong-lab%2Fdro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/namkoong-lab%2Fdro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/namkoong-lab%2Fdro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/namkoong-lab","download_url":"https://codeload.github.com/namkoong-lab/dro/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/namkoong-lab%2Fdro/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28414678,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T08:38:59.149Z","status":"ssl_error","status_checked_at":"2026-01-14T08:38:43.588Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["distributionally-robust-optimization","machine-learning","operations-research","trustworthy-ai"],"created_at":"2026-01-14T08:40:49.570Z","updated_at":"2026-01-14T08:40:50.129Z","avatar_url":"https://github.com/namkoong-lab.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?color=g\u0026style=plastic)](https://opensource.org/licenses/MIT)\n[![Downloads](https://static.pepy.tech/personalized-badge/dro?period=total\u0026units=abbreviation\u0026left_color=grey\u0026right_color=blue\u0026left_text=Downloads)](https://pepy.tech/project/dro)\n[![pypy: v](https://img.shields.io/pypi/v/dro.svg)](https://pypi.python.org/pypi/dro/)\n[![codecov](https://codecov.io/github/namkoong-lab/dro/graph/badge.svg?token=QFYLOVYZXF)](https://codecov.io/github/namkoong-lab/dro)\n\n# `dro`: A Python Package for Distributionally Robust Optimization in Machine Learning\n\u003e Jiashuo Liu\u003csup\u003e†\u003c/sup\u003e, Tianyu Wang\u003csup\u003e†\u003c/sup\u003e, Henry Lam, Hongseok Namkoong, Jose Blanchet  \n\u003e \u003csub\u003e† equal contributions (α-β order)\u003c/sub\u003e\n\n\u003cp align=\"center\"\u003e\u003cimg src='./logo-new.png' width='500px'/\u003e\u003c/p\u003e\n\n`dro` is a python package that implements typical DRO methods on linear loss (SVM, logistic regression, and linear regression) for supervised learning tasks. It is built based on the convex optimization solver `cvxpy`. The `dro` package supports different kinds of distance metrics $d(\\cdot,\\cdot)$ as well as different kinds of base models (e.g., linear regression, logistic regression, SVM, neural networks...). Furthermore, it integrates different synthetic data generating mechanisms from recent research papers. \n\n\nWithout specified, our DRO model is to solve the following optimization problem:\n$$\\min_{\\theta} \\max_{P: P \\in U} E_{(X,Y) \\sim P}[\\ell(\\theta;(X, Y))],$$\nwhere $U$ is the so-called ambiguity set and typically of the form $U = \\\\{P: d(P, \\hat P) \\leq \\epsilon\\\\}$ and $\\hat P := \\frac{1}{n}\\sum_{i = 1}^n \\delta_{(X_i, Y_i)}$ is the empirical distribution of training samples $\\{(X_i, Y_i)\\}_{i = 1}^n$. And $\\epsilon$ is the hyperparameter. \n\nPlease refer to our \u003ca href=\"https://arxiv.org/pdf/2505.23565\"\u003epaper\u003c/a\u003e for more details. \n```bibtex\n@misc{liu2025dropythonlibrary,\n      title={DRO: A Python Library for Distributionally Robust Optimization in Machine Learning}, \n      author={Jiashuo Liu and Tianyu Wang and Henry Lam and Hongseok Namkoong and Jose Blanchet},\n      year={2025},\n      eprint={2505.23565},\n      archivePrefix={arXiv},\n      primaryClass={cs.LG},\n      url={https://arxiv.org/abs/2505.23565}, \n}\n```\n\n\n## Installation\n\n### (1) Install `dro` package\nTo install `dro` package, you can simply run:\n```\npip install dro\n```\nAnd it will install all required packages.\n\n### (2) Optional: Prepare `MOSEK` license\nWhen implementing the solvers with exact solutions, our package is built upon `cvxpy`, and called based on `MOSEK` by default, which is efficient for all optimization problems encountered in the reformulation. `MOSEK` needs the license file. The steps are as follows:\n\n* Request license at \u003ca href=\"https://www.mosek.com/products/academic-licenses/\"\u003eOfficial Website\u003c/a\u003e, and then the license `mosek.lic` will be emailed to you.\n* Put your license in your home directory as follows:\n\n    ```\n    cd\n    mkdir mosek\n    mv /path_to_license/mosek.lic  mosek/\n    ```\n\nAlternatively, we can set the solver among some open-source solvers such as `ECOS`, `SCS` in `cvxpy` (see \u003ca href = \"https://www.cvxpy.org/tutorial/solvers/index.html\"\u003ehere\u003c/a\u003e for more details). In any given DRO model, this can be done during initialization:\n\n    ```\n    model = XXDRO(..., solver = 'ECOS')\n    ```\n\nby simply updating after initialization:\n\n    ```\n    model.solver = 'ECOS'\n    ```\n\nThese solvers can solve all the optimization problems implemented in the package as well.\n\n\n\n\n## Quick Start\nA simple user example is as follows:\n```python\nfrom dro.data.dataloader_classification import classification_basic\nfrom dro.data.draw_utils import draw_classification\nfrom dro.linear_model.chi2_dro import Chi2DRO\n\n# Data generating\nX, y = classification_basic(d = 2, num_samples = 100, radius = 2, visualize = True)\n\n# Chi-square DRO \nclf_model = Chi2DRO(input_dim=2, model_type = 'logistic')\nclf_model.update({'eps': 0.1})\nprint(clf_model.fit(X, y))\n```\n\n\nFor more examples, please refer to our \u003ca href=\"https://python-dro.org/api/example.html\"\u003eexamples\u003c/a\u003e.\n\n\n## Documentation \\\u0026 APIs\n\nAs for the latest `v0.3.1` version, `dro` supports:\n\n### (1) Synthetic data generation\n\n\n\n\n\u003ctable class=\"tg\"\u003e\u003cthead\u003e\n  \u003ctr\u003e\n    \u003cth class=\"tg-0pky\"\u003ePython Module\u003c/th\u003e\n    \u003cth class=\"tg-0pky\"\u003eFunction Name\u003c/th\u003e\n    \u003cth class=\"tg-0pky\"\u003eDescription\u003c/th\u003e\n  \u003c/tr\u003e\u003c/thead\u003e\n\u003ctbody\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0pky\" rowspan=\"4\"\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003edro.data.dataloader_classification\u003c/td\u003e\n    \u003ctd class=\"tg-0pky\"\u003eclassification_basic\u003c/td\u003e\n    \u003ctd class=\"tg-0pky\"\u003eBasic classification task\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0pky\"\u003eclassification_DN21\u003c/td\u003e\n    \u003ctd class=\"tg-0pky\"\u003eFollowing Section 3.1.1 of \u003cbr\u003e[1]\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0pky\"\u003eclassification_SNVD20\u003c/td\u003e\n    \u003ctd class=\"tg-0pky\"\u003eFollowing Section 5.1 of \u003cbr\u003e[2]\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003eclassification_LWLC\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eFollowing Section 4.1 (Classification) of \u003cbr\u003e[3]\"\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\" rowspan=\"5\"\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003edro.data.dataloader_regression\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eregression_basic\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eBasic regression task\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003eregression_DN20_1\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eFollowing Section 3.1.2 of \u003cbr\u003e[1]\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003eregression_DN20_2\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eFollowing Section 3.1.3 of \u003cbr\u003e[1]\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003eregression_DN20_3\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eFollowing Section 3.3 of \u003cbr\u003e[1]\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003eregression_LWLC\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eFollowing Section 4.1 (Regression) \u003cbr\u003eof [3]\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\n### (2) Linear DRO models\nThe models listed below are solved by exact solvers from ``cvxpy``.\n\n\u003ctable class=\"tg\"\u003e\u003cthead\u003e\n  \u003ctr\u003e\n    \u003cth class=\"tg-0lax\"\u003ePython Module\u003c/th\u003e\n    \u003cth class=\"tg-0lax\"\u003eClass Name\u003c/th\u003e\n    \u003cth class=\"tg-0lax\"\u003eDescription\u003c/th\u003e\n  \u003c/tr\u003e\u003c/thead\u003e\n\u003ctbody\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003edro.linear_dro.base\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eBaseLinearDRO\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eBase class for linear DRO methods\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003e\u003cspan style=\"font-weight:400;font-style:normal;text-decoration:none\"\u003edro.linear_dro.chi2_dro\u003c/span\u003e\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eChi2DRO\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eLinear chi-square divergence-based DRO\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003e\u003cspan style=\"font-weight:400;font-style:normal;text-decoration:none\"\u003edro.linear_dro.kl_dro\u003c/span\u003e\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eKLDRO\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eKullback-Leibler divergence-based DRO\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003edro.linear_dro.cvar_dro\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eCVaRDRO\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eCVaR DRO\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003edro.linear_dro.tv_dro\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eTVDRO\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eTotal Variation DRO\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003edro.linear_dro.marginal_dro\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eMarginalCVaRDRO\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eMarginal-X CVaR DRO\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003e\u003cspan style=\"font-weight:400;font-style:normal;text-decoration:none\"\u003edro.linear_dro.mmd_dro\u003c/span\u003e\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eMMD_DRO\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eMaximum Mean Discrepancy DRO\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003e\u003cspan style=\"font-weight:400;font-style:normal;text-decoration:none\"\u003edro.linear_dro.conditional_dro\u003c/span\u003e\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eConditionalCVaRDRO\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eY|X (ConditionalShiftBased) CVaR DRO\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003e\u003cspan style=\"font-weight:400;font-style:normal;text-decoration:none\"\u003edro.linear_dro.hr_dro\u003c/span\u003e\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eHR_DRO_LR\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eHolistic Robust DRO on linear models\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\" rowspan=\"2\"\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan style=\"font-weight:400;font-style:normal;text-decoration:none\"\u003edro.linear_dro.wasserstein_dro\u003c/span\u003e\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eWassersteinDRO\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eWasserstein DRO\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003eWassersteinDROsatisficing\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eRobust satisficing version of Wasserstein DRO\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003edro.linear_dro.sinkhorn_dro\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eSinkhornLinearDRO\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eSinkhorn DRO on linear models\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003edro.linear_dro.mot_dro\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eMOTDRO\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eOptimal Transport DRO with Conditional Moment Constraints\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003edro.linear_dro.or_wasserstein_dro\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eORWDRO\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eOutlier-Robust Wasserstein DRO\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\n\n\n\n### (3) NN DRO models\nThe models listed below are solved by gradient descent (``Pytorch``).\n\n\n\u003ctable class=\"tg\"\u003e\u003cthead\u003e\n  \u003ctr\u003e\n    \u003cth class=\"tg-0lax\"\u003ePython Module\u003c/th\u003e\n    \u003cth class=\"tg-0lax\"\u003eClass Name\u003c/th\u003e\n    \u003cth class=\"tg-0lax\"\u003eDescription\u003c/th\u003e\n  \u003c/tr\u003e\u003c/thead\u003e\n\u003ctbody\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003edro.neural_model.base_nn\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eBaseNNDRO\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eBase model for neural-network-based DRO\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003edro.neural_model.fdro_nn\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eChi2NNDRO\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eChi-square Divergence-based Neural DRO Model\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003edro.neural_model.wdro_nn\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eWNNDRO\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eWasserstein Neural DRO with Adversarial Robustness.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003edro.neural_model.hrdro_nn\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eHRNNDRO\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eHolistic Robust NN DRO\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n\n### (4) Tree-based Ensemble DRO models\nThe models listed below are solved by function approximation (``xgboost``, ``lightgbm``).\n\u003ctable class=\"tg\"\u003e\u003cthead\u003e\n  \u003ctr\u003e\n    \u003cth class=\"tg-0lax\"\u003ePython Module\u003c/th\u003e\n    \u003cth class=\"tg-0lax\"\u003eClass Name\u003c/th\u003e\n    \u003cth class=\"tg-0lax\"\u003eDescription\u003c/th\u003e\n  \u003c/tr\u003e\u003c/thead\u003e\n\u003ctbody\u003e\n    \u003ctd class=\"tg-0lax\" rowspan=\"3\"\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan style=\"font-weight:400;font-style:normal;text-decoration:none\"\u003edro.tree_model.lgbm\u003c/span\u003e\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eKLDRO_LGBM\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eKL Divergence-based Robust LightGBM\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003eCVaRDRO_LGBM\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eCVaR Robust LightGBM\u003c/td\u003e\n  \u003c/tr\u003e\n    \u003ctd class=\"tg-0lax\"\u003eChi2DRO_LGBM\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eChi2 Divergence-based Robust LightGBM\u003c/td\u003e\n  \u003c/tr\u003e\n    \u003ctd class=\"tg-0lax\" rowspan=\"3\"\u003e\u003cbr\u003e\u003cbr\u003e\u003cspan style=\"font-weight:400;font-style:normal;text-decoration:none\"\u003edro.tree_model.xgb\u003c/span\u003e\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eKLDRO_XGB\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eKL Divergence-based Robust XGBoost\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003eChi2DRO_XGB\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eChi2 Divergence-based Robust XGBoost\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003eCVaRDRO_XGB\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003eCVaR Robust XGBoost\u003c/td\u003e\n  \u003c/tr\u003e\n\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n### (5) Model-based Diagnostics\nIn linear DRO models, we provide additional interfaces for understanding the worst-case model performance and evaluating the true model performance. \n\u003ctable class=\"tg\"\u003e\u003cthead\u003e\n  \u003ctr\u003e\n    \u003cth class=\"tg-0lax\"\u003ePython Module\u003c/th\u003e\n    \u003cth class=\"tg-0lax\"\u003eFunction Name\u003c/th\u003e\n    \u003cth class=\"tg-0lax\"\u003eDescription\u003c/th\u003e\n  \u003c/tr\u003e\u003c/thead\u003e\n\u003ctbody\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003e\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003e.worst_distribution\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003ethe worst case distribution of the DRO model\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd class=\"tg-0lax\"\u003e\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003e.evaluate\u003c/td\u003e\n    \u003ctd class=\"tg-0lax\"\u003etrue out-of-sample model performance of the DRO model\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\nFor more details, please refer to https://python-dro.org for more details!\n\nps: our logo is generated via GPT:)\n\n\n### Other Reference\n[1] Learning Models with Uniform Performance via Distributionally Robust Optimization. Annals of Statistics. Annals of Statistics. 2021.\n\n[2] Certifying Some Distributional Robustness with Principled Adversarial Training. ICLR 2018.\n\n[3] Distributionally Robust Optimization with Data Geometry. NeurIPS 2022.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnamkoong-lab%2Fdro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnamkoong-lab%2Fdro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnamkoong-lab%2Fdro/lists"}