Given data where the class is categorical (finite and discrete), there are multiple ways to come up with a classifier. One could use multinomial logistic regression, or support vector clustering (implemented, for example, as SVC in scikit-learn). What is the fundamental difference between these two algorithms? When is one better than the other? Are they fundamentally trying to minimize a different type of error?
An entirely different approach is generative algorithms, and in particular naive Bayes. When is that appropriate as opposed to the discriminative alogirthms above?