Data-Driven Optimization Under Uncertainty