机器学习:如何选择一个合适的算法
这个问题你为什么要选择这个模型,而不是另一个? 初学者常常很少考虑到这个问题,习惯于拿起模型就用,而忘了这个模型是否适合给定的问题和数据。 1、数据是怎样生成的?可以被看作是独立同分布吗?如果是,大多数方法都可以用,如果不是,需要考虑适用于非独立同分布的算法,比如隐马尔科夫模型。 2、有多少训练数据?越复杂的模型需要越多的训练数据。 3、有多少特征?最大似然方法在特征比较多的情况下通常不会表现的很好。 4、模型的可解释性有多重要?一些方法比如决策树的可解释性很好,但是准确率可能没那么高(它们受大方差的影响)。相比之下,随机森林的准确率更高一些但是可解释性要差一些。 5、有多少异常值?一些模型对异常值会更鲁棒。 6、计算复杂度有多大(也与数据和特征的数量有关)?比如非线性SVM的计算量是数据量的三次方,如果数据有几十万,计算量会是一个问题。 7、你有设计好的必杀特征或者你想让模型去学习它们?如果是后者,神经网络模型会让你感兴趣(但是计算量会很大)。 8、特定的应用场景:你的模型符合对当前问题的假设吗?比如SVM的各种核具有旋转不变性等特点,这对于给定的应用可能是重要的。具有这种能力的模型可能会表现的更好(深度学习会试图去发现这种关系但是需要大量的数据)。 翻译自 Andreas Merentitis 的回答: How does one choose which algorithm