Model localization: one big model vs two small models Suppose I have want to predict how likely people in both US and Canada will buy product A in a month. Basically, it's a binary classification problem. 

Assume I have 2 millions rows of historical data with people who has bought/not bought the product (label). One millions rows data are from US, the other are from Canada. 

I can build a machine learning models in following two ways:


Build a model with 2 millions rows of data. One model with all the
data.
Model localization: Build a model with US data. Build another model with Canada data.


Intuitively, it seems to me option 1 will always performs better than 2. Because there will be more data in one model. But in practice, option 2 seems always performs better than option 1.

My question is when should I use option 2 instead of option 1? How to make the decision?
When and how to choose 1 vs 2? Data exploration, understanding the problem, and testing the models. Make sure you use metrics, a cut-off level and test data that is appropriate for your business problem. 

Take for example, if there is a fundamental difference between US and CA customers. Then allowing the model to focus on the signal of each country, without dealing with the noise of the other country, may produce a better model for each. By doing data exploration (plot purchases by country over time and some other important features) you might convince yourself that it is worth the effort to test multiple models.

This is the art vs science of modeling.