如何选择分类器

你知道如何为你所面临的分类问题选择机器学习算法吗?当然,如果你十分关注准确率的话,你最好尝试不同的分类器,并且对每个分类器尝试不同的参数,再通过交叉验证来选择出最好的分类器。但如果你仅仅是想找到一个“足够好”的算法或者是一个着手点,那么下面是一些我在过去几年中发现的十分有效的建议:

你的训练集有多大?

如果你的训练集很小,那么高偏差/低方差的分类器(如:朴素贝叶斯)会优于低偏差/高方差(如:k近邻)的分类器,因为后者会出现过拟合问题。但是随着你训练数据集的增长低偏差/高方差的分类器会变得更有,这是由于高偏差的分类器在提供精确模型方面表现不足。

一些常见算法的优点

朴素贝叶斯的优点

朴素贝叶斯算法相当简单,你仅仅需要做一系列的计算即可。如果朴素贝叶斯的条件独立假设成立,那么朴素贝叶斯要比其他非线性模型,如逻辑斯蒂回归收敛的更快,所以你仅需很小的训练数据。即使条件独立假设不成立,在实际中贝叶斯分类器也通常能表现的不错。因此如果需要快速简单表现还不错的分类器可以考虑朴素贝叶斯。朴素贝叶斯的主要缺点是他不能学习特征之间的交互(它并不能学习到你分别喜欢布拉德·皮特与汤姆克鲁斯的电影,但是讨厌他们一起出演的电影)。

逻辑斯蒂回归的优点

对于逻辑斯蒂回归来说你有多种方法调整你的模型,你也不用像使用朴素贝叶斯那样担心特征之间的相关性。比起决策树与支持向量机来也能有一个好的概率解释,另外当有新的数据时你也能够通过采用在线梯度下降方法轻松的更新你的模型,而SVM与决策树做不到。所以如果你需要一个容易调整分类阈值的概率框架或者你将来有可能获得更多的训练数据并且你想将这些数据快速的应用到你的模型中去,那么你可以采用逻辑斯蒂回归算法。

决策树的优点

决策树算法非常容易解释与理解(当然,我不确定有些人属不属于这类)。决策树处理起关联特征也十分容易,并且他们是午餐时的,所以你们不用担心异常值或者是数据是否线性可分(决策处理起类似实例:假设类A中特征x在最低端,类B中特征x在中间,还有一个实例在类A中x特征在最高端十分便捷)。决策树的一个缺点是他们不支持在线学习,所以如果你有新用例来时只能重建决策树。另外一个缺点是决策树容易出现过拟合,所以随机森林(提升树)等方法出现了。好的是,随机森林通常在许多分类问题中表现很好(我觉得他们可能会稍微领先与 SVM),并且他们速度快且便于扩展,并且你不需要像SVM那样,关注一系列的参数,随机森林在最近的应用中颇为流行。

支持向量机的优点

高准确度、可靠的过拟合理论保证、并且只要有个好的核函数即使你的数据集在特征空间上不可分,SVM 也能表现很好。在最近特别流行以高特征唯独著称的文本分类问题上SVM十分流行。存储需求高,难以解释,运行与调整有时很烦人。因此,我想随机森林将要取代SVM的荣耀了。

然而….

记住,好的数据通常打败好的算法,设计好的特征通常对分类算法大有助益。如果你有一个巨大的数据集,不管你选择怎样的分类算法对你的分类性能并没有太大的影响, (所以选择速度快的,或者容易用的算法即可)。

最后,再次强调我开篇所说:你知道如何为你所面临的分类问题选择机器学习算法吗?当然,如果你十分关注准确率的话,你最好尝试不同的分类器。或者是学习Netflix Prize设立百万奖金或者像(电影中土世界那样),使用所有的分类器尝试,然后从中选择。

本文翻译自Edwin Chen的博客,原文链接Choosing a Machine Learning Classifier

翻译后记

本文是在阅读模式分类第九章时读到,通俗易懂,所以就翻译过来了。本文内容与模式分类第九章的内容十分相关,诸如:偏差与方差的关系,没有免费的午餐, 丑小鸭定理等。第二次翻译,如有错误,请不吝指出。