你知道如何为你的分类问题选择合适的机器学习算法吗?当然,如果你真正关心准确率,那么最佳方法是测试各种不同的算法(同时还要确保对每个算法测试不同参数),然后通过交叉验证选择最好的一个。但是,如果你只是为你的问题寻找一个“足够好”的算法,或者一个起点,这里有一些我这些年发现的还不错的一般准则。
你的训练集有多大?
如果训练集很小,那么高偏差/低方差分类器(如朴素贝叶斯分类器)要优于低偏差/高方差分类器(如k近邻分类器),因为后者容易过拟合。然而,随着训练集的增大,低偏差/高方差分类器将开始胜出(它们具有较低的渐近误差),因为高偏差分类器不足以提供准确的模型。
你也可以认为这是生成模型与判别模型的区别。
然而…
尽管如此,回忆一下,更好的数据往往打败更好的算法,设计好的特征大有裨益。并且,如果你有一个庞大数据集,这时你使用哪种分类算法在分类性能方面可能并不要紧(所以,要基于速度和易用性选择算法)。
重申我上面说的,如果你真的关心准确率,一定要尝试各种各样的分类器,并通过交叉验证选择最好的一个。或者,从 Netflix Prize (和 Middle Earth)中吸取教训,只使用了一个集成方法进行选择。