如何选择分类器
为了解决你的分类问题,你要选择哪种机器学习算法呢?当然,如果你非常重视准确率,你最好的办法就是测试一组不同的算法(同时确保在相同的模型中也使用不同的参数),然后用交叉验证选择出最好的一个。但是如果你只是在寻找一个“足够好”的算法来解决你的问题,或者只是找一个出发点,那么下面是一些我在这些年中发现的普遍成立的指导原则。
你的训练集有多大?
如果你的训练集比较小,那么高偏置少变量(high bias/low variance)分类器(例如朴素贝叶斯)要优于低偏置多变量分类器(例如KNN),因为后者会发生过拟合。但是当训练集变大的时候低偏置多变量的方法就变得更优(他们有更低的渐进错误率(asymptotic error)),因为高偏置少变量分类器不足以提供准确的模型。
你可以把这看做是生成式模型和判别式模型之间的差别。
一些特别的算法的优点
朴素贝叶斯的优点:
非常容易建立,你只是做了一些计数工作。如果朴素贝叶斯条件独立假设是成立的,那么朴素贝叶斯会收敛得比判别式模型更快(例如逻辑回归),所以你只需要更少的数据。并且即使朴素贝叶斯假设实际上并不成立,在实践中朴素贝叶斯分类器仍然工作的不错。总之如果你想要一个建立容易、速度快、正确率不错的模型,那么就选朴素贝叶斯吧。
它主要的缺点是不能学习到特征之间的关系(举个例子,你喜欢Brad Pitt 和Tom Cruise的电影,但是不喜欢他们一起出演的电影