Never Read Passively: What is a good optimization algorithm? A data-driven method for algorithm selection