zoukankan      html  css  js  c++  java
  • 机器学习:如何选择一个合适的算法

    这个问题你为什么要选择这个模型,而不是另一个?
    初学者常常很少考虑到这个问题,习惯于拿起模型就用,而忘了这个模型是否适合给定的问题和数据。
    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.应用场景

    分一下类:

    数据

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

    特征

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

    模型

    计算量,可解释性
    

    应用场景

  • 相关阅读:
    关于web测试收集
    Webdriver初探
    Java学习笔记 11/15:一个简单的JAVA例子
    持续集成环境搭建总结
    启动速度
    excel中用到的函数
    jmerter使用
    接口测试
    内存泄漏场景
    手机连接电脑那些事
  • 原文地址:https://www.cnblogs.com/liuys635/p/12185758.html
Copyright © 2011-2022 走看看