如何为实际的分类应用选择合适的分类器?若是你很关心分类的精度,那么最好的选择是逐个尝试不一样的分类器并采用不一样的参数,从中选择最好的一个。若是你只是想大体了解一下分类结果,那么本文接下来给出几个挑选原则。算法
(1)你的数据集有多大?框架
若是数据集较小,high bias/low variance类型的分类器(例如naive bayes)比low bias/high variance分类器(例如kNN)更有优点,由于后者容易致使过拟合。然而随着训练集的增加,则low bias/high variance分类器更好,由于其渐进偏差更小,而此时high bias/low variance分类器不能提供足够准确的分类模型。函数
(2)各分类器的特色。性能
naive bayes分类器的特色:若是nb分类器的条件独立性假设成立,则naive bayes分类器比logistic regression等discriminative model性能更好,不须要过多的训练集。即使是此假设不成立,naive bayes分类器的实际效果仍然很好,而且能简单快速的得出分类结果。其主要缺点是不能学习特征间的关系。学习
Logistic Regression分类器的特色:相比于Naive Bayes分类器,不须要考虑特征间的关联问题,同时能够规范化模型。相比于决策树或SVM分类器,LR的分类结果具备很好的几率解释,且当训练数据增长时,能够利用在线梯度降低法很容易的更新模型。当你须要一个几率框架(经过调节分类器的阈值获得置信区间)或你但愿未来可以接受更多训练数据并快速更新分类模型时,能够使用LR分类器。翻译
决策树分类器的特色:很容易解释分类结果,可以处理特征间的关联,非参数化,不须要考虑异常样本或数据是否为线性可分的,其缺点是不支持在线学习,因此当训练集中有新样本加入时,须要重建决策树模型。另外,该分类器容易过拟合(这是随机森林等组合方法共同的问题,随机森林在不少方面比其余分类器较好,其速度快且具备较好的可扩展性,同时不须要像SVM同样调整大批参数)设计
SVM分类器的特色:精度较好,且对于过拟合具备理论保证。若是采用合适的核函数,则能够支持非线性可分的数据分类。在文本分类等高维分类应用中普遍使用。然而SVM分类器是内存密集型,且训练获得的分类模型难以解释,运行和调参比较麻烦。blog
然而,更好的训练数据每每比更好的算法更重要,同时设计更好的特征集合也对分类结果有较大的影响。若是你有大量的数据集,那么不一样的分类算法对于分类结果的影响不大,因此你须要选择速度最快或最容易使用的分类算法。若是你比较关心分类的准确度,那么你最好尝试多种分类器并选择效果最好的一个。内存
翻译自http://blog.echen.me/2011/04/27/choosing-a-machine-learning-classifier/io