title: Which machine learning classifier to choose, in general?
body: <p>Suppose I'm working on some classification problem. (Fraud detection and comment spam are two problems I'm working on right now, but I'm curious about any classification task in general.)</p>
  
  <p>How do I know which classifier I should use? </p>
  
  <ol>
  <li>Decision tree</li>
  <li>SVM</li>
  <li>Bayesian</li>
  <li>Neural network</li>
  <li>K-nearest neighbors</li>
  <li>Q-learning</li>
  <li>Genetic algorithm</li>
  <li>Markov decision processes</li>
  <li>Convolutional neural networks</li>
  <li>Linear regression or logistic regression</li>
  <li>Boosting, bagging, ensambling</li>
  <li>Random hill climbing or simulated annealing</li>
  <li>...</li>
  </ol>
  
  <p>In which cases is one of these the "natural" first choice, and what are the principles for choosing that one?</p>
  
  <p>Examples of the type of answers I'm looking for (from Manning et al.'s <a href="http://nlp.stanford.edu/IR-book/html/htmledition/choosing-what-kind-of-classifier-to-use-1.html" rel="noreferrer"><em>Introduction to Information Retrieval</em></a> book):</p>
  
  <p>a. <em>If your data is labeled, but you only have a limited amount, you should use a classifier with high bias (for example, Naive Bayes)</em>.</p>
  
  <p>I'm guessing this is because a higher-bias classifier will have lower variance, which is good because of the small amount of data.</p>
  
  <p>b. <em>If you have a ton of data, then the classifier doesn't really matter so much, so you should probably just choose a classifier with good scalability.</em></p>
  
  <ol start="2">
  <li><p>What are other guidelines? Even answers like "if you'll have to explain your model to some upper management person, then maybe you should use a decision tree, since the decision rules are fairly transparent" are good. I care less about implementation/library issues, though.</p></li>
  <li><p>Also, for a somewhat separate question, besides standard Bayesian classifiers, are there 'standard state-of-the-art' methods for comment spam detection (as opposed to email spam)?</p></li>
  </ol>