机器学习:如何选择一个合适的算法

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

翻译自Andreas Merentitis
的回答:How does one choose which algorithm is best suitable for the dataset at hand?

简单总结如下,
选择算法需要考虑的八个点:
1.数据分布(是否是独立同分布)
2.数据量
3.特征数量
4.可解释性
5.异常值
6.计算量
7.是否设计特征
8.应用场景

分一下类:

数据

数据分布,数据量,异常值

特征

特征数量,是否设计特征,

模型

计算量,可解释性

应用场景

posted @ 2020-01-13 09:34  技术研究与问题解决  阅读(325)  评论(0编辑  收藏  举报