Learning Discriminative Metrics via Generative Models and Kernel Learning