Problems that are too complex to be solved by ordinary programming.
Problems that involve visual reasoning and language understanding such as image recognition, speech recognition, machine translation, etc
Fast changing problems where the characteristics of the problems changes with time, and there is a need to keep the system functioning well.
Problems that are clear and have simple goals such as yes/no question or predicting a single continuous number such as the quantity of product likely to be consumed in a given time.
When not to Use Machine Learning
You want the predictions made by your model to be fully explainable.
You do not have a reliable data for the problem you're trying to solve.
You can solve your problem with ordinary programming or a simple heuristic methods.
You want a solution that will never need to be updated.