Understanding Heterogeneous Preferences in Random Utility Models: A Latent Class Approach