Causal Balancing for Domain Generalization