For the last five years, I have been fascinated with machine learning techniques, but that fascination is slowly running out. I increasingly consider ML a tool in my tool box among others, not a panacea to all problems. In particular, I'd like to return to other algorithmic techniques from my educational back, i.e. computer science. Besides classical algorithms like Dijkstra's algorithm, in particular I'd like to pick up linear programming again and operations research (OR)
During my master's studies (2006-2008) I was convinced that linear programming would make the world a better place. Human life, I was convinced, would be more economically efficient, more environmentally friendly, with more of the good stuff and less of the bad. Later I thought the exact same thing of machine learning. Yes, a hopeful young and older man I am. Perhaps now is the time for me to compare the methodologies and arrive at some personal conclusions.
A (very) rough categorisation, from my point of view as a current practitioner:
- Classical algorithms: requires a deep understanding of the problem; also requires a deep understanding of the computational process required to solve them; An example is the Shortest Path Problem and Dijkstra's Algorithm.
- Linear programming: requires a deep understanding of the problem and the ability to model it mathematically; does not require deep knowledge of any computational process to solve them besides the general Simplex algorithm (for non-integer problems);
- Machine learning: does not require a deep understanding of the problem; does not require a deep understanding of the computational process used to solve them; An example, is using a Random Forrest algorithm to solve the Digit Recognition Problem.
At work, I'm blessed with colleagues who like to discuss and knowledge share about these topics.